[llvm-commits] [llvm] r56845 - /llvm/branches/ggreif/use-diet/lib/VMCore/getValue.cpp

Gabor Greif ggreif at gmail.com
Tue Sep 30 08:25:38 PDT 2008


Author: ggreif
Date: Tue Sep 30 10:25:35 2008
New Revision: 56845

URL: http://llvm.org/viewvc/llvm-project?rev=56845&view=rev
Log:
fix a scenario where waymarks could be placed,
but haven't been

Modified:
    llvm/branches/ggreif/use-diet/lib/VMCore/getValue.cpp

Modified: llvm/branches/ggreif/use-diet/lib/VMCore/getValue.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/ggreif/use-diet/lib/VMCore/getValue.cpp?rev=56845&r1=56844&r2=56845&view=diff

==============================================================================
--- llvm/branches/ggreif/use-diet/lib/VMCore/getValue.cpp (original)
+++ llvm/branches/ggreif/use-diet/lib/VMCore/getValue.cpp Tue Sep 30 10:25:35 2008
@@ -122,11 +122,16 @@
         // try to pick up exactly requiredSteps digits
         int digits = requiredSteps;
         Acc = 0;
+	Use* Tagspace = 0;
+        Use* OrigTagspace(Next);
 
         while (1) {
-            if (!digits)
+	    if (!digits) {
+	        if (Tagspace && Cushion <= -requiredSteps) {
+		    repaintByCopying(Tagspace, OrigTagspace);
+	        }
                 return reinterpret_cast<Value*>(Acc << spareBits);
-
+	    }
             Next = Next->Next;
             __builtin_prefetch(Next);
             --Cushion;
@@ -146,6 +151,10 @@
                     goto efficiency;
                 }
                 default:
+		    if (digits == requiredSteps /*!Tagspace*/) {
+		        Tagspace = OrigTagspace;
+			OrigTagspace = (Use*)stripTag<Use::tagMask>(U->Prev);
+		    }
                     --digits;
                     Acc = (Acc << 1) | (Tag & 1);
                     if (Cushion <= 0) {





More information about the llvm-commits mailing list