comparison src/share/vm/classfile/javaClasses.cpp @ 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 be93aad57795
children 72088be4b386
comparison
equal deleted inserted replaced
899:55cb84cd1247 900:9987d9d5eb0e
1227 methodOop method = NULL; 1227 methodOop method = NULL;
1228 int bci = 0; 1228 int bci = 0;
1229 1229
1230 // Compiled java method case. 1230 // Compiled java method case.
1231 if (decode_offset != 0) { 1231 if (decode_offset != 0) {
1232 bool dummy_reexecute = false;
1232 DebugInfoReadStream stream(nm, decode_offset); 1233 DebugInfoReadStream stream(nm, decode_offset);
1233 decode_offset = stream.read_int(); 1234 decode_offset = stream.read_int();
1234 method = (methodOop)nm->oop_at(stream.read_int()); 1235 method = (methodOop)nm->oop_at(stream.read_int());
1235 bci = stream.read_bci(); 1236 //fill_in_stack_trace does not need the reexecute information which is designed
1237 //for the deopt to reexecute
1238 bci = stream.read_bci_and_reexecute(dummy_reexecute);
1236 } else { 1239 } else {
1237 if (fr.is_first_frame()) break; 1240 if (fr.is_first_frame()) break;
1238 address pc = fr.pc(); 1241 address pc = fr.pc();
1239 if (fr.is_interpreted_frame()) { 1242 if (fr.is_interpreted_frame()) {
1240 intptr_t bcx = fr.interpreter_frame_bcx(); 1243 intptr_t bcx = fr.interpreter_frame_bcx();