Index: Source/platform/heap/Visitor.h |
diff --git a/Source/platform/heap/Visitor.h b/Source/platform/heap/Visitor.h |
index d0ec95fb9a7ff8086dd7f1820ceef173c7bf1b6e..e0511aef6949441b6ed38e714feb8a0885cd4f4d 100644 |
--- a/Source/platform/heap/Visitor.h |
+++ b/Source/platform/heap/Visitor.h |
@@ -842,12 +842,10 @@ struct TypenameStringTrait { |
}; |
#endif |
-// s_gcInfoMap is a map used to encode a GCInfo* into a 15 bit integer. |
-// FIXME: Currently we only allow 2^12 types of GCInfos because |
-// s_gcInfoMap[2^15] increases the bss size unacceptably. |
-const size_t gcInfoIndexMax = 1 << 12; |
+// s_gcInfoTable is a map used to encode a GCInfo* into a 15 bit integer. |
+const size_t gcInfoIndexMax = 1 << 15; |
extern PLATFORM_EXPORT int s_gcInfoIndex; |
-extern PLATFORM_EXPORT const GCInfo* s_gcInfoMap[gcInfoIndexMax]; |
+extern PLATFORM_EXPORT GCInfo const** s_gcInfoTable; |
// This macro should be used when returning a unique 15 bit integer |
// for a given gcInfo. |
@@ -855,7 +853,8 @@ extern PLATFORM_EXPORT const GCInfo* s_gcInfoMap[gcInfoIndexMax]; |
static const size_t gcInfoIndex = atomicIncrement(&s_gcInfoIndex); \ |
ASSERT(gcInfoIndex >= 1); \ |
ASSERT(gcInfoIndex < gcInfoIndexMax); \ |
- s_gcInfoMap[gcInfoIndex] = &gcInfo; \ |
+ ASSERT(s_gcInfoTable); \ |
+ s_gcInfoTable[gcInfoIndex] = &gcInfo; \ |
return gcInfoIndex; |
template<typename T> |