Mercurial > hg > graal-jvmci-8
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; } |