Request for reviews (M): 6873116: Modify reexecute implementation to use pcDesc to record the reexecute bit

changpeng fang - Sun Microsystems - Santa Clara United States Changpeng.Fang at Sun.COM
Wed Aug 19 14:52:18 PDT 2009


Is this the approach to make it lazy? Thanks. -- Changpeng


diff -r d0acbc302e14 src/share/vm/code/scopeDesc.cpp
--- a/src/share/vm/code/scopeDesc.cpp   Mon Aug 17 14:45:02 2009 -0700
+++ b/src/share/vm/code/scopeDesc.cpp   Wed Aug 19 14:49:27 2009 -0700
@@ -90,16 +90,21 @@ GrowableArray<ScopeValue*>* ScopeDesc::d

 GrowableArray<ScopeValue*>* ScopeDesc::decode_object_values(int 
decode_offset) {
   if (decode_offset == DebugInformationRecorder::serialized_null) 
return NULL;
-  GrowableArray<ScopeValue*>* result = new GrowableArray<ScopeValue*>();
-  DebugInfoReadStream* stream = new DebugInfoReadStream(_code, 
decode_offset, result);
-  int length = stream->read_int();
-  for (int index = 0; index < length; index++) {
-    // Objects values are pushed to 'result' array during read so that
-    // object's fields could reference it (OBJECT_ID_CODE).
-    (void)ScopeValue::read_from(stream);
+#ifdef COMPILER2
+  if (DoEscapeAnalysis && EliminateAllocations) {
+    GrowableArray<ScopeValue*>* result = new GrowableArray<ScopeValue*>();
+    DebugInfoReadStream* stream = new DebugInfoReadStream(_code, 
decode_offset, result);
+    int length = stream->read_int();
+    for (int index = 0; index < length; index++) {
+      // Objects values are pushed to 'result' array during read so that
+      // object's fields could reference it (OBJECT_ID_CODE).
+      (void)ScopeValue::read_from(stream);
+    }
+    assert(result->length() == length, "inconsistent debug information");
+    return result;
   }
-  assert(result->length() == length, "inconsistent debug information");
-  return result;
+#endif
+  return NULL;
 }







> Tom Rodriguez wrote:
>> By the way, does anyone know why the objects for EA are decoded 
>> eagerly instead of being decoded lazily like all the other debug 
>> info?  That seems like unneeded overhead for most uses of ScopeDesc 
>> for stack walking.
>
> Do you mean the call to decode_object_values()?
> It is done only for top frame.
> But you are right that we may need to call it only when we
> need to decode narrow oop. I will look on it.
>
> Vladimir
>
>>
>> tom
>>



More information about the hotspot-compiler-dev mailing list