comparison src/share/vm/code/scopeDesc.hpp @ 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 9987d9d5eb0e
children f70b0d9ab095
comparison
equal deleted inserted replaced
930:357d4e2eb4dd 931:72088be4b386
1 /* 1 /*
2 * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. 2 * Copyright 1997-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.
37 PcDesc* pc_desc = code->pc_desc_at(pc); 37 PcDesc* pc_desc = code->pc_desc_at(pc);
38 assert(pc_desc != NULL, "Must be able to find matching PcDesc"); 38 assert(pc_desc != NULL, "Must be able to find matching PcDesc");
39 DebugInfoReadStream buffer(code, pc_desc->scope_decode_offset()); 39 DebugInfoReadStream buffer(code, pc_desc->scope_decode_offset());
40 int ignore_sender = buffer.read_int(); 40 int ignore_sender = buffer.read_int();
41 _method = methodOop(buffer.read_oop()); 41 _method = methodOop(buffer.read_oop());
42 bool dummy_reexecute; //only methodOop and bci are needed! 42 _bci = buffer.read_bci();
43 _bci = buffer.read_bci_and_reexecute(dummy_reexecute);
44 } 43 }
45 44
46 methodOop method() { return _method; } 45 methodOop method() { return _method; }
47 int bci() { return _bci; } 46 int bci() { return _bci; }
48 }; 47 };
51 // nmethods possible; each scopeDesc describes a method activation 50 // nmethods possible; each scopeDesc describes a method activation
52 51
53 class ScopeDesc : public ResourceObj { 52 class ScopeDesc : public ResourceObj {
54 public: 53 public:
55 // Constructor 54 // Constructor
56 ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset); 55 ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute);
57 56
58 // Calls above, giving default value of "serialized_null" to the 57 // Calls above, giving default value of "serialized_null" to the
59 // "obj_decode_offset" argument. (We don't use a default argument to 58 // "obj_decode_offset" argument. (We don't use a default argument to
60 // avoid a .hpp-.hpp dependency.) 59 // avoid a .hpp-.hpp dependency.)
61 ScopeDesc(const nmethod* code, int decode_offset); 60 ScopeDesc(const nmethod* code, int decode_offset, bool reexecute);
62 61
63 // JVM state 62 // JVM state
64 methodHandle method() const { return _method; } 63 methodHandle method() const { return _method; }
65 int bci() const { return _bci; } 64 int bci() const { return _bci; }
66 bool should_reexecute() const { return _reexecute; } 65 bool should_reexecute() const { return _reexecute; }