| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Win32 clock_gettime() implementation.
Consider return code on failed native clock_gettime(..) call
- Return Instant.EPOCH for all Instant variations (essentially 0)
- Return 0 for all 'long' variations (ms, ns)
Add Win32 clock_gettime() implementation.
- Source: https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-libraries/winpthreads/src/clock.c
- Public Domain within mingw-w64, included here to simplify linkage.
- Tested on Win10 64bit w/ TestTextRendererNEWT00, all values are OK
|
|
|
|
| |
duration since module startup and not time.
|
|
|
|
|
|
|
|
|
|
|
| |
startup, retrievable via getMonotonicStartupTime(). (performance)
Settings two long fields in getMonotonicTime() and creating Instant and using Duration
for high-frequency counter is too expensive.
currentTimeNanos() subtracts the startup time from the current monotonic time and returns the
resulting duration in nanoseconds, which lasts for 292 years since module startup.
This satisfies performance counter requirements.
|
| |
|
|
|
|
|
|
|
|
|
| |
(sec + nsec), currentTimeMillis() is also monotonic now, reused by Platform. Dropped Platform.currentTimeMicros()
Clock and its implementation was copied from jaulibs, a spin-off from Direct-BT.
The implementation uses `clock_gettime(CLOCK_MONOTONIC, &t)` and is considered safe and high-performant
as it avoids a kernel call via VDSO (GNU/Linux).
|
|
|
|
|
|
| |
flexibility/performance.
Notable: The array-put is slower than small range single-puts, e.g. put3i(..).
|
| |
|
|
|
|
| |
to 'java.library.path', others are absolute
|
|
|
|
|
|
| |
lib couldn't be loaded (avoid showing misleading orig exception)
.. and detail some debug output. Both, own exception and debug output expose NativeLibrary.getSystemEnvLibraryPaths()
|
|
|
|
|
|
| |
is being resolved as absolute-canonical as required for System.load*()
Further, detailed DEBUG messages are added on -Djogamp.debug.NativeLibrary
|
|
|
|
| |
.. content
|
| |
|
|
|
|
| |
and doPrivileged() for Java17+
|
|
|
|
|
|
|
|
| |
PlatformPropsImpl: Remove static OSXVersion and Version* vars, add JAVA_17 and JAVA_21 flag.
PlatformPropsImpl's static OSXVersion is JOGL specific and will be moved into its GLContextImpl.
PlatformPropsImpl's static Version are not required and eats up memory where it can be used transitionary.
|
| |
|
|
|
|
| |
IdentityWeakReference: hash is final.
|
|
|
|
| |
'PowerOf2' functions
|
|
|
|
| |
IdentityWeakReference static
|
|
|
|
|
|
|
|
|
|
| |
Origin <https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/util/WeakIdentityHashMap.java>
from their commit 70260919426f89825ca148f5ee815f3b2cf4764d.
Apache License Version 2.0 until.
Using our JogAmp 'New BSD 2-Clause License' for changes after this initial commit.
Related to Bug 1312, where we like to utilize a WeakIdentityHashMap,
allowing to have cached shared GLContext to disappear .. a compromise.
|
|
|
|
| |
'long double' than regular x86_32_unix
|
|
|
|
|
|
|
|
|
| |
make/lib/gluegen-cpptask-android-<abi>.xml and scripts
All aligned now
- gluegen-cpptasks-android-aarch64.xml
- gluegen-cpptasks-android-armv6.xml (this has ld flag --no-undefined disabled, due to internal missing symbols)
- gluegen-cpptasks-android-x86.xml
|
|
|
|
|
|
|
| |
back into Java
The generated JNI code JVMUtil_NewDirectByteBufferCopy(..)
calls Buffers.newDirectByteBuffer(..) and potential exceptions should be checked.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
UnsafeUtil
UnsafeUtil centralizes the workarounds (hack) of certain Java>=9
modularization encapsulation pitfalls,
where no exports have been defined. The last resort.
1) Buffers utilizes UnsafeUtil for Java>=9 invokeCleaner.
2) To gain access for certain methods + fields w/o 'illegal access warnings',
we have to temporarily disable the IllegalAccessLogger.
Hence we provide a method 'T doWithoutIllegalAccessLogger(..<T> action)'
for our essential module access under Java >= 9.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
@SupportedSourceVersion back to 11
Behold, the issue as documented at commit 2d89df89453c099d4e357aa17eae88efcf1d1b70,
one build machine failing to compile SourceVersion.RELEASE_11
was due to an incomplete installation of openjdk-11-jdk on Debian GNU/Linux. Wow.
I have re-installed the openjdk-11-jre and openjdk-11-jdk packages on said machine,
ensured they are being used .. and it works.
Another note here regarding usage of OpenJDK11 compile time environment
and Java8 target. If using Eclipse, I had to set the system runtime JDK to JDK 8.
Otherwise the 'editor clean-up' jobs would run against the JDK 11
classes and wrongly so change certain type castings etc, incompatible with Java 8.
If anybody knows a solution here .. shoot.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Document Java8 target constraints, i.e. where we need to set source, target and bootclasspath
to ensure target runtime Java8 compliance.
Fix one odd compile issue!
Using two theorethical identical GNU/Linux Debian 10 machines with same set of installed software,
one passes (like MacOS, Windows) and one fails.
The failure was due to the CStructAnnotationProcessor's @SupportedSourceVersion tag.
This downgrades the SourceVersion's previous bump from 6->11 (commit 610493b1724b5d91327f478338ff5d029bdcc032)
down to 8.
Interesting times ..
|
|
|
|
|
|
|
|
|
|
|
| |
As of Java9, sun.misc.Cleaner has moved to jdk.internal.ref.Cleaner.
However, access has been made (under the table) via sun.misc.Unsafe,
which we are using for now as we cannot set the jdk.internal.ref.Cleaner method accessible.
In this regard, we had to change our Cleaner.clean(..) method using a ByteBuffer
instead of a Buffer object paramter.
All tests have passed, no more illegal access case running on Java11 has been exposed.
|
|
|
|
|
|
|
|
|
|
| |
gluegen-rt -> gluegen_rt
- Fix finding native library for Elf parsing
- Fix one unit test
- Fix comments
Completes commit 330dad069dee5a0cc0480cf5cd9052000004223a
|
| |
|
|
|
|
|
|
|
|
|
| |
When annotations were placed on dummy Java variables, the annotation
processor was emitting a RenameJavaType directive into the gluegen
config file that caused the emitted file to be named boolean.java
instead of RenderingConfig.java or Pixel.java. Turned off this behavior
when jname is given in the @CStruct annotation. I'm uncertain how much
this processor is even used, since I can't find any occurrences of
@CStruct outside the test code for it in gluegen.
|
| |
|
| |
|
|
|
|
| |
relax closeLibrary(..)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
libgluegen-rt[.so] -> libgluegen_rt[.so|.a]
Recognize Java9+ ..
- Recognize new Java9+ version string as of JEP 223
- Avoid Classpath's private findLibrary call
+++
Support JEP 178 static linkage (OpenJDK 1.8)
- Need to change native library basename: libgluegen-rt[.so] -> libgluegen_rt[.so|.a]
since the dash '-' is not supported in a ANSI-c function name.
- Added 'JNI_OnLoad_gluegen_rt' to recognize statical linked JNI code
- Added JNI_VERSION_1_8 to jni/jni.h
|
|
|
|
|
|
|
|
|
|
|
|
| |
Current build system for JogAmp iOS Build is:
- Build Machine: OSX Mojave 10.14
- Using own (still proprietary) OpenJDK 9 iOS Build
- OpenJDK 1.8 (This will be replaced by OpenJDK 11 soon)
- Xcode 10.2
|
|
|
|
|
| |
Implementation currently uses 256 bit Secure Hash (SHA) algorithm, but this may change in the future.
Hence only use 'SHA' in the names, not 'SHA256'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
runtime validation
This change implements a strong SHA256 signature over:
1) source tree inclusive make recipe (SHA256-Source)
2) all class files (SHA256-Classes)
3) all native libraries (SHA256-Natives)
4) the class files as deployed in the jar (SHA256-Classes-this)
5) the native libraries as deployed in the jar (SHA256-Natives-this)
and drops all of these in the deployed Jar file.
This allows SHA256 validation of (4) + (5) at runtime
and further complete validation (1), (2) and (3) offline.
Full SCC would now required (1) - (3) to be placed on a server for further validation.
Optionally we may use GPG <https://gnupg.org/> or PGP to validate the build entity to implement the chain of trust <https://en.wikipedia.org/wiki/Chain_of_trust>
The SHA256 runtime validation is tested via: com.jogamp.common.util.TestVersionInfo
|
|
|
|
| |
executables
|
|
|
|
| |
for System related Operations
|
|\
| |
| | |
Use system property to detect Android
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Re-adding executable test by execution is required for 'blocker technology'
like Windows's 'Software Restriction Policies (SRP)',
which only gets activated by the actual execution attempt.
Merely testing the file's (ACL) execution flags via NIO's isExecutable is not sufficient.
Implementation first tests the file's (ACL) execution flags via NIO's isExecutable.
If the NIO test was successful or not available, the actual execution test is performed.
To mitigate the virus scanner's false positive, we use an executable shell script
per default now, which may be overriden by the new environment 'jogamp.gluegen.UseNativeExeFile=true'
Tested on GNU/Linux with one temp folder having mount options 'noexec'
and on Windows using Software Restriction Policies (SRP) disallowing one temp folder.
Both temp folder were first in line via environment 'java.io.tmpdir'.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
java.nio.file.Files.isExecutable(Path)
Attempt to resolved virus scanner false positive detection on Windows
while deflating the native code test-exe file in the temporary folder.
As Julien Gouesse suggested, using Java 1.7's java.nio.file.Files.isExecutable(Path)
_may_ resolve the issue, this has to be thorougly tested.
This patch favors the nio's isExecutable file's ACL test
over the more intrusive execution itself using a simple shell script file w/ set executable flag.
Mind that previous tests allowed the shell script's execution,
even if the temp folder did not allow execution of native code.
We have to see how our testing results will be on this attempt.
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
testing executable of temp dir
This also avoids trying to unpack the test executable on Windows,
which may cause a virus scanner to halt the process or otherwise cause issues.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
save mapped ByteBuffer memory
Also:
- fix dbgDump(..) FileChannel access, test if openend.
- add DEBUG dumps on CTOR, Close and notifyLengthChangeImpl
|
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
and 'searchSystemPathFirst' attributes
NativeLibrary can be instantiate by defining
'searchSystemPath' and 'searchSystemPathFirst' arguments,
allowing to specify the system path role while looking up the library.
Since NativeLibrary is utilized via DynamicLibraryBundleInfo upstream,
the latter interface shall allow users to specify those attributes.
|
| | |
|
| |
| |
| |
| | |
and API doc)
|