diff gen/arrays.cpp @ 622:26fce59fe80a

Wrapped all the most potentially expensive logging calls in a conditional to only do work when actually requested. Commented some logging calls that could potentially write out many megabytes of type dumps.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 01 Oct 2008 18:32:31 +0200
parents 83ca663ecc20
children df196c8dea26
line wrap: on
line diff
--- a/gen/arrays.cpp	Sun Sep 28 21:09:21 2008 +0200
+++ b/gen/arrays.cpp	Wed Oct 01 18:32:31 2008 +0200
@@ -85,7 +85,8 @@
     }
     else
     {
-        Logger::cout() << "array assignment type dont match: " << *dst->getType() << "\n\n" << *src->getType() << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "array assignment type dont match: " << *dst->getType() << "\n\n" << *src->getType() << '\n';
         const LLArrayType* arrty = isaArray(src->getType()->getContainedType(0));
         if (!arrty)
         {
@@ -234,7 +235,8 @@
 
     LLFunction* fn = LLVM_D_GetRuntimeFunction(gIR->module, funcname);
     assert(fn);
-    Logger::cout() << "calling array init function: " << *fn <<'\n';
+    if (Logger::enabled())
+        Logger::cout() << "calling array init function: " << *fn <<'\n';
     CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end());
     call->setCallingConv(llvm::CallingConv::C);
 }
@@ -335,7 +337,8 @@
         assert(v);
 
         inits[i] = v;
-        Logger::cout() << "llval: " << *v << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "llval: " << *v << '\n';
     }
 
     Logger::println("building constant array");
@@ -426,7 +429,8 @@
     if (newptr->getType() != dstType)
         newptr = DtoBitCast(newptr, dstType, ".gc_mem");
 
-    Logger::cout() << "final ptr = " << *newptr << '\n';
+    if (Logger::enabled())
+        Logger::cout() << "final ptr = " << *newptr << '\n';
 
     return new DSliceValue(arrayType, arrayLen, newptr);
 }
@@ -468,7 +472,8 @@
     if (newptr->getType() != dstType)
         newptr = DtoBitCast(newptr, dstType, ".gc_mem");
 
-    Logger::cout() << "final ptr = " << *newptr << '\n';
+    if (Logger::enabled())
+        Logger::cout() << "final ptr = " << *newptr << '\n';
 
     assert(firstDim);
     return new DSliceValue(arrayType, firstDim, newptr);
@@ -497,7 +502,8 @@
     args.push_back(DtoArrayLen(array));
 
     LLValue* arrPtr = DtoArrayPtr(array);
-    Logger::cout() << "arrPtr = " << *arrPtr << '\n';
+    if (Logger::enabled())
+        Logger::cout() << "arrPtr = " << *arrPtr << '\n';
     args.push_back(DtoBitCast(arrPtr, fn->getFunctionType()->getParamType(3), "tmp"));
 
     LLValue* newptr = gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), ".gc_mem")->get();
@@ -726,9 +732,12 @@
     const LLType* pt = fn->getFunctionType()->getParamType(0);
 
     LLSmallVector<LLValue*, 3> args;
-    Logger::cout() << "bitcasting to " << *pt << '\n';
-    Logger::cout() << *lmem << '\n';
-    Logger::cout() << *rmem << '\n';
+    if (Logger::enabled())
+    {
+        Logger::cout() << "bitcasting to " << *pt << '\n';
+        Logger::cout() << *lmem << '\n';
+        Logger::cout() << *rmem << '\n';
+    }
     args.push_back(DtoBitCast(lmem,pt));
     args.push_back(DtoBitCast(rmem,pt));
 
@@ -738,7 +747,9 @@
         LLValue* tival = DtoTypeInfoOf(t);
         // DtoTypeInfoOf only does declare, not enough in this case :/
         DtoForceConstInitDsymbol(t->vtinfo);
-        Logger::cout() << "typeinfo decl: " << *tival << '\n';
+
+        if (Logger::enabled())
+            Logger::cout() << "typeinfo decl: " << *tival << '\n';
 
         pt = fn->getFunctionType()->getParamType(2);
         args.push_back(DtoBitCast(tival, pt));
@@ -957,22 +968,29 @@
     LLValue* rval2;
     bool isslice = false;
 
-    Logger::cout() << "from array or sarray" << '\n';
+    if (Logger::enabled())
+        Logger::cout() << "from array or sarray" << '\n';
+
     if (totype->ty == Tpointer) {
-        Logger::cout() << "to pointer" << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "to pointer" << '\n';
         rval = DtoArrayPtr(u);
         if (rval->getType() != tolltype)
             rval = gIR->ir->CreateBitCast(rval, tolltype, "tmp");
     }
     else if (totype->ty == Tarray) {
-        Logger::cout() << "to array" << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "to array" << '\n';
 
         const LLType* ptrty = DtoArrayType(totype)->getContainedType(1);
         const LLType* ety = DtoTypeNotVoid(fromtype->next);
 
         if (DSliceValue* usl = u->isSlice()) {
-            Logger::println("from slice");
-            Logger::cout() << "from: " << *usl->ptr << " to: " << *ptrty << '\n';
+            if (Logger::enabled())
+            {
+                Logger::println("from slice");
+                Logger::cout() << "from: " << *usl->ptr << " to: " << *ptrty << '\n';
+            }
             rval = DtoBitCast(usl->ptr, ptrty);
             if (fromtype->next->size() == totype->next->size())
                 rval2 = DtoArrayLen(usl);
@@ -982,7 +1000,8 @@
         else {
             LLValue* uval = u->getRVal();
             if (fromtype->ty == Tsarray) {
-                Logger::cout() << "uvalTy = " << *uval->getType() << '\n';
+                if (Logger::enabled())
+                    Logger::cout() << "uvalTy = " << *uval->getType() << '\n';
                 assert(isaPointer(uval->getType()));
                 const LLArrayType* arrty = isaArray(uval->getType()->getContainedType(0));
 
@@ -1012,7 +1031,8 @@
         isslice = true;
     }
     else if (totype->ty == Tsarray) {
-        Logger::cout() << "to sarray" << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "to sarray" << '\n';
         assert(0);
     }
     else {