summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Bug 1126 - Remove static query requirement of MachineDescriptor, find ↵Sven Gothel2015-02-0231-382/+515
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | matching StaticConfig at runtime; Fix PPC (Bug 1056) and MIPSLE (Bug 1014) issues. Currently the StaticConfig is being queried via the key[OSType, CPUType ..] as pre-determined by Java properties or the ELF parser. This adds complication to maintain different platforms and the key query might not even be sufficient. The MachineDescriptor's StaticConfig only purpose shall be to speed-up native data size and offset/alignment retrieval. This is done by using the StaticConfig index within all StaticConfig[]s as a lookup-index for the precomputed struct's size and offset tables. +++ Solution: Rename: MachineDescriptor -> MachineDataInfo Rename: MachineDescriptorRuntime -> MachineDataInfoRuntime After having defined os.and.arch (OSType, CPUType and ABIType) w/ the optional help of the now self containing ELF Reader (Bug 1125), the native gluegen-rt library gets loaded enabling JNI methods. It is satisfactory to retrieve MachineDataInfo at runtime w/ JNI and find the matching/compatible StaticConfig. Only in case none is found, the program needs to abort. Otherwise the found MachineDataInfo.StaticConfig and MachineDataInfo are stored for further use (see above). This removes above complication and key to StaticConfig mapping. New platforms simply need to add a new unique entry into the StaticConfig[] table. ++ Also fixes Bug 1056 (PPC), thanks to tmancill [@] debian [.] org, and Bug 1014 (MIPSLE), thanks to Dejan Latinovic. Parts of the patch for Bug 1014 from Dejan Latinovic are included. also solved by this change set.
* Minor Cleanup: Buffers: Remove !JAVA_6 branch; NativeLibrary: Reuse isOSX ↵Sven Gothel2015-02-012-43/+21
| | | | detection
* Bug 1125 - Make ELF Reader 'jogamp.common.os.elf' StatelessSven Gothel2015-02-0123-1011/+1486
| | | | | | | | | | | | | | | | | | | | | | | | | ELF Reader 'jogamp.common.os.elf' currently uses Platform's pre-determined OS_TYPE and CPUType. It also uses the host platforms MachineDescription, hence can not read ELF files from other machines. This also forbids Platform to determine CPUType etc w/o having a valid 'os.arch' property. +++ ElfHeader should be split in - ElfHeaderPart1 (CPUType independent) - ElfHeaderPart2 (CPUType dependent) Fix shall make the ELF Reader self containing by only using ELF CPUType data, etc. This requires customization of struct parsing, where MachineDescription.Static index shall be - defined in ElfHeaderPart1 using e_Ident's CPUType. - used in ElfHeaderPart2 and all its struct types.
* Bug 1122: Refine AArch64 and OSType/32Bit incl. MachineDescriptionSven Gothel2015-01-307-100/+64
| | | | | | | | | | | | Android: - Detect ABIType.EABI_GNU_ARMHF via 'armeabi-v7a-hard' Platform.CPUType: - contains is32Bit now MachineDescription: - Rename *x86_64_unix* -> *lp64_unix*, reflecting universal __LP64__ mode - Remove is32Bit, which is determined by CPUType
* Refine Native Library Code: Bulk Permissions, Cleanup DynamicLinker impl. - ↵Sven Gothel2015-01-3012-172/+402
| | | | | | | | | | | | | | | and fix Android AArch64 BionicDynamicLinker (Bug 1122) - Bulk Permissions ProcAddressTable.reset(..) performs address lookup in one block. Now claiming all permissions upfront once, and releasing them afterwards. - Cleanup DynamicLinker impl. Proper top-down impl. of DynamicLinkerImpl, handling all security code and validations. - Fix Android AArch64 BionicDynamicLinker (Bug 1122) Dalvik uses diff RTLD_* defines for AArch64!
* Bug 1122: Reflect __LP64__ and _aarch64__ in GlueGen's stdint/stddef and ↵Sven Gothel2015-01-307-26/+80
| | | | Android compilerflags
* GlueGen: Cleanup static generated JNI code (fix method names)Sven Gothel2015-01-303-36/+55
| | | | | Symbol could not be found w/ Android: UnixDynamicLinkerImpl_JNI.c::Java_jogamp_common_os_UnixDynamicLinkerImpl_dlerror
* Bug 1122: Add AArch64 support (Android, GNU/Linux and in general)Sven Gothel2015-01-3010-78/+344
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add AArch64 detection via - Elf Parser - Android properties - Java properties - Android: Validate CPUType.Family _and_ ABIType - MachineDescription - Remove redundant Type ID and its field - Reuse X86_64_UNIX for AArch64 (static config) New ARCH 'aarch64' for ant: <os arch> armv8a aarch64 New CPUType.ARM64 (ARM): java: os.arch aarch64 arm64 New CPUType.ARMv8_A (ARM): java: os.arch armv8-a arm64-v8a New ABIType: EABI_AARCH64
* Bug 1122 - Elf Parser: EM_res183 -> EM_AARCH64, detecting AArch64; Updating ↵Sven Gothel2015-01-303-68/+182
| | | | Shdr and Ehdr via GlueGen
* GlueGen: Make const array-length getter static, if constant.Sven Gothel2015-01-301-18/+26
|
* Bug 1122 - Add Android API 21 jar file and source zipSven Gothel2015-01-305-0/+213
|
* Bug 1123 - Android Launcher/ClassLoaderUtil: Fails to work w/ Android 5.* ↵Sven Gothel2015-01-281-0/+48
| | | | | | | | | | | | | | | | (lollipop/art) Our Android ClassLoaderUtil, used to daisy chain dex ClassLoader using GlueGen, Joal and Jogl APK files, doesn't work on Android 5.* (lollipop) with the art runtime. See below adb log. Seems like this is a known issue https://code.google.com/p/android/issues/detail?id=82122 Workaround mentioned is to copy the APK file(s) to a temp directory ..
* Bug 1124 - Android Build: Use SDK >= 24.0.2 (build-tools >= 21.1.2) and NDK ↵Sven Gothel2015-01-284-105/+94
| | | | | | | >= 10d Adjust build scripts and GlueGen Android tasks for SDK >= 24.0.2 (build-tools >= 21.1.2) and NDK >= 10d
* ExceptionUtils.dumpThrowable(..): Also dump all causes of the given ThrowableSven Gothel2015-01-231-0/+9
|
* ProcAddressConfiguration: Allow setting default value for ↵Sven Gothel2014-12-181-1/+4
| | | | 'GetProcAddressTableExpr'
* Bug 1108 - Fix difficulties to determine executable access permission on ↵Sven Gothel2014-12-138-21/+1020
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Windows via BATCH file execution Batch file execution test via direct call, i.e.'a.bat', does not work on some Windows machine, not reproducible here! A workaround would be to call the batch file explicit via 'CMD /c a.bat': - works when using 'Software Restriction Policies' (Bug 1015 Comment 2) - does _not_ work when denying ACL "Traverse Folder / Execute File" permission (Bug 1015 Comment 3) Due to this bug, we need to use a native execution: - Performing executable test w/ native exe file instead of batch file on Windows x86 32bit and 64bit, - using [1] TinyPE XP-W8 Compatible - x86 32bit and 64bit - 268 bytes - Tested on: WinXP-32bit, Win7-64bit and Win8-64bit - Author/License: Ange Albertini, BSD Licence, 2010-2013 - On all other Windows machines (ARM, ..), we still use direct execution of 'a.bat' but may add native exe files for missing platforms. +++ This patch injects said binaries within the java jar file and copies it into the 'to be tested' temp folder for execution. [1] TinyPE XP-W8 Compatible - x86 32bit and 64bit - 268 bytes is included within 'src/native/tinype-corkami', build manually and imported as 'src/java/com/jogamp/common/util/bin/exe-windows-i586-268b.bin'. +++
* TempFileCache/TempJarCache: Fix NPE in DEBUG modeSven Gothel2014-12-122-2/+7
|
* test scripts: Bump JRE, add TEMP/TMP settingsSven Gothel2014-12-128-22/+36
|
* GlueGen JavaEmitter: Use proper class access modifiers for emitted classes ↵Sven Gothel2014-12-113-20/+32
| | | | | | | incl. ProcAddressTable Emitted Java classes as well as optional ProcAddressTable shall use unique generated access modifiers covering all MethodAccess cases.
* Bug 1108 - IOUtil.getTempDir(..): Difficulties to determine executable ↵Sven Gothel2014-12-114-13/+19
| | | | | | | | | | | | access permission on Windows via BATCH file execution Try using explicit call to Windows 'cmd.exe' w/ referencing the BATCH file location, via 'Runtime.getRuntime().exec(new String[] { "cmd", "/c", "a.bat" } );' While the bug itself could not be reproduced here, I could test on Windows 7 (64bit and 32bit), as well as an WindowsXP 32bit that no regression occured.
* Bug 1106 - Bitstream: Simplify 'msbFirst' case for bulk operations / Add ↵Sven Gothel2014-12-037-327/+595
| | | | | | | | | | | | | | | | | | | | | | | setting of stream position (optional) - Add setting position entry, optionally supported, e.g. ByteBufferStream and ByteArrayStream - Remove 'msbFirst' parameter on all 'bulk' read/write operations. These methods use LSB-first always, allowing proper stream access of data w/ different bit-sizes. Data is now read/write as little-endian and swapped accordingly. Optimizations are adopted for LSB-first operations. This change removes API confusion/bugs: - removes one decision (parameter) - removes the data reversion case - removes bugs w/ different bit-sizes
* ExceptionUtils.dumpStack(..): Skip self stack entrySven Gothel2014-12-031-1/+1
|
* Refine ExceptionUtils: Shorten method name, dumpThrowable uses dumpStackSven Gothel2014-10-263-10/+21
|
* Add ExceptionUtils: Exposing dumpStackTrace(..) and dumpThrowable(..)Sven Gothel2014-10-081-0/+60
|
* SingletonJunitCase: Increase TO 12 -> 15 mins, only sleep for 1 poll period ↵Sven Gothel2014-10-042-6/+3
| | | | (500 ms) per JVM after test class (cooperative w/ other JVM test instances)
* SingletonJunitCase: Refine poll and release behaviorSven Gothel2014-10-031-1/+5
| | | | | | - Increase poll frequency from every 1000 ms -> 500 ms - After releasing the lock, sleep to 6 x poll period, i.e. 3s
* SingletonTestCase -> SingletonJunitCase: Accomodate ClassLoader lifecycle of ↵Sven Gothel2014-10-0347-139/+124
| | | | static fields; Change name to avoid testing itself.
* SingletonTestCase: SINGLE_INSTANCE_LOCK_TO (timeout) 6 -> 12 minutesSven Gothel2014-10-031-2/+2
|
* gitignore: build*/ and build-tempSven Gothel2014-10-031-0/+2
|
* SingletonTestCase: Move singleton test impl. from JOGL's UITestCase, inherit ↵Sven Gothel2014-10-0345-92/+179
| | | | | | | | | from JunitTracer and use it for all tests. - Certain performance tests don't make sense utilizing several jenkins unit tests on one machine, hence singleton test execution is desired. - JOGL's UITestCase also will derive from this SingletonTestCase
* MappedByteBufferInputStream: Default CacheMode is FLUSH_PRE_HARD now (was ↵Sven Gothel2014-10-031-7/+7
| | | | | | | | | | | FLUSH_PRE_SOFT) FLUSH_PRE_SOFT cannot be handled by some platforms, e.g. Windows 32bit. FLUSH_PRE_HARD is the most reliable caching mode and it will fallback to FLUSH_PRE_SOFT if no method for 'cleaner' exists. Further, FLUSH_PRE_HARD turns our to be the fastest mode as well.
* TestByteBufferInputStream: Reduce FLUSH_SOFT loadSven Gothel2014-10-031-6/+6
|
* TestByteBufferCopyStream, TestByteBufferInputStream: Reduce load and test timeSven Gothel2014-10-032-22/+25
|
* Make Scripts OSX: Remove -java7 script, add -java6 script (default uses java8)Sven Gothel2014-10-032-4/+14
|
* MappedByteBuffer*Stream:Sven Gothel2014-10-037-257/+521
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Validate active and GC'ed mapped-buffer count in cleanAllSlices() via close() .. - Fix missing unmapping last buffer in notifyLengthChangeImpl(), branch criteria was off by one. - cleanSlice(..) now also issues cleanBuffer(..) on the GC'ed entry, hence if WeakReference is still alive, enforce it's release. - cleanBuffer(..) reverts FLUSH_PRE_HARD -> FLUSH_PRE_SOFT in case of an error. - flush() -> flush(boolean metaData) to expose FileChannel.force(metaData). - Add synchronous mode, flushing/syncing the mapped buffers when in READ_WRITE mapping mode and issue FileChannel.force() if not READ_ONLY. Above is implemented via flush()/flushImpl(..) for buffers and FileChannel, as well as in syncSlice(..) for buffers only. flush*()/syncSlice() is covered by: - setLength() - notifyLengthChange*(..) - nextSlice() Always issue flushImpl() in close(). - Windows: Clean all buffers in setLength(), otherwise Windows will report: - Windows: Catch MappedByteBuffer.force() IOException - Optimization of position(..) position(..) is now standalone to allow issuing flushSlice(..) before gathering the new mapped buffer. This shall avoid one extra cache miss. Hence rename positionImpl(..) -> position2(..). - All MappedByteBufferOutputStream.write(..) methods issue syncSlice(..) on the last written current slice to ensure new 'synchronous' mode is honored. +++ Unit tests: - Ensure test files are being deleted - TestByteBufferCopyStream: Reduced test file size to more sensible values. -
* Bug 1080 - Refine MappedByteBuffer*Stream impl. and API [doc], adding stream ↵Sven Gothel2014-09-297-93/+514
| | | | to stream copy as well as direct memory mapped ByteBuffer access
* Bug 1080 - Add write support for memory mapped big file I/O via specialized ↵Sven Gothel2014-09-267-94/+747
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OutputStream impl. Added MappedByteBufferOutputStream as a child instance of MappedByteBufferInputStream, since the latter already manages the file's mapped buffer slices. Current design is: - MappedByteBufferInputStream (parent) - MappedByteBufferOutputStream this is due to InputStream and OutputStream not being interfaces, but most functionality is provided in one class. We could redesign both as follows: - MappedByteBufferIOStream (parent) - MappedByteBufferInputStream - MappedByteBufferOutputStream This might visualize things better .. dunno whether its worth the extra redirection. +++ MappedByteBufferInputStream: - Adding [file] resize support via custom FileResizeOp - All construction happens via ctors - Handle refCount, incr. by ctor and getOutputStream(..), decr by close - Check whether stream is closed already -> IOException - Simplify / Reuse code MappedByteBufferOutputStream: - Adding simple write operations
* Bug 1080 - Fix TestByteBufferInputStream: Handle OutOfMemoryError cause in ↵Sven Gothel2014-09-262-26/+50
| | | | IOException (Add note to FLUSH_NONE); Reduce test load / duration.
* Adapt unit tests to commit 1350823035597f784f9cf871aa487f896f3d1840: ↵Sven Gothel2014-09-262-0/+22
| | | | getTempDir(..) throws IOException
* Bug 1080 - Add read support for memory mapped big file I/O via specialized ↵Sven Gothel2014-09-254-2/+1008
| | | | | | | | | | | | | | | InputStream impl., incl. mark/reset - ByteBufferInputStream simply impl. InputStream for an arbitrary 2MiB restricted ByteBuffer - Users may only need a smaller implementation for 'smaller' file sizes or for streaming a [native] ByteBuffer. - MappedByteBufferInputStream impl. InputStream for any file size, while slicing the total size to memory mapped buffers via the given FileChannel. The latter are mapped lazily and diff. flush/cache methods are supported to ease virtual memory usage. - TestByteBufferInputStream: Basic unit test for basic functionality and perf. stats.
* IOUtil: Fix API doc; getTempDir(..) shall throw IOException instead of ↵Sven Gothel2014-09-251-6/+31
| | | | | | | | | | RuntimeException for IO failures - Fix API doc - copy*() methods only close stream they open, no need to mention the proper behavior (obvious). - getTempDir(..) shall throw IOException instead of RuntimeException for IO failures - Ease using getTempDir(..), i.e. only handle IOException
* Bump semver to 0.9.30-SNAPSHOT of jogamp branch, incl. commit ↵Sven Gothel2014-09-244-8/+24
| | | | | | | 9cdb6bbf6d3248a65aa78ced08211d609c356f91 commit 9cdb6bbf6d3248a65aa78ced08211d609c356f91 fixes the tests of the Class, Field and Method accessor bit for compatibility.
* Bug 1067 - IOUtil.testDirExec(File) needs to preserve SPACE in ↵Sven Gothel2014-09-141-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | exetst.getCanonicalPath() command Having a test-executable file with SPACE in it's temporary path, e.g. Unix: /magic temp/user/ Windows XP: C:\Documents and Settings\user\temp results to split up commands if using 'Process.exec(String)', since it utilizes a StringTokenizer to assemble the command String[]. This patch uses 'Process.exec(String[])' avoiding splitting up SPACE in the full command string/path. Major impact is on 'Windows XP', where a SPACE separated TEMP/TMP folder is the default. Note-1: Commit 9bc3d3f78bb2fb1aa0ccfb02ffb5bdda74420cac introduced testing executable permission on Windows (Bug 1015) and rendered this issue visible. To reproduce the issue on Windows: +++ set TEMP=C:\Documents and Settings\jogamp\temp set TMP=C:\Documents and Settings\jogamp\temp "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" +++ Note-2: This bug affects all platforms!
* Bug 1063: Uri: Refine API doc; Add create(Encoded ..) ; Provide common impl. ↵Sven Gothel2014-09-105-185/+633
| | | | | | | | | | | | | | | | | | | | for getNormalized(), getDirectory(), getParent() and getRelativeOf() - Refine API doc - Add notion of {@code host} and {@code port} validation - Add create(Encoded ..), allowing creation of variants w/o re-encoding - Provide common impl. for getNormalized(), getDirectory(), getParent() and getRelativeOf() Above feature methods share common goals, hence use same implementation: - If opaque, cut-off query and merge after operation - cleanup path, i.e. /dummy/../test/ -> /test/ - cutoff file, dir - if requested - append optional appendix and cleanup again Return behavior various thought, i.e. null, this or allow exception. Enhanced test of above features.
* Bug 1063: Further Uri completion - As a result of JOGL Uri adoptionSven Gothel2014-09-085-67/+63
|
* Bump 2.3.0Sven Gothel2014-09-081-4/+4
|
* Merge branch 'v2.3.0_branch'Sven Gothel2014-09-0826-1146/+3468
|\
| * Bug 1063: Complete Uri impl. and adoption throughout GlueGenSven Gothel2014-09-0819-881/+926
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Uri: - Add error correction (fix) of path at ctor in case a a contained Uri is requested from an opaque one. The latter might come from URI/URL and is not properly encoded! See Uri.PARSE_HINT_FIX_PATH - Simplify conversion methods: - valueOf(URI/URL): Re-encode only if not opaque - getNativeFilePath() -> toFile() - Move IOUtil Uri related constants to class Uri - Add DEBUG and DEBUG_SHOWFIX - Complete adoption of URI -> Uri changes - IOUtil, JarUtil and TempJarCache still holds some left over deprecated methods, which will be removed after officially starting 2.3.0 (JOGL dependencies) - Otherwise not URI utilization left - Tests - Cleaned ip TestUri01 and TestUri03Resolving - TestUri03Resolving also tests URL -> Uri, and hence mentioned Uri.PARSE_HINT_FIX_PATH
| * Bug 1063 - Refine Uri and Uri.Encode ; Fix unit tests (passing on GNU/Linux, ↵Sven Gothel2014-09-075-82/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | OSX and Windows) - Refine Uri - remove System.err.print* - scheme is of type Encode - Refine Uri.Encode - substring(..) shall return type Encode - Fix unit tests (passing on GNU/Linux, OSX and Windows)
| * Bug 1063 - Uri.PATH_LEGAL: Remove reserved 'punct', encoding all reserved ↵Sven Gothel2014-09-073-51/+33
| | | | | | | | chars but '!', allows removal of PATH_MIN_LEGAL ; Add comment for Harmony values for review