< prev index next >
src/share/vm/interpreter/rewriter.cpp
Print this page
*** 115,125 ****
// registration point. Additionally local 0 must be preserved so it's
// available to pass to the registration function. For simplicity we
// require that local 0 is never overwritten so it's available as an
// argument for registration.
! void Rewriter::rewrite_Object_init(methodHandle method, TRAPS) {
RawBytecodeStream bcs(method);
while (!bcs.is_last_bytecode()) {
Bytecodes::Code opcode = bcs.raw_next();
switch (opcode) {
case Bytecodes::_return: *bcs.bcp() = Bytecodes::_return_register_finalizer; break;
--- 115,125 ----
// registration point. Additionally local 0 must be preserved so it's
// available to pass to the registration function. For simplicity we
// require that local 0 is never overwritten so it's available as an
// argument for registration.
! void Rewriter::rewrite_Object_init(const methodHandle& method, TRAPS) {
RawBytecodeStream bcs(method);
while (!bcs.is_last_bytecode()) {
Bytecodes::Code opcode = bcs.raw_next();
switch (opcode) {
case Bytecodes::_return: *bcs.bcp() = Bytecodes::_return_register_finalizer; break;
*** 489,509 ****
assert(method->has_jsrs(), "didn't we just set this?");
}
}
// After constant pool is created, revisit methods containing jsrs.
! methodHandle Rewriter::rewrite_jsrs(methodHandle method, TRAPS) {
ResourceMark rm(THREAD);
ResolveOopMapConflicts romc(method);
! methodHandle original_method = method;
! method = romc.do_potential_rewrite(CHECK_(methodHandle()));
// Update monitor matching info.
if (romc.monitor_safe()) {
! method->set_guaranteed_monitor_matching();
}
! return method;
}
void Rewriter::rewrite_bytecodes(TRAPS) {
assert(_pool->cache() == NULL, "constant pool cache must not be set yet");
--- 489,509 ----
assert(method->has_jsrs(), "didn't we just set this?");
}
}
// After constant pool is created, revisit methods containing jsrs.
! methodHandle Rewriter::rewrite_jsrs(const methodHandle& method, TRAPS) {
ResourceMark rm(THREAD);
ResolveOopMapConflicts romc(method);
! methodHandle new_method = method;
! new_method = romc.do_potential_rewrite(CHECK_(methodHandle()));
// Update monitor matching info.
if (romc.monitor_safe()) {
! new_method->set_guaranteed_monitor_matching();
}
! return new_method;
}
void Rewriter::rewrite_bytecodes(TRAPS) {
assert(_pool->cache() == NULL, "constant pool cache must not be set yet");
< prev index next >