| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GetPrimitiveArrayCritical(..)
The 'carray' pointer returned from GetPrimitiveArrayCritical(..) was moved about the array offset
and used in ReleasePrimitiveArrayCritical(..) to release the pinpointed memory.
Even though this 'is' a bug by violating the _sparse_ specification, Hotspot impl. doesn't use the value at all (NOP)
and hence this code didn't produce an error since .. (Same w/ Dalvik).
Now the array offset is added while passing the carray pointer to the native function call
and hence is no more modified and the orig. value is passed to ReleasePrimitiveArrayCritical(..).
Tested w/ GlueGen unit tests and all JOGL unit tests (on Linux x64 w/ 'a' hotspot VM).
|
|
|
|
| |
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
|
|
| |
PointerBuffer, since referenced memory-size is arch dependent
Added extensive PointerBuffer unit tests w/ new mapping in generated test class.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Semantics Change:
ExtendedInterfaceSymbolsOnly was used for implementation generation only,
which is considered a bug!
- ExtendedInterfaceSymbolsIgnore C.java
- Ignore symbols in C.java for interface generation
- ExtendedInterfaceSymbolsOnly C.java
- Only use symbols in C.java for interface generation
- ExtendedImplementationSymbolsIgnore C.java
- Ignore symbols in C.java for implementation generation
- ExtendedImplementationSymbolsOnly C.java
- Only use symbols in C.java for implementation generation
- ExtendedIntfAndImplSymbolsIgnore C.java
- Ignore symbols in C.java for interface and implementation generation
- ExtendedIntfAndImplSymbolsOnly C.java
- Only use symbols in C.java for interface and implementation generation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
d7fb6a7bcfbd2d5ac452abdcdd31fb4d71441c70"
This reverts commit 73e8828566404e864170688dfb4fd530a83f8add.
Convinced after discussing semantics w/ Harvey Harrison:
"the copy-constructor is way for predictable (as in branch-predictable)
and has better cache behavior, it can issue almost all the writes in
parallel, and has no exception catching.
So, the copy-constructor actually ends up being more efficient, and
you get typechecking to boot."
|
|
|
|
|
|
| |
d7fb6a7bcfbd2d5ac452abdcdd31fb4d71441c70
clone of ArrayList is more shallow than it's clone operation (?)
|
|
|
|
|
|
|
|
| |
ignores and unimplemented are both Set<Pattern>, they cannot contain a String,
immediately after these 'fast paths' we loop over the patterns calling .matches()
which makes sense, so remove the misleading tests.
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
|
|
|
| |
- Use the copy constructor rather than ArrayList.clone()
- constrain listsEqual so the compiler will warn about comparing lists of different types
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
| |
are ambiguous - better use default generic ones to avoid confusion.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
- instanceof includes null checking
- simplify comparison of name, either they are the same object (possibly null)
or they compare equal as strings
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
|
|
|
|
|
| |
As a last resort we can just return the boolean value directly here, also no
need to try/catch as valueOf does not throw any exceptions.
Pointed out by Findbugs.
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
| |
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
|
|
| |
- move the cheap integer compares earlier before the String comparisons
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
|
|
|
| |
name was being compared to itself, rather than the name of the type we are comparing,
looks like a simple typo.
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
| |
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
|
|
|
|
| |
- remove an unused import
- annotate includesList with type information
- small code cleanup now that the type information is present
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
| |
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ARMv7hf -> ARMv6hf, ARMv7-soft -> ARMv5te/ARMV6 (soft)
platform build config files:
lib/gluegen-cpptasks-linux-armv7.xml -> lib/gluegen-cpptasks-linux-armv6.xml
lib/gluegen-cpptasks-linux-armv7hf.xml -> lib/gluegen-cpptasks-linux-armv6hf.xml
properties:
isLinuxARMv7 -> isLinuxARMv6
isLinuxARMv7Armel -> isLinuxARMv6Armel
isLinuxARMv7Armhf -> isLinuxARMv6Armhf
isAndroidARMv7 -> isAndroidARMv6
isAndroidARMv7Armel -> isAndroidARMv6Armel
isAndroidARMv7Armhf -> isAndroidARMv6Armhf
targets:
compiler.cfg.linux.armv7 -> compiler.cfg.linux.armv6
linker.cfg.linux.armv7 -> linker.cfg.linux.armv6
compiler.cfg.linux.armv6:
<compilerarg value="-fpic" />
<compilerarg value="-march=armv5te" />
<compilerarg value="-marm" />
<compilerarg value="-mfloat-abi=softfp" />
<linkerarg value="-fpic" />
<linkerarg value="-march=armv5te" />
<linkerarg value="-marm" />
<linkerarg value="-mfloat-abi=softfp" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
compiler.cfg.linux.armv6hf:
<compilerarg value="-fpic" />
<compilerarg value="-march=armv6" />
<compilerarg value="-marm" />
<compilerarg value="-mfloat-abi=hard" />
<linkerarg value="-fpic" />
<linkerarg value="-march=armv6" />
<linkerarg value="-marm" />
<linkerarg value="-mfloat-abi=hard" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
gluegen-cpptasks-android-armv6.xml:
<compilerarg value="-fpic" />
<compilerarg value="-march=armv6" />
<compilerarg value="-mfloat-abi=softfp" />
<compilerarg value="-marm" />
<linkerarg value="-march=armv6" />
<linkerarg value="-mfloat-abi=softfp" />
<linkerarg value="-marm" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix 'NIOOnly' impl
- Use 'final' in gen. Java stubs ;
- No null check for Buffers.isDirect(arrayArg) [required]
- Clarify Buffer arg API doc (NIOOnly or NIODirectOnly)
- cleaned up loop / branch (CMethodBindingEmitter)
- remove unsued vars/code
- Tests:
- covers normal/NIOOnly/NIODirectOnly
- covers passing null for array and NIO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PropertyAccess: Fix security code, grant access to common 'trusted' properties
- SecurityUtil
- Generalize cert validation for JAR and property access
- Grant access to common AccessControlContext for 'same' cert
- PropertyAccess:
- Fix security code: Passing the current AccessControlContext from the caller
didn't include priviledges.
- Grant access to common 'trusted' properties,
which removes the need of passing the AccessControlContext for general properties
like 'jnlp.', 'jogamp.' ..
- Enable registering 'trusted' properties, when caller's cert is 'same'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Platform, IOUtil, ..
- Intro.: PropertyAccess
- Base class of all Debug impl, reduces redundancies.
- jnlpAlias'ed trusted property is queried within local AccessControlContext
to avoid 'JRE' implementation differences (should not be required).
- throw NPE and IllegalArgumentException for invalid property key
- Added safe PropertyAccess
- JNILibLoaderBase: sun.jnlp.applet.launcher
- Platform: jogamp.gluegen.UseTempJarCache
- IOUtil: java.io.tmpdir
|
|
|
|
| |
allows an enhanced comments of signature (GLEmitter)
|
|
|
|
| |
override a rename instruction w/ diff new value
|
|
|
|
| |
JavaConfiguration.DEBUG_RENAMES
|
|
|
|
|
|
|
|
|
| |
conversion, ie. 32/64 bits)
An opaque type still needs to be converted to the right size (32/64 bit).
In case of a conversion, respect the pointer type.
This fixes bug 536 .
|
| |
|
|
|
|
| |
0bafac07b61f10c1a24e8c052937607bbfcb39ec
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
const, ie no write-back
We shall consider the C header declaration as being correct
and no modification shall happen on const arrays.
Tested w/ unit tests and JOGL
+++
Cleanup JavaType: final immutable fields, proper CVoidPointer name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TempJarCache.bootstrapNativeLib(..) usage
- Moving to Platform solves former interdependencies between GlueGenJNILibLoader/Platform
- TempJarCache is being setup w/ bootstraping the gluegen-rt native lib jar file.
Interesting here is that when using Oracle's JRE w/ Applets/JNLP the
current dbg output is:
gluegen-rt: url-root http://risa/deployment/test/jau02s/jar/
gluegen-rt: nativeJarURL jar:http://risa/deployment/test/jau02s/jar/gluegen-rt-natives-linux-amd64.jar!/
gluegen-rt: nativeJar /home/sven/.java/deployment/cache/6.0/49/3c6d1e31-2c90f42e
IE the JRE implementation already deduces the online link to the Applet/JNLP cache.
This makes the implementation much simpler, ie. same for application and Applets/JNLP.
Have to verify w/ other Java impl. sure - and add same logic for the JOGL part.
|
|
|
|
|
|
|
|
| |
gluegen-rt native lib as well
- removed redundance
- move proper JNLPAppletLauncher custom libloader code into JNILibLoaderBase
- prepares for new JAR temp cache ..
|
| |
|
|
|
|
| |
setting it's magic property. Subsequent Applets may not use JNLPAppletLauncher, but property is still set.
|
|
|
|
| |
integer opaque in struct
|
|
|
|
|
|
|
| |
Reversed Type relocation (commit 92d6c9dc5fa72b01703456452c60822f36c14fff)
from com.jogamp.gluegen.runtime.types back to com.jogamp.gluegen.cgram.types
Enabled MemoryLayoutType.setLayouted(), avoiding double layout
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fin
MachineDesction == MD
MD.StaticConfig:
- enum for all supported static configs (ID -> MD)
- verified at runtime: test runtime queried-MD versus static-MD,
hard fail if not compatible (size/alignment)
SizeThunk primitive sizes:
- Add notion of fixed native size (eg. int64_t) and otherwise (eg. long)
java struct 'wrappers' code generation:
- single class using size/offset arrays of all MachineDescription configurations
- at runtime the array idx is queried in static block
- type aligment for not fixed-native-size types (SizeThunk, undef long/int) via StructAccessor
junit test:
- add float test
- fix native code
- add java (create, write) -> native (verify) test
works (tested) on: linux 32/64 and windows 32/64
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
typedef struct {
int8_t bits1; // +1 - 0
// +3 (p32)
int32_t id; // +4 - 4
int8_t bits2; // +1 - 8
// +3 (p32) -
int64_t long0; // +8 - 12
"longBuffer.get(<type-sized index>)" is invalid,
but "byteBuffer.getLong(<byte index>)" must be done.
The actual impl. doesn't matter, hence dropping the other nio type mappings is good.
FIXES 32bit unit test, works well (static) on 32/64 bit (unix).
TODO: Respect diff alignment for OS/ARCH either by offset tables for all, or runtime computing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Platform:
- enum CPUFamily is part of CPUType
- DALVIK -> ANDROID
- ARM: ARM + ARMv[567]
MachineDescription
- self contained
- static size/alignment Config (enum) for unix32, unix64, win32, win64 and armeabi
- add 'long double'
- Removed MachineDescription32Bit, MachineDescription64Bit
- createStatic(..) uses OS/CPU to fetch best match if not at runtime
FIXES: JavaEmitter's struct-emit: Proper 32/64 struct sizes
TODO: StructAccessor's mapping to <Type>Buffer w/ index os sizeof(<Type>)
doesn't work, since offset may not be multiple of sizeof(<Type>)!
i.e.
typedef struct {
int8_t bits1; // +1 - 0
// +3 (p32)
int32_t id; // +4 - 4
int8_t bits2; // +1 - 8
// +3 (p32) -
int64_t long0; // +8 - 12
so "longBuffer.get(<type-sized index>)" is invalid,
but "byteBuffer.getLong(<byte index>)" must be done.
The actual impl. doesn't matter, hence dropping the other nio type mappings is good.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
com.jogamp.gluegen.cgram.types -> com.jogamp.gluegen.runtime.types
This is required for desired runtime memory layout.
- Split CompoundType to StructType + UnionType
- StructLayout:
- Utilizing SizeThunk alignment
- Alignment
1) Natural type alignment
2) Add Size
3) Trailing padding w/ largest element alignment
- Only perform memory layout once for type.
Status:
- Unit test passes w/ static MachineDescriptor64Bit
- FIXME static 32bit is faulty, uses 64bit size/alignment
- TODO runtime struct layout to please all platforms w/o worrying
|
|
|
|
|
|
|
|
|
|
| |
- SizeThunk
- rename: compute -> computeSize
- add: computeAlignment
- merge types: char -> int8, short -> int16
- 'int' and 'long' may differ
-
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Preparation.
Currently GlueGen fails for type long (size) and some alignments (see package.html).
- The size and alignment values shall be queried at runtime.
- Compound alignment needs to follow the described natural alignment (also @runtime).
-
- Build
- add Linux Arm7 (EABI)
- junit test
- added compound/struct tests, pointing out the shortcomings of current impl.
- package.html
- Added alignment documentation
- remove intptr.cfg
- add GluGen types int8_t, int16_t, uint8_t, uint16_t
- move MachineDescription* into runtime
- Platform
- has runtime MachineDescription
- moved size, .. to MachineDescription
- use enums for OSType, CPUArch and CPUType defined by os.name/os.arch,
triggering exception if os/arch is not supported.
This avoids Java String comparison and conscious os/arch detection.
- MachineDescription:
- compile time instances MachineDescription32Bits, MachineDescription64Bits
- runtime queried instance MachineDescriptionRuntime
- correct size, alignment, page size, ..
|
|
|
|
| |
separated by comma (enhancement)
|