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