mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-15 18:33:41 +00:00
Merge
This commit is contained in:
commit
e6ef8a5897
@ -125,7 +125,6 @@ JVM_GetPrimitiveArrayElement
|
||||
JVM_GetProtectionDomain
|
||||
JVM_GetSimpleBinaryName
|
||||
JVM_GetStackAccessControlContext
|
||||
JVM_GetStackTraceElements
|
||||
JVM_GetSystemPackage
|
||||
JVM_GetSystemPackages
|
||||
JVM_GetTemporaryDirectory
|
||||
@ -135,6 +134,8 @@ JVM_HasReferencePendingList
|
||||
JVM_HoldsLock
|
||||
JVM_IHashCode
|
||||
JVM_InitProperties
|
||||
JVM_InitStackTraceElement
|
||||
JVM_InitStackTraceElementArray
|
||||
JVM_InternString
|
||||
JVM_Interrupt
|
||||
JVM_InvokeMethod
|
||||
@ -178,7 +179,6 @@ JVM_StartThread
|
||||
JVM_StopThread
|
||||
JVM_SupportsCX8
|
||||
JVM_SuspendThread
|
||||
JVM_ToStackTraceElement
|
||||
JVM_TotalMemory
|
||||
JVM_UnloadLibrary
|
||||
JVM_WaitForReferencePendingList
|
||||
|
||||
@ -2175,6 +2175,14 @@ void java_lang_StackTraceElement::fill_in(Handle element,
|
||||
const char* str = holder->external_name();
|
||||
oop classname = StringTable::intern((char*) str, CHECK);
|
||||
java_lang_StackTraceElement::set_declaringClass(element(), classname);
|
||||
java_lang_StackTraceElement::set_declaringClassObject(element(), holder->java_mirror());
|
||||
|
||||
oop loader = holder->class_loader();
|
||||
if (loader != NULL) {
|
||||
oop loader_name = java_lang_ClassLoader::name(loader);
|
||||
if (loader_name != NULL)
|
||||
java_lang_StackTraceElement::set_classLoaderName(element(), loader_name);
|
||||
}
|
||||
|
||||
// The method can be NULL if the requested class version is gone
|
||||
Symbol* sym = !method.is_null() ? method->name() : holder->constants()->symbol_at(cpref);
|
||||
@ -3433,6 +3441,7 @@ oop java_security_AccessControlContext::create(objArrayHandle context, bool isPr
|
||||
bool java_lang_ClassLoader::offsets_computed = false;
|
||||
int java_lang_ClassLoader::_loader_data_offset = -1;
|
||||
int java_lang_ClassLoader::parallelCapable_offset = -1;
|
||||
int java_lang_ClassLoader::name_offset = -1;
|
||||
int java_lang_ClassLoader::unnamedModule_offset = -1;
|
||||
|
||||
ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
|
||||
@ -3453,6 +3462,9 @@ void java_lang_ClassLoader::compute_offsets() {
|
||||
compute_optional_offset(parallelCapable_offset,
|
||||
k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature());
|
||||
|
||||
compute_offset(name_offset,
|
||||
k1, vmSymbols::name_name(), vmSymbols::string_signature());
|
||||
|
||||
compute_offset(unnamedModule_offset,
|
||||
k1, vmSymbols::unnamedModule_name(), vmSymbols::module_signature());
|
||||
|
||||
@ -3464,6 +3476,11 @@ oop java_lang_ClassLoader::parent(oop loader) {
|
||||
return loader->obj_field(parent_offset);
|
||||
}
|
||||
|
||||
oop java_lang_ClassLoader::name(oop loader) {
|
||||
assert(is_instance(loader), "loader must be oop");
|
||||
return loader->obj_field(name_offset);
|
||||
}
|
||||
|
||||
bool java_lang_ClassLoader::isAncestor(oop loader, oop cl) {
|
||||
assert(is_instance(loader), "loader must be oop");
|
||||
assert(cl == NULL || is_instance(cl), "cl argument must be oop");
|
||||
@ -3619,12 +3636,14 @@ int java_lang_System::static_in_offset;
|
||||
int java_lang_System::static_out_offset;
|
||||
int java_lang_System::static_err_offset;
|
||||
int java_lang_System::static_security_offset;
|
||||
int java_lang_StackTraceElement::declaringClass_offset;
|
||||
int java_lang_StackTraceElement::methodName_offset;
|
||||
int java_lang_StackTraceElement::fileName_offset;
|
||||
int java_lang_StackTraceElement::lineNumber_offset;
|
||||
int java_lang_StackTraceElement::moduleName_offset;
|
||||
int java_lang_StackTraceElement::moduleVersion_offset;
|
||||
int java_lang_StackTraceElement::classLoaderName_offset;
|
||||
int java_lang_StackTraceElement::declaringClass_offset;
|
||||
int java_lang_StackTraceElement::classOrLoaderModuleClassName_offset;
|
||||
int java_lang_StackFrameInfo::_declaringClass_offset;
|
||||
int java_lang_StackFrameInfo::_memberName_offset;
|
||||
int java_lang_StackFrameInfo::_bci_offset;
|
||||
@ -3669,6 +3688,14 @@ void java_lang_StackTraceElement::set_moduleVersion(oop element, oop value) {
|
||||
element->obj_field_put(moduleVersion_offset, value);
|
||||
}
|
||||
|
||||
void java_lang_StackTraceElement::set_classLoaderName(oop element, oop value) {
|
||||
element->obj_field_put(classLoaderName_offset, value);
|
||||
}
|
||||
|
||||
void java_lang_StackTraceElement::set_declaringClassObject(oop element, oop value) {
|
||||
element->obj_field_put(classOrLoaderModuleClassName_offset, value);
|
||||
}
|
||||
|
||||
// Support for java_lang_StackFrameInfo
|
||||
void java_lang_StackFrameInfo::set_declaringClass(oop element, oop value) {
|
||||
element->obj_field_put(_declaringClass_offset, value);
|
||||
@ -3784,6 +3811,8 @@ void JavaClasses::compute_hard_coded_offsets() {
|
||||
java_lang_System::static_security_offset = java_lang_System::hc_static_security_offset * x;
|
||||
|
||||
// java_lang_StackTraceElement
|
||||
java_lang_StackTraceElement::classOrLoaderModuleClassName_offset= java_lang_StackTraceElement::hc_classOrLoaderModuleClassName_offset* x + header;
|
||||
java_lang_StackTraceElement::classLoaderName_offset = java_lang_StackTraceElement::hc_classLoaderName_offset * x + header;
|
||||
java_lang_StackTraceElement::moduleName_offset = java_lang_StackTraceElement::hc_moduleName_offset * x + header;
|
||||
java_lang_StackTraceElement::moduleVersion_offset = java_lang_StackTraceElement::hc_moduleVersion_offset * x + header;
|
||||
java_lang_StackTraceElement::declaringClass_offset = java_lang_StackTraceElement::hc_declaringClass_offset * x + header;
|
||||
@ -3985,10 +4014,14 @@ void JavaClasses::check_offsets() {
|
||||
|
||||
// java.lang.StackTraceElement
|
||||
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, declaringClass, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, methodName, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, fileName, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, lineNumber, "I");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, classOrLoaderModuleClassName, "Ljava/lang/Object;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, classLoaderName, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, moduleName, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, moduleVersion, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, declaringClass, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, methodName, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, fileName, "Ljava/lang/String;");
|
||||
CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, lineNumber, "I");
|
||||
|
||||
// java.lang.ref.Reference
|
||||
|
||||
|
||||
@ -1225,6 +1225,7 @@ class java_lang_ClassLoader : AllStatic {
|
||||
static bool offsets_computed;
|
||||
static int parent_offset;
|
||||
static int parallelCapable_offset;
|
||||
static int name_offset;
|
||||
static int unnamedModule_offset;
|
||||
|
||||
public:
|
||||
@ -1234,6 +1235,7 @@ class java_lang_ClassLoader : AllStatic {
|
||||
static ClassLoaderData* loader_data(oop loader);
|
||||
|
||||
static oop parent(oop loader);
|
||||
static oop name(oop loader);
|
||||
static bool isAncestor(oop loader, oop cl);
|
||||
|
||||
// Support for parallelCapable field
|
||||
@ -1291,14 +1293,18 @@ class java_lang_System : AllStatic {
|
||||
class java_lang_StackTraceElement: AllStatic {
|
||||
private:
|
||||
enum {
|
||||
hc_moduleName_offset = 0,
|
||||
hc_moduleVersion_offset = 1,
|
||||
hc_declaringClass_offset = 2,
|
||||
hc_methodName_offset = 3,
|
||||
hc_fileName_offset = 4,
|
||||
hc_lineNumber_offset = 5
|
||||
hc_classOrLoaderModuleClassName_offset = 0,
|
||||
hc_classLoaderName_offset = 1,
|
||||
hc_moduleName_offset = 2,
|
||||
hc_moduleVersion_offset = 3,
|
||||
hc_declaringClass_offset = 4,
|
||||
hc_methodName_offset = 5,
|
||||
hc_fileName_offset = 6,
|
||||
hc_lineNumber_offset = 7
|
||||
};
|
||||
|
||||
static int classOrLoaderModuleClassName_offset;
|
||||
static int classLoaderName_offset;
|
||||
static int moduleName_offset;
|
||||
static int moduleVersion_offset;
|
||||
static int declaringClass_offset;
|
||||
@ -1307,12 +1313,14 @@ class java_lang_StackTraceElement: AllStatic {
|
||||
static int lineNumber_offset;
|
||||
|
||||
// Setters
|
||||
static void set_classLoaderName(oop element, oop value);
|
||||
static void set_moduleName(oop element, oop value);
|
||||
static void set_moduleVersion(oop element, oop value);
|
||||
static void set_declaringClass(oop element, oop value);
|
||||
static void set_methodName(oop element, oop value);
|
||||
static void set_fileName(oop element, oop value);
|
||||
static void set_lineNumber(oop element, int value);
|
||||
static void set_declaringClassObject(oop element, oop value);
|
||||
|
||||
public:
|
||||
// Create an instance of StackTraceElement
|
||||
|
||||
@ -503,16 +503,27 @@ JVM_ENTRY(void, JVM_FillInStackTrace(JNIEnv *env, jobject receiver))
|
||||
JVM_END
|
||||
|
||||
|
||||
JVM_ENTRY(void, JVM_GetStackTraceElements(JNIEnv *env, jobject throwable, jobjectArray stackTrace))
|
||||
JVMWrapper("JVM_GetStackTraceElements");
|
||||
// java.lang.StackTraceElement //////////////////////////////////////////////
|
||||
|
||||
|
||||
JVM_ENTRY(void, JVM_InitStackTraceElementArray(JNIEnv *env, jobjectArray elements, jobject throwable))
|
||||
JVMWrapper("JVM_InitStackTraceElementArray");
|
||||
Handle exception(THREAD, JNIHandles::resolve(throwable));
|
||||
objArrayOop st = objArrayOop(JNIHandles::resolve(stackTrace));
|
||||
objArrayOop st = objArrayOop(JNIHandles::resolve(elements));
|
||||
objArrayHandle stack_trace(THREAD, st);
|
||||
// Fill in the allocated stack trace
|
||||
java_lang_Throwable::get_stack_trace_elements(exception, stack_trace, CHECK);
|
||||
JVM_END
|
||||
|
||||
|
||||
JVM_ENTRY(void, JVM_InitStackTraceElement(JNIEnv* env, jobject element, jobject stackFrameInfo))
|
||||
JVMWrapper("JVM_InitStackTraceElement");
|
||||
Handle stack_frame_info(THREAD, JNIHandles::resolve_non_null(stackFrameInfo));
|
||||
Handle stack_trace_element(THREAD, JNIHandles::resolve_non_null(element));
|
||||
java_lang_StackFrameInfo::to_stack_trace_element(stack_frame_info, stack_trace_element, THREAD);
|
||||
JVM_END
|
||||
|
||||
|
||||
// java.lang.StackWalker //////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@ -566,13 +577,6 @@ JVM_ENTRY(jint, JVM_MoreStackWalk(JNIEnv *env, jobject stackStream, jlong mode,
|
||||
start_index, frames_array_h, THREAD);
|
||||
JVM_END
|
||||
|
||||
JVM_ENTRY(void, JVM_ToStackTraceElement(JNIEnv *env, jobject frame, jobject stack))
|
||||
JVMWrapper("JVM_ToStackTraceElement");
|
||||
Handle stack_frame_info(THREAD, JNIHandles::resolve_non_null(frame));
|
||||
Handle stack_trace_element(THREAD, JNIHandles::resolve_non_null(stack));
|
||||
java_lang_StackFrameInfo::to_stack_trace_element(stack_frame_info, stack_trace_element, THREAD);
|
||||
JVM_END
|
||||
|
||||
// java.lang.Object ///////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
@ -189,8 +189,14 @@ JVM_GetVmArguments(JNIEnv *env);
|
||||
JNIEXPORT void JNICALL
|
||||
JVM_FillInStackTrace(JNIEnv *env, jobject throwable);
|
||||
|
||||
/*
|
||||
* java.lang.StackTraceElement
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
JVM_GetStackTraceElements(JNIEnv *env, jobject throwable, jobjectArray elements);
|
||||
JVM_InitStackTraceElementArray(JNIEnv *env, jobjectArray elements, jobject throwable);
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
JVM_InitStackTraceElement(JNIEnv* env, jobject element, jobject stackFrameInfo);
|
||||
|
||||
/*
|
||||
* java.lang.StackWalker
|
||||
@ -212,9 +218,6 @@ JVM_MoreStackWalk(JNIEnv *env, jobject stackStream, jlong mode, jlong anchor,
|
||||
jint frame_count, jint start_index,
|
||||
jobjectArray frames);
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
JVM_ToStackTraceElement(JNIEnv* env, jobject frame, jobject stackElement);
|
||||
|
||||
/*
|
||||
* java.lang.Thread
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user