src/share/vm/runtime/reflection.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/runtime/reflection.cpp

src/share/vm/runtime/reflection.cpp

Print this page

        

*** 54,64 **** JavaThread* jthread = JavaThread::current(); if (jthread->has_last_Java_frame()) { vframeStream vfst(jthread); // skip over any frames belonging to java.lang.Class while (!vfst.at_end() && ! vfst.method()->method_holder()->name() == vmSymbols::java_lang_Class()) { vfst.next(); } if (!vfst.at_end()) { // this frame is a likely suspect caller = vfst.method()->method_holder(); --- 54,64 ---- JavaThread* jthread = JavaThread::current(); if (jthread->has_last_Java_frame()) { vframeStream vfst(jthread); // skip over any frames belonging to java.lang.Class while (!vfst.at_end() && ! vfst.method()->method_holder()->name()->equals(vmSymbols::java_lang_Class())) { vfst.next(); } if (!vfst.at_end()) { // this frame is a likely suspect caller = vfst.method()->method_holder();
*** 865,875 **** THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "object is not an instance of declaring class"); } // target klass is receiver's klass target_klass = KlassHandle(THREAD, receiver->klass()); // no need to resolve if method is private or <init> ! if (reflected_method->is_private() || reflected_method->name() == vmSymbols::object_initializer_name()) { method = reflected_method; } else { // resolve based on the receiver if (reflected_method->method_holder()->is_interface()) { // resolve interface call --- 865,875 ---- THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "object is not an instance of declaring class"); } // target klass is receiver's klass target_klass = KlassHandle(THREAD, receiver->klass()); // no need to resolve if method is private or <init> ! if (reflected_method->is_private() || reflected_method->name()->equals(vmSymbols::object_initializer_name())) { method = reflected_method; } else { // resolve based on the receiver if (reflected_method->method_holder()->is_interface()) { // resolve interface call
*** 1073,1083 **** Method* m = klass->method_with_idnum(slot); if (m == NULL) { THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke"); } methodHandle method(THREAD, m); ! assert(method->name() == vmSymbols::object_initializer_name(), "invalid constructor"); // Make sure klass gets initialize klass->initialize(CHECK_NULL); // Create new instance (the receiver) --- 1073,1083 ---- Method* m = klass->method_with_idnum(slot); if (m == NULL) { THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke"); } methodHandle method(THREAD, m); ! assert(method->name()->equals(vmSymbols::object_initializer_name()), "invalid constructor"); // Make sure klass gets initialize klass->initialize(CHECK_NULL); // Create new instance (the receiver)
src/share/vm/runtime/reflection.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File