< prev index next >

src/hotspot/share/prims/jvm.cpp

Print this page
rev 53034 : imported patch 8214329

*** 1228,1253 **** Handle privileged_context(thread, NULL); bool is_privileged = false; oop protection_domain = NULL; // Iterate through Java frames ! RegisterMap reg_map(thread); ! javaVFrame *vf = thread->last_java_vframe(&reg_map); ! for (; vf != NULL; vf = vf->java_sender()) { // get method of frame ! Method* method = vf->method(); // stop at the first privileged frame if (method->method_holder() == SystemDictionary::AccessController_klass() && method->name() == vmSymbols::executePrivileged_name()) { // this frame is privileged is_privileged = true; ! javaVFrame *priv = vf; // executePrivileged ! javaVFrame *caller_fr = priv->java_sender(); // doPrivileged ! caller_fr = caller_fr->java_sender(); // caller StackValueCollection* locals = priv->locals(); privileged_context = locals->obj_at(1); Handle caller = locals->obj_at(2); --- 1228,1250 ---- Handle privileged_context(thread, NULL); bool is_privileged = false; oop protection_domain = NULL; // Iterate through Java frames ! vframeStream vfst(thread); ! for(; !vfst.at_end(); vfst.next()) { // get method of frame ! Method* method = vfst.method(); // stop at the first privileged frame if (method->method_holder() == SystemDictionary::AccessController_klass() && method->name() == vmSymbols::executePrivileged_name()) { // this frame is privileged is_privileged = true; ! javaVFrame *priv = vfst.asJavaVFrame(); // executePrivileged StackValueCollection* locals = priv->locals(); privileged_context = locals->obj_at(1); Handle caller = locals->obj_at(2);
< prev index next >