Mercurial > hg > graal-compiler
diff src/share/vm/runtime/vframe_hp.cpp @ 6948:e522a00b91aa
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 12 Nov 2012 23:14:12 +0100 |
parents | 957c266d8bc5 da91efe96a93 |
children | b8f261ba79c6 |
line wrap: on
line diff
--- a/src/share/vm/runtime/vframe_hp.cpp Mon Nov 12 18:11:17 2012 +0100 +++ b/src/share/vm/runtime/vframe_hp.cpp Mon Nov 12 23:14:12 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -202,7 +202,7 @@ // Natives has no scope if (scope() == NULL) { nmethod* nm = code(); - methodOop method = nm->method(); + Method* method = nm->method(); assert(method->is_native(), ""); if (!method->is_synchronized()) { return new GrowableArray<MonitorInfo*>(0); @@ -232,8 +232,9 @@ // Put klass for scalar replaced object. ScopeValue* kv = ((ObjectValue *)ov)->klass(); assert(kv->is_constant_oop(), "klass should be oop constant for scalar replaced object"); - KlassHandle k(((ConstantOopReadValue*)kv)->value()()); - result->push(new MonitorInfo(k->as_klassOop(), resolve_monitor_lock(mv->basic_lock()), + Handle k(((ConstantOopReadValue*)kv)->value()()); + assert(java_lang_Class::is_instance(k()), "must be"); + result->push(new MonitorInfo(k(), resolve_monitor_lock(mv->basic_lock()), mv->eliminated(), true)); } else { result->push(new MonitorInfo(owner_sv->get_obj()(), resolve_monitor_lock(mv->basic_lock()), @@ -273,14 +274,14 @@ } -methodOop compiledVFrame::method() const { +Method* compiledVFrame::method() const { if (scope() == NULL) { // native nmethods have no scope the method is implied nmethod* nm = code(); assert(nm->is_native_method(), "must be native"); return nm->method(); } - return scope()->method()(); + return scope()->method(); } @@ -324,7 +325,7 @@ } } -jvmtiDeferredLocalVariableSet::jvmtiDeferredLocalVariableSet(methodOop method, int bci, intptr_t* id) { +jvmtiDeferredLocalVariableSet::jvmtiDeferredLocalVariableSet(Method* method, int bci, intptr_t* id) { _method = method; _bci = bci; _id = id; @@ -359,8 +360,8 @@ } void jvmtiDeferredLocalVariableSet::oops_do(OopClosure* f) { - - f->do_oop((oop*) &_method); + // The Method* is on the stack so a live activation keeps it alive + // either by mirror in interpreter or code in compiled code. for ( int i = 0; i < locals()->length(); i++ ) { if ( locals()->at(i)->type() == T_OBJECT) { f->do_oop(locals()->at(i)->oop_addr());