You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2008/06/10 11:04:37 UTC

svn commit: r666020 - /harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp

Author: varlax
Date: Tue Jun 10 02:04:36 2008
New Revision: 666020

URL: http://svn.apache.org/viewvc?rev=666020&view=rev
Log:
Quickfix for logging method with too long signature (met at SPECjvm2008/derby)

Modified:
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp?rev=666020&r1=666019&r2=666020&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp Tue Jun 10 02:04:36 2008
@@ -336,18 +336,18 @@
 
     void replace_class  ()      
     {
-        insert(Str(classname), true);
+        if (classname) insert(Str(classname), true);
     }
 
     void replace_tree   ()      
     {
-        insert(Str(classname), false);
+        if (classname) insert(Str(classname), false);
     }
 
     void replace_method ()      
     {
-        insert(Str(methodname), true);
-        insert(Str(signature), true);
+        if (methodname) insert(Str(methodname), true);
+        if (signature) insert(Str(signature), true);
     }
 
     void replace_seqnb  ()      
@@ -423,7 +423,9 @@
 
 void StrSubstitution::insert (Str s, bool fix)
 {
-    assert(dptr + s.count < dend);
+    bool truncate = !(dptr + s.count < dend);
+    int max_len = truncate ? dend - dptr - 1 : s.count;
+    assert(max_len > 0);
 
     if (s.empty())
     {
@@ -433,7 +435,7 @@
 
     if (fix)
     {
-        for (const char* sptr = s.ptr, * send = s.ptr + s.count; sptr != send;)
+        for (const char* sptr = s.ptr, * send = s.ptr + max_len; sptr != send;)
         {
             char c = *sptr++;
             if (c == '/')
@@ -443,8 +445,8 @@
     }
     else
     {
-        memcpy(dptr, s.ptr, s.count);
-        dptr += s.count;
+        memcpy(dptr, s.ptr, max_len);
+        dptr += max_len;
     }
 }