Mercurial > hg > truffle
comparison src/share/vm/runtime/vframeArray.cpp @ 4678:a03f3fd16b22
Fix reexecute boolean in HotSpot debug information. Introduce "duringCall" flag in FrameState that indicates that the bci of the frame state denotes an invoke that should *not* be reexecuted.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Thu, 23 Feb 2012 21:43:59 +0100 |
parents | 3dbcd1013cc8 |
children | 07bcee8b70a4 |
comparison
equal
deleted
inserted
replaced
4677:74c0b866fe8d | 4678:a03f3fd16b22 |
---|---|
128 // Now the expressions off-stack | 128 // Now the expressions off-stack |
129 // Same silliness as above | 129 // Same silliness as above |
130 bool rethrow_exception = vf->scope()->rethrow_exception(); | 130 bool rethrow_exception = vf->scope()->rethrow_exception(); |
131 if (rethrow_exception) { | 131 if (rethrow_exception) { |
132 // (tw) Make sure there are only null pointers on the stack, because the stack values do not correspond to the GC map at the bytecode at which the exception is rethrown. | 132 // (tw) Make sure there are only null pointers on the stack, because the stack values do not correspond to the GC map at the bytecode at which the exception is rethrown. |
133 // TODO: Fix this! Locals map might be wrong too. | |
133 _expressions = new StackValueCollection(vf->method()->max_stack()); | 134 _expressions = new StackValueCollection(vf->method()->max_stack()); |
134 assert(Thread::current()->has_pending_exception(), "just checking"); | 135 assert(Thread::current()->has_pending_exception(), "just checking"); |
135 for (int i=0; i<vf->method()->max_stack(); ++i) { | 136 for (int i=0; i<vf->method()->max_stack(); ++i) { |
136 _expressions->add( new StackValue()); | 137 _expressions->add( new StackValue()); |
137 } | 138 } |
259 // in interpreterRuntime.cpp. | 260 // in interpreterRuntime.cpp. |
260 break; | 261 break; |
261 case Deoptimization::Unpack_uncommon_trap: | 262 case Deoptimization::Unpack_uncommon_trap: |
262 case Deoptimization::Unpack_reexecute: | 263 case Deoptimization::Unpack_reexecute: |
263 // redo last byte code | 264 // redo last byte code |
265 assert(should_reexecute(), ""); | |
264 pc = Interpreter::deopt_entry(vtos, 0); | 266 pc = Interpreter::deopt_entry(vtos, 0); |
265 use_next_mdp = false; | 267 use_next_mdp = false; |
266 break; | 268 break; |
267 default: | 269 default: |
268 ShouldNotReachHere(); | 270 ShouldNotReachHere(); |