comparison agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java @ 931:72088be4b386

6873116: Modify reexecute implementation to use pcDesc to record the reexecute bit Summary: use PcDesc to keep record of the reexecute bit instead of using DebugInfoStreams Reviewed-by: kvn, never, twisti
author cfang
date Thu, 20 Aug 2009 12:42:57 -0700
parents a61af66fc99e
children 148e5441d916
comparison
equal deleted inserted replaced
930:357d4e2eb4dd 931:72088be4b386
1 /* 1 /*
2 * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. 2 * Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
257 public ScopeDesc getScopeDescAt(Address pc) { 257 public ScopeDesc getScopeDescAt(Address pc) {
258 PCDesc pd = getPCDescAt(pc); 258 PCDesc pd = getPCDescAt(pc);
259 if (Assert.ASSERTS_ENABLED) { 259 if (Assert.ASSERTS_ENABLED) {
260 Assert.that(pd != null, "scope must be present"); 260 Assert.that(pd != null, "scope must be present");
261 } 261 }
262 return new ScopeDesc(this, pd.getScopeDecodeOffset()); 262 return new ScopeDesc(this, pd.getScopeDecodeOffset(), pd.getReexecute());
263 } 263 }
264 264
265 /** This is only for use by the debugging system, and is only 265 /** This is only for use by the debugging system, and is only
266 intended for use in the topmost frame, where we are not 266 intended for use in the topmost frame, where we are not
267 guaranteed to be at a PC for which we have a PCDesc. It finds 267 guaranteed to be at a PC for which we have a PCDesc. It finds
289 return NULL for compiled methods which don't have any 289 return NULL for compiled methods which don't have any
290 ScopeDescs! */ 290 ScopeDescs! */
291 public ScopeDesc getScopeDescNearDbg(Address pc) { 291 public ScopeDesc getScopeDescNearDbg(Address pc) {
292 PCDesc pd = getPCDescNearDbg(pc); 292 PCDesc pd = getPCDescNearDbg(pc);
293 if (pd == null) return null; 293 if (pd == null) return null;
294 return new ScopeDesc(this, pd.getScopeDecodeOffset()); 294 return new ScopeDesc(this, pd.getScopeDecodeOffset(), pd.getReexecute());
295 } 295 }
296 296
297 public Map/*<Address, PcDesc>*/ getSafepoints() { 297 public Map/*<Address, PcDesc>*/ getSafepoints() {
298 Map safepoints = new HashMap(); // Map<Address, PcDesc> 298 Map safepoints = new HashMap(); // Map<Address, PcDesc>
299 sun.jvm.hotspot.debugger.Address p = null; 299 sun.jvm.hotspot.debugger.Address p = null;