src/share/vm/prims/jni.cpp
Print this page
rev 2520 : 7016112: CMS: crash during promotion testing
Summary: stdlib:qsort() does byte-by-byte swapping on Windows. This leads to pointer shearing. Fix is to implement a quicksort that does full pointer updates.
Reviewed-by:
*** 3294,3303 ****
--- 3294,3316 ----
args->javaStackSize = (jint)(ThreadStackSize * K);
}
return ret;
}
+ #ifndef PRODUCT
+
+ #include "utilities/quicksort.hpp"
+
+ void executeInternalVMTests() {
+ if (ExecuteInternalVMTests) {
+ assert(quicksort::testQuicksort(), "testQuicksort failed");
+ tty->print_cr("All tests passed");
+ }
+ }
+
+ #endif
+
HS_DTRACE_PROBE_DECL3(hotspot_jni, CreateJavaVM__entry, vm, penv, args);
DT_RETURN_MARK_DECL(CreateJavaVM, jint);
_JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **vm, void **penv, void *args) {
HS_DTRACE_PROBE3(hotspot_jni, CreateJavaVM__entry, vm, penv, args);
*** 3384,3393 ****
--- 3397,3407 ----
// control both compiler and architectural-based reordering.
OrderAccess::release_store(&vm_created, 0);
}
NOT_PRODUCT(test_error_handler(ErrorHandlerTest));
+ NOT_PRODUCT(executeInternalVMTests());
return result;
}
HS_DTRACE_PROBE_DECL3(hotspot_jni, GetCreatedJavaVMs__entry, \
JavaVM**, jsize, jsize*);