forked from eclipse-openj9/openj9
-
Notifications
You must be signed in to change notification settings - Fork 0
Address feedback 2 cassandra #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
XuechunHou
wants to merge
117
commits into
persistent_logging_implementation
Choose a base branch
from
address_feedback_2_cassandra
base: persistent_logging_implementation
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Address feedback 2 cassandra #10
XuechunHou
wants to merge
117
commits into
persistent_logging_implementation
from
address_feedback_2_cassandra
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
As part of eclipse-openj9#8830 we started using this API in several String constructors which are quite performance sensitive. Rather than relying on frequency information always being correct we simply force the inlining of this small method which will exposed the allocation of the array which we will store into the String object. Closes: eclipse-openj9#8831 Signed-off-by: Filip Jeremic <[email protected]>
This patch prints more details when things fail and makes it easier to distinguish client and server log dumps in the output. Signed-off-by: Younes Manton <[email protected]>
Signed-off-by: Younes Manton <[email protected]>
These JITServer tests are somewhat sensitive to timing because once the client finishes its work it will exit, but some tests need a long running client that keeps generating compilation activity while they start/stop/manipulate the server. This patch modifies JarTester (the app the client runs) to loop forever. JarTester loads and compiles a list of classes via short-lived classloader instances, so simply wrapping that code in a loop will allow it to keep generating compilation activity. Signed-off-by: Younes Manton <[email protected]>
These tests were disabled temporarily while a large number of failures were investigated. The suspected bug has since been fixed. Signed-off-by: Younes Manton <[email protected]>
Adds --enable-jitserver for jdk14+ Signed-off-by: Peter Shipton <[email protected]>
A final field should not be modified after initialization. The two final fields mentioned below are modified after initialization in native code so they no longer satisfy the conditions of the final keyword. Hence, the final keyword is removed for the two fields. MethodHandle.kind is set in the following native method: 1. Java_java_lang_invoke_PrimitiveHandle_lookupMethod VarHandle.modifiers is set in the following native methods: 1. Java_java_lang_invoke_FieldVarHandle_lookupField 2. Java_java_lang_invoke_FieldVarHandle_unreflectField Signed-off-by: Babneet Singh <[email protected]>
fixed namespace error retrieved method signiture a new way of retrieving method full name changed to an easier way to retrieve compiled method signature attempted to add -XX:persistentLoggingDatabasePort flag, hit segmentation fault.. added if clause for persistent logging, retrieved clientUID info fixed namespace error retrieved method signiture Attempt to add logger to openj9. make Changes and stuff Add conditionals to check for mongo and cassandra support -XX flags needed for persistent logging completed Fix an issue with my previous merge IMplement environment variable ifdef wrapper thing port initialization on different DBMS added if clause for persistent logging, retrieved clientUID info a new way of retrieving method full name changed to an easier way to retrieve compiled method signature attempted to add -XX:persistentLoggingDatabasePort flag, hit segmentation fault.. retrieved method signiture Attempt to add logger to openj9. Add conditionals to check for mongo and cassandra support -XX flags needed for persistent logging completed IMplement environment variable ifdef wrapper thing add general persistent logging support flag for checking if persistent logging is enabled regardless of dbms fix more merge conflicts I forgot Add more env variable processing Add fix that allows you to enable the cassandra logger debug TR_PersistLogging flag Bring in changes by Ida for persistentLogger spec, dynamically load mongoc library addressed code review feedback addressed code review feedback addressed code review feedback added if clause for persistent logging, retrieved clientUID info fixed namespace error retrieved method signiture a new way of retrieving method full name changed to an easier way to retrieve compiled method signature attempted to add -XX:persistentLoggingDatabasePort flag, hit segmentation fault.. added if clause for persistent logging, retrieved clientUID info fixed namespace error retrieved method signiture Attempt to add logger to openj9. make Changes and stuff Add conditionals to check for mongo and cassandra support -XX flags needed for persistent logging completed Fix an issue with my previous merge IMplement environment variable ifdef wrapper thing port initialization on different DBMS added if clause for persistent logging, retrieved clientUID info a new way of retrieving method full name changed to an easier way to retrieve compiled method signature attempted to add -XX:persistentLoggingDatabasePort flag, hit segmentation fault.. retrieved method signiture Attempt to add logger to openj9. Add conditionals to check for mongo and cassandra support -XX flags needed for persistent logging completed IMplement environment variable ifdef wrapper thing add general persistent logging support flag for checking if persistent logging is enabled regardless of dbms fix more merge conflicts I forgot Add more env variable processing Add fix that allows you to enable the cassandra logger debug TR_PersistLogging flag Bring in changes by Ida for persistentLogger spec, dynamically load mongoc library addressed code review feedback addressed code review feedback addressed code review feedback Begin conversion of mongo to c strings and reformat to code conventions re-enable flags Reformat mongologger addressed code review feedback addressed code review feedback addressed code review feedback Address Feedback. Convert to C Strings. Cleanup Mongoc Finish making c style changes Re-add client UID setter and getter in J9PersistentInfo.cpp Dynamic Load Cassandra
…ic_load_cassandra
Added new API destroyJITServer to shutdown the JITServer. Also added code to gracefully terminate the Listener thread. Signed-off-by: Ashutosh Mehra <[email protected]>
Define an isZeroInitializable method that indicates whether a class's instances have fields that can be trivially initialized by zeroing memory. For prototype support of value types, a class with a value type field that has not been inlined into the class must have that value type field of its instances initialized with the default value for the value type. The implementation of isZeroInitializable is introduced to detect that case. Signed-off-by: Henry Zongaro <[email protected]>
When low virtual memory is detected, the JIT will decrease the `scratchSpaceLimit` (i.e. maximum amount of memory a compilation thread is allowed to use) to 64 MB. This is done only if the current scratchSpaceLimit is still at the default value of 256 MB. However, a recent commit has changed the default scratchSpaceLimit under `-Xtune:virtualized` option to 30 MB. Thus, we may actually increase the scratchSpaceLimit from 30 MB to 64 MB when low virtual memory is detected. This commit adds a check that prevents the increase of the scratchSpaceLimit under low virtual memory conditions. Signed-off-by: Marius Pirvu <[email protected]>
Signed-off-by: Irwin D'Souza <[email protected]>
Constant Dynamic, Method Handle Constant, and Method Type Constant is not currently supported in AOT. Therefore, this commit throws the appropriate exception in ILGen if this condition is met. However, because all of these exceptions are a TR::RecoverableILGenException, if the compiler is generating IL for an inlined method, it will not abort the compile, but simply refuse to inline that particular method. Signed-off-by: Irwin D'Souza <[email protected]>
JITServer has been using getCodeStart() as the reference for offset calculations when dealing with the patching involved in runtime assumptions. However, this reference is dependent not only on the startPC but also on the size of preprologue. This will create problems if we use the reference before we generate the preprologue or have determined the preprologue size. We use _binaryBufferStart to remove the preprologue size depedency. Issue: eclipse-openj9#8786 Signed-off-by: Harry Yu <[email protected]>
When getIndexAt() is called, the passed-in parameter objectReferenceLocation is not necessarily the reference that’s stored in the known object table. It should not be used to pass into updateKnownObjectTableAtServer() to update the table at the server. Pass the reference object location from the client to updateKnownObjectTableAtServer() in getOrCreateIndexAt() instead of the one passed in from the caller of getOrCreateIndexAt(). Fixes eclipse-openj9#8952 Signed-off-by: Annabelle Huo <[email protected]>
z14 systems have a multiple facilities for miscellaneous-instruction-extensions (MIE). This commit looks for the presence of the MIE-2 facility and if available, sets the associated flag. Signed-off-by: Pushkar Bettadpur <[email protected]>
…ic_load_cassandra
This change adds prototype IL generation support for the value type withfield bytecode in the case where the class specified is resolved. If the class or field is unresolved, the JIT compilation is aborted with an UnsupportedValueTypeOperation exception. Signed-off-by: Yi Zhang <[email protected]>
com.ibm.oti.reflect.* is mostly unused except for the annotation parsers. Delete the unused Method/Field/ Constructor implementations and leave the annotation forwarders. Further cleanup here may be possible Signed-off-by: Dan Heidinga <[email protected]>
…ss_feedback_2_cassandra
Signed-off-by: Dan Heidinga <[email protected]>
Remove unused & obsolete reflect implemention
…rver Fix known object table update at the server
Currently the code uses _systemBytesAllocated when enforcing scratch space limit. _systemBytesAllocated represents memory allocated using J9MemorySegments which are by default 16 MB in size for scratch segments. This causes two problems: 1. It prevents allocation of new system segment when scratch space limit is not a multiple of system segment size(=16 MB), even though the actual usage (_regionBytesAllocated) + requested amount is less than scratch space limit. Eg scratch space limit is set to 30 MB, and one system segment is allocated (of 16 MB), so _systemBytesAllocated = 16 MB. Lets say current usage (i.e._regionBytesAllocated is 14 MB). If we get a request of 4 MB, then we would throw std::bad_alloc even though the usage would be well below the scratch space limit after requested memory is allocated. 2. It allows memory usage beyond scratch space limit and upto system segment size even when the limit is less than the systemt segment size. Eg if scratch space limit is set to 12 MB, it would allow still allow usage upto 16 MB. _regionBytesAllocated represents memory allocated using TR_MemorySegments which are currently 64 KB in size. Because of much lower granularity, this variable is a much better approximation for the actualy physical memory usage in scrach space segments and therefore it should be used for imposing the scratch space limit. Signed-off-by: Ashutosh Mehra <[email protected]>
- In order to support PR builds from other GitHub servers and other GH orgs a few changes were required. - Trim characters from version when reponame ends with 'jdk-*' - Accept any GH org name. - Support 'zos' as a PR shortname. - Pass all OpenJ9 and OMR variables to get_source.sh. This ensures we are getting the intended repo and branch, even if we further checkout something else afterwards. [skip ci] Signed-off-by: Adam Brousseau <[email protected]>
sysconf(_SC_LEVEL1_DCACHE_LINESIZE) returns 0 on some systems. This commit changes j9sysinfo_get_cache_info() to return 64 as the L1 data cache line size for AArch64 on such systems. Signed-off-by: KONNO Kazuhiro <[email protected]>
System.getCallerClass() might return a null caller class for a caller within a JVMTI callback function when walkStackFrames()/cInterpGetStackClassJEP176Iterator() walked off the end of the stack. Refer eclipse-openj9#8993 for more info; In such case, assume java.base for the module of such callers. Signed-off-by: Jason Feng <[email protected]>
Fix typo in function name containesZeroOrOneConcreteClass
This commit excludes testSoftMxUserScenario from AArch64. The test sets the -Xmx value based on the available memory on the test server. The AArch64 test server has 128GB memory, and that makes the test with compressed refs build fail. Signed-off-by: KONNO Kazuhiro <[email protected]>
Clean up DTFJ code
This commit adds r29-r31 to `jitCalleeSavedRegisterList` for aarch64 because `CLEAR_LOCAL_REGISTER_MAP_ENTRIES` expects `jitCalleeSavedRegisterList` to have (`J9SW_POTENTIAL_SAVED_REGISTERS` - `J9SW_JIT_CALLEE_PRESERVED_SIZE`) elements. Signed-off-by: Akira Saitoh <[email protected]>
Prevent increasing the scratchSpaceLimit on low virtual memory
AArch64: Return 64 as L1 data cache line size when info unavailable
…ents-9133 Consolidate jitdump functionality into JitDump.cpp
Enable c99 interfaces on zos
Assume java.base for the module of a null caller class
…_alloc_fix Use _regionBytesAllocated to enforce scratch space limit
This adds support for substitutability test in the acmp* bytecodes which
is needed to support value types.
Overview:
-----------
Instead of doing a reference comparison when the ifacmp* bytecodes are
executed with valueType operands, as is the case with reference type
today, valueTypes will perform a structural comparison instead
(substitutability test). This overload of the ifacmp* bytecodes is
required because valueTypes subclass java.lang.Object and use a*
bytecodes. It is possible for the static type of a valueType to be a
reference type (see example below) but the reflexive properties of the
`==` must still be maintained.
Object p = (Object) Point.makePoint(1, 2);
if (p == p) //must be true
The original acmp (legacy acmp) operation in the ifacmp* bytecodes
performs a simple ref comparison, lhs == rhs. This must be updated to
check if both operands are valueTypes, and if they are of the same
type. If that is the case a structural comparison must be performed.
Example below:
```
acmpSub(lhs, rhs) {
if (lhs == rhs) return true
if ((lhs == NULL) || (rhs == NULL)) return false
if ((lhs.class == rhs.class) && (lhs.isValue)) return
isSubstitutable(lhs, rhs)
return false
}
```
The structural comparison must iterate through each field and perform an
equality comparison. If the field is byte, short, char, int the
comparison in icmp_eq is performed. If the field is a long the
comparison in lcmp is performed. If the field is a float an icmp
comparison of Float.floatToIntBits of both values is performed. If the
field is a double an lcmp comparison of Double.doubleToLongBits of both
values is performed. Note: this behaviour differs from the float f =
...; f == f case which performs a fcmp* operation. If the field is a
reference type that is java.lang.Object or an Interface or any type that
may contain a valueType (i.e InlineObject, Object, restricted-abstract
classes or interfaces) or if the field is a value type and both values
are not NULL a recursive acmpSub is performed. For all other types the
legacy acmp is performed. Example is below:
```
isSubstitutable(lhs, rhs) {
for each primitive perform primitive comparison (icmp, lcmp,
Float.floatToIntBits then icmp, )
for each ref that is j.l.Object, interface, a valueType and
both operands are not NULL perform acmSub (recursive)
for all other refs perform legacy acmp
return result
}
```
There are cases where the JVM may optimize the individual field
comparisons of the substitutability test and simply perform a memcmp
over the range of the operands. This optimization is possible in cases
where the substitutability test will not require recursion and there are
no floating point types.
The acmpSub will check to see if the fast comparison flag exists, if so
it will perform a memcmp with both operands that does something like
memcmp(lhs, rhs, lhs.size).
This is based on Adithya's work in
eclipse-openj9#8133
Signed-off-by: Tobi Ajila <[email protected]>
AArch64: Exclude testSoftMxUserScenario
Support PR builds from non-default repos
Clear peeking ilgen callNode from callsite
ACMP support for value types
…ss_feedback_2_cassandra
…lleeSavedRegisterList AArch64: Fix jitCalleeSavedRegisterList
Reduce CompInfo_isCompiled message from the server
Enable --enable-jitserver for all xlinux and plinux
This commit enables DDR tests that were disabled for AArch64 in eclipse-openj9#8569. Signed-off-by: KONNO Kazuhiro <[email protected]>
Enable DDR JITExt test for AArch64 again
…ss_feedback_2_cassandra
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.