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