--- a/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Fri Jan 29 12:13:05 2010 +0100
+++ b/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Fri Jan 29 08:33:24 2010 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc. 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
@@ -35,35 +35,32 @@
_deopt_state = unknown;
}
-inline frame::frame(intptr_t* sp, intptr_t* fp, address pc) {
+inline frame:: frame(intptr_t* sp, intptr_t* fp, address pc) {
_sp = sp;
_unextended_sp = sp;
_fp = fp;
_pc = pc;
assert(pc != NULL, "no pc?");
_cb = CodeCache::find_blob(pc);
-
- address original_pc = nmethod::get_deopt_original_pc(this);
- if (original_pc != NULL) {
- _pc = original_pc;
+ _deopt_state = not_deoptimized;
+ if (_cb != NULL && _cb->is_nmethod() && ((nmethod*)_cb)->is_deopt_pc(_pc)) {
+ _pc = (((nmethod*)_cb)->get_original_pc(this));
_deopt_state = is_deoptimized;
} else {
_deopt_state = not_deoptimized;
}
}
-inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc) {
+inline frame:: frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc) {
_sp = sp;
_unextended_sp = unextended_sp;
_fp = fp;
_pc = pc;
assert(pc != NULL, "no pc?");
_cb = CodeCache::find_blob(pc);
-
- address original_pc = nmethod::get_deopt_original_pc(this);
- if (original_pc != NULL) {
- _pc = original_pc;
- assert(((nmethod*)_cb)->code_contains(_pc), "original PC must be in nmethod");
+ _deopt_state = not_deoptimized;
+ if (_cb != NULL && _cb->is_nmethod() && ((nmethod*)_cb)->is_deopt_pc(_pc)) {
+ _pc = (((nmethod*)_cb)->get_original_pc(this));
_deopt_state = is_deoptimized;
} else {
_deopt_state = not_deoptimized;
@@ -89,9 +86,9 @@
_cb = CodeCache::find_blob(_pc);
- address original_pc = nmethod::get_deopt_original_pc(this);
- if (original_pc != NULL) {
- _pc = original_pc;
+ _deopt_state = not_deoptimized;
+ if (_cb != NULL && _cb->is_nmethod() && ((nmethod*)_cb)->is_deopt_pc(_pc)) {
+ _pc = (((nmethod*)_cb)->get_original_pc(this));
_deopt_state = is_deoptimized;
} else {
_deopt_state = not_deoptimized;