A question about method frame::oops_interpreted_do
Colin(Du Li)
dawn2004 at gmail.com
Tue Mar 10 23:40:24 PDT 2009
I have two question about method frame::oops_interpreted_do in
../hotspot/src/share/vm/runtime/frame.cpp
1. when will this method be executed? what's its function?
2. It has following codes:
......
if (m->is_native()) {
#ifdef CC_INTERP
f->do_oop((oop*)&istate->_oop_temp);
#else
f->do_oop((oop*)( fp() + interpreter_frame_oop_temp_offset ));
#endif /* CC_INTERP */
}
int max_locals = m->is_native() ? m->size_of_parameters() :
m->max_locals();
symbolHandle signature;
bool is_static = false;
// Process a callee's arguments if we are at a call site
// (i.e., if we are at an invoke bytecode)
// This is used sometimes for calling into the VM, not for another
// interpreted or compiled frame.
if (!m->is_native()) {
Bytecode_invoke *call = Bytecode_invoke_at_check(m, bci);
if (call != NULL) {
signature = symbolHandle(thread, call->signature());
is_static = call->is_invokestatic();
if (map->include_argument_oops() &&
interpreter_frame_expression_stack_size() > 0) {
ResourceMark rm(thread); // is this right ???
oops_interpreted_arguments_do(signature, is_static, f);
}
}
}
.......
my question is when the method is declared as native, which the arguments
don't need to be iterated as non-native method (by
oops_interpreted_arguments_do).
Thanks a lot!
Colin
--
View this message in context: http://www.nabble.com/A-question-about-method-frame%3A%3Aoops_interpreted_do-tp22449547p22449547.html
Sent from the OpenJDK Hotspot Virtual Machine mailing list archive at Nabble.com.
More information about the hotspot-dev
mailing list