Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/vframe.hpp @ 900:9987d9d5eb0e
6833129: specjvm98 fails with NullPointerException in the compiler with -XX:DeoptimizeALot
Summary: developed a reexecute logic for the interpreter to reexecute the bytecode when deopt happens
Reviewed-by: kvn, never, jrose, twisti
author | cfang |
---|---|
date | Fri, 31 Jul 2009 17:12:33 -0700 |
parents | b109e761e927 |
children | 15bbd3f505c0 |
comparison
equal
deleted
inserted
replaced
899:55cb84cd1247 | 900:9987d9d5eb0e |
---|---|
400 | 400 |
401 // Decode first part of scopeDesc | 401 // Decode first part of scopeDesc |
402 DebugInfoReadStream buffer(nm(), decode_offset); | 402 DebugInfoReadStream buffer(nm(), decode_offset); |
403 _sender_decode_offset = buffer.read_int(); | 403 _sender_decode_offset = buffer.read_int(); |
404 _method = methodOop(buffer.read_oop()); | 404 _method = methodOop(buffer.read_oop()); |
405 _bci = buffer.read_bci(); | 405 // Deoptimization needs reexecute bit to determine whether to reexecute the bytecode |
406 // only at the time when it "unpack_frames", and the reexecute bit info could always | |
407 // be obtained from the scopeDesc in the compiledVFrame. As a result, we don't keep | |
408 // the reexecute bit here. | |
409 bool dummy_reexecute; | |
410 _bci = buffer.read_bci_and_reexecute(dummy_reexecute); | |
406 | 411 |
407 assert(_method->is_method(), "checking type of decoded method"); | 412 assert(_method->is_method(), "checking type of decoded method"); |
408 } | 413 } |
409 | 414 |
410 // The native frames are handled specially. We do not rely on ScopeDesc info | 415 // The native frames are handled specially. We do not rely on ScopeDesc info |