Mercurial > hg > graal-jvmci-8
diff src/share/vm/runtime/frame.cpp @ 14909:4ca6dc0799b6
Backout jdk9 merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 01 Apr 2014 13:57:07 +0200 |
parents | d8041d695d19 |
children | 52b4284cb496 |
line wrap: on
line diff
--- a/src/share/vm/runtime/frame.cpp Tue Apr 01 14:09:03 2014 +0200 +++ b/src/share/vm/runtime/frame.cpp Tue Apr 01 13:57:07 2014 +0200 @@ -649,7 +649,7 @@ #endif } -// Print whether the frame is in the VM or OS indicating a HotSpot problem. +// Return whether the frame is in the VM or os indicating a Hotspot problem. // Otherwise, it's likely a bug in the native library that the Java code calls, // hopefully indicating where to submit bugs. void frame::print_C_frame(outputStream* st, char* buf, int buflen, address pc) { @@ -895,7 +895,7 @@ } -void frame::oops_interpreted_do(OopClosure* f, CLDClosure* cld_f, +void frame::oops_interpreted_do(OopClosure* f, CLDToOopClosure* cld_f, const RegisterMap* map, bool query_oop_map_cache) { assert(is_interpreted_frame(), "Not an interpreted frame"); assert(map != NULL, "map must be set"); @@ -928,14 +928,25 @@ // klass, and the klass needs to be kept alive while executing. The GCs // don't trace through method pointers, so typically in similar situations // the mirror or the class loader of the klass are installed as a GC root. - // To minimize the overhead of doing that here, we ask the GC to pass down a + // To minimze the overhead of doing that here, we ask the GC to pass down a // closure that knows how to keep klasses alive given a ClassLoaderData. cld_f->do_cld(m->method_holder()->class_loader_data()); } - if (m->is_native() PPC32_ONLY(&& m->is_static())) { - f->do_oop(interpreter_frame_temp_oop_addr()); +#if !defined(PPC) || defined(ZERO) + if (m->is_native()) { +#ifdef CC_INTERP + interpreterState istate = get_interpreterState(); + f->do_oop((oop*)&istate->_oop_temp); +#else + f->do_oop((oop*)( fp() + interpreter_frame_oop_temp_offset )); +#endif /* CC_INTERP */ } +#else // PPC + if (m->is_native() && m->is_static()) { + f->do_oop(interpreter_frame_mirror_addr()); + } +#endif // PPC int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals(); @@ -1135,7 +1146,7 @@ } -void frame::oops_do_internal(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) { +void frame::oops_do_internal(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) { #ifndef PRODUCT // simulate GC crash here to dump java thread in error report if (CrashGCForDumpingJavaThread) {