src/share/vm/opto/runtime.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/opto/runtime.cpp
src/share/vm/opto/runtime.cpp
Print this page
*** 100,114 ****
address OptoRuntime::_rethrow_Java = NULL;
address OptoRuntime::_slow_arraycopy_Java = NULL;
address OptoRuntime::_register_finalizer_Java = NULL;
- # ifdef ENABLE_ZAP_DEAD_LOCALS
- address OptoRuntime::_zap_dead_Java_locals_Java = NULL;
- address OptoRuntime::_zap_dead_native_locals_Java = NULL;
- # endif
-
ExceptionBlob* OptoRuntime::_exception_blob;
// This should be called in an assertion at the start of OptoRuntime routines
// which are entered from compiled code (all of them)
#ifdef ASSERT
--- 100,109 ----
*** 150,163 ****
gen(env, _rethrow_Java , rethrow_Type , rethrow_C , 2 , true , false, true );
gen(env, _slow_arraycopy_Java , slow_arraycopy_Type , SharedRuntime::slow_arraycopy_C , 0 , false, false, false);
gen(env, _register_finalizer_Java , register_finalizer_Type , register_finalizer , 0 , false, false, false);
- # ifdef ENABLE_ZAP_DEAD_LOCALS
- gen(env, _zap_dead_Java_locals_Java , zap_dead_locals_Type , zap_dead_Java_locals_C , 0 , false, true , false );
- gen(env, _zap_dead_native_locals_Java , zap_dead_locals_Type , zap_dead_native_locals_C , 0 , false, true , false );
- # endif
return true;
}
#undef gen
--- 145,154 ----
*** 602,628 ****
const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
return TypeFunc::make(domain, range);
}
- # ifdef ENABLE_ZAP_DEAD_LOCALS
- // Type used for stub generation for zap_dead_locals.
- // No inputs or outputs
- const TypeFunc *OptoRuntime::zap_dead_locals_Type() {
- // create input type (domain)
- const Type **fields = TypeTuple::fields(0);
- const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms,fields);
-
- // create result type (range)
- fields = TypeTuple::fields(0);
- const TypeTuple *range = TypeTuple::make(TypeFunc::Parms,fields);
-
- return TypeFunc::make(domain,range);
- }
- # endif
-
-
//-----------------------------------------------------------------------------
// Monitor Handling
const TypeFunc *OptoRuntime::complete_monitor_enter_Type() {
// create input type (domain)
const Type **fields = TypeTuple::fields(2);
--- 593,602 ----
*** 1646,1714 ****
tty->print_cr("]");
}
#endif // PRODUCT
-
- # ifdef ENABLE_ZAP_DEAD_LOCALS
- // Called from call sites in compiled code with oop maps (actually safepoints)
- // Zaps dead locals in first java frame.
- // Is entry because may need to lock to generate oop maps
- // Currently, only used for compiler frames, but someday may be used
- // for interpreter frames, too.
-
- int OptoRuntime::ZapDeadCompiledLocals_count = 0;
-
- // avoid pointers to member funcs with these helpers
- static bool is_java_frame( frame* f) { return f->is_java_frame(); }
- static bool is_native_frame(frame* f) { return f->is_native_frame(); }
-
-
- void OptoRuntime::zap_dead_java_or_native_locals(JavaThread* thread,
- bool (*is_this_the_right_frame_to_zap)(frame*)) {
- assert(JavaThread::current() == thread, "is this needed?");
-
- if ( !ZapDeadCompiledLocals ) return;
-
- bool skip = false;
-
- if ( ZapDeadCompiledLocalsFirst == 0 ) ; // nothing special
- else if ( ZapDeadCompiledLocalsFirst > ZapDeadCompiledLocals_count ) skip = true;
- else if ( ZapDeadCompiledLocalsFirst == ZapDeadCompiledLocals_count )
- warning("starting zapping after skipping");
-
- if ( ZapDeadCompiledLocalsLast == -1 ) ; // nothing special
- else if ( ZapDeadCompiledLocalsLast < ZapDeadCompiledLocals_count ) skip = true;
- else if ( ZapDeadCompiledLocalsLast == ZapDeadCompiledLocals_count )
- warning("about to zap last zap");
-
- ++ZapDeadCompiledLocals_count; // counts skipped zaps, too
-
- if ( skip ) return;
-
- // find java frame and zap it
-
- for (StackFrameStream sfs(thread); !sfs.is_done(); sfs.next()) {
- if (is_this_the_right_frame_to_zap(sfs.current()) ) {
- sfs.current()->zap_dead_locals(thread, sfs.register_map());
- return;
- }
- }
- warning("no frame found to zap in zap_dead_Java_locals_C");
- }
-
- JRT_LEAF(void, OptoRuntime::zap_dead_Java_locals_C(JavaThread* thread))
- zap_dead_java_or_native_locals(thread, is_java_frame);
- JRT_END
-
- // The following does not work because for one thing, the
- // thread state is wrong; it expects java, but it is native.
- // Also, the invariants in a native stub are different and
- // I'm not sure it is safe to have a MachCalRuntimeDirectNode
- // in there.
- // So for now, we do not zap in native stubs.
-
- JRT_LEAF(void, OptoRuntime::zap_dead_native_locals_C(JavaThread* thread))
- zap_dead_java_or_native_locals(thread, is_native_frame);
- JRT_END
-
- # endif
--- 1620,1624 ----
src/share/vm/opto/runtime.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File