< prev index next >

src/hotspot/share/prims/privilegedStack.cpp

Print this page

        

*** 25,34 **** --- 25,35 ---- #include "precompiled.hpp" #include "memory/allocation.inline.hpp" #include "oops/instanceKlass.hpp" #include "oops/method.hpp" #include "oops/oop.inline.hpp" + #include "oops/valueKlass.hpp" #include "prims/privilegedStack.hpp" #include "runtime/vframe.hpp" void PrivilegedElement::initialize(vframeStream* vfst, oop context, PrivilegedElement* next, TRAPS) { Method* method = vfst->method();
*** 43,54 **** --- 44,65 ---- assert(oopDesc::is_oop_or_null(protection_domain()), "must be an oop"); } void PrivilegedElement::oops_do(OopClosure* f) { PrivilegedElement *cur = this; + BufferedValuesDealiaser* dealiaser = NULL; do { + if (!VTBuffer::is_in_vt_buffer(cur->_privileged_context)) { f->do_oop((oop*) &cur->_privileged_context); + } else { + if (dealiaser == NULL) { + dealiaser = Thread::current()->buffered_values_dealiaser(); + } + oop value = *(oop*) &cur->_privileged_context; + assert(value->is_value(), "Sanity check"); + dealiaser->oops_do(f, value); + } cur = cur->_next; } while(cur != NULL); } //-------------------------------------------------------------------------------
< prev index next >