1.1 --- a/src/share/vm/code/debugInfo.hpp Fri Jul 31 12:04:07 2009 -0700 1.2 +++ b/src/share/vm/code/debugInfo.hpp Fri Jul 31 17:12:33 2009 -0700 1.3 @@ -255,7 +255,8 @@ 1.4 ScopeValue* read_object_value(); 1.5 ScopeValue* get_cached_object(); 1.6 // BCI encoding is mostly unsigned, but -1 is a distinguished value 1.7 - int read_bci() { return read_int() + InvocationEntryBci; } 1.8 + // Decoding based on encoding: bci = InvocationEntryBci + read_int()/2; reexecute = read_int()%2 == 1 ? true : false; 1.9 + int read_bci_and_reexecute(bool& reexecute) { int i = read_int(); reexecute = (i & 1) ? true : false; return (i >> 1) + InvocationEntryBci; } 1.10 }; 1.11 1.12 // DebugInfoWriteStream specializes CompressedWriteStream for 1.13 @@ -268,5 +269,6 @@ 1.14 public: 1.15 DebugInfoWriteStream(DebugInformationRecorder* recorder, int initial_size); 1.16 void write_handle(jobject h); 1.17 - void write_bci(int bci) { write_int(bci - InvocationEntryBci); } 1.18 + //Encoding bci and reexecute into one word as (bci - InvocationEntryBci)*2 + reexecute 1.19 + void write_bci_and_reexecute(int bci, bool reexecute) { write_int(((bci - InvocationEntryBci) << 1) + (reexecute ? 1 : 0)); } 1.20 };