Allocate space for lvaTrackedToVarNum on demand
authorMike Danes <onemihaid@hotmail.com>
Sat, 16 Jun 2018 12:53:38 +0000 (15:53 +0300)
committerMike Danes <onemihaid@hotmail.com>
Sat, 30 Jun 2018 19:31:17 +0000 (22:31 +0300)
Compiler::lvaTrackedToVarNum requires 2 kbytes and it's not used when the compiler object is used for inlining.

src/jit/compiler.h
src/jit/lclvars.cpp

index fbcee50fdc172d6dc8c82c3f84e961429a9cd86c..9bd55a8c5c52ce7902166a31a0a03a22d3baae5c 100644 (file)
@@ -2546,7 +2546,7 @@ public:
     }
 
     // reverse map of tracked number to var number
-    unsigned lvaTrackedToVarNum[lclMAX_TRACKED];
+    unsigned* lvaTrackedToVarNum;
 
 #if DOUBLE_ALIGN
 #ifdef DEBUG
index 0e141fe54901ed8079ddcfd517960d3996f7a2a0..430dd7db48a9a80e6e0004f18ab7e45d40b24165 100644 (file)
@@ -40,6 +40,8 @@ void Compiler::lvaInit()
 
     lvaGenericsContextUseCount = 0;
 
+    lvaTrackedToVarNum = nullptr;
+
     lvaSortAgain    = false; // false: We don't need to call lvaSortOnly()
     lvaTrackedFixed = false; // false: We can still add new tracked variables
 
@@ -3508,9 +3510,14 @@ void Compiler::lvaSortByRefCount()
         }
     }
 
+    if (lvaTrackedToVarNum == nullptr)
+    {
+        lvaTrackedToVarNum = static_cast<unsigned*>(compGetMemArray(lclMAX_TRACKED, sizeof(unsigned), CMK_LvaTable));
+    }
+
 #ifdef DEBUG
     // Re-Initialize to -1 for safety in debug build.
-    memset(lvaTrackedToVarNum, -1, sizeof(lvaTrackedToVarNum));
+    memset(lvaTrackedToVarNum, -1, lclMAX_TRACKED);
 #endif
 
     /* Assign indices to all the variables we've decided to track */