Sync SYSTEM_MALLOC implementation of Gigacage
authordon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 Sep 2017 17:37:33 +0000 (17:37 +0000)
committerdon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 Sep 2017 17:37:33 +0000 (17:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=177569

Reviewed by Mark Lam.

* wtf/Gigacage.h:
(Gigacage::basePtr):
(Gigacage::basePtrs):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@222615 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/Gigacage.h

index 4c48a30..6916c7d 100644 (file)
@@ -1,3 +1,14 @@
+2017-09-28  Don Olmstead  <don.olmstead@sony.com>
+
+        Sync SYSTEM_MALLOC implementation of Gigacage
+        https://bugs.webkit.org/show_bug.cgi?id=177569
+
+        Reviewed by Mark Lam.
+
+        * wtf/Gigacage.h:
+        (Gigacage::basePtr):
+        (Gigacage::basePtrs):
+
 2017-09-27  Per Arne Vollan  <pvollan@apple.com>
 
         [Win64] Compile error, 'BasePtrs' is undefined.
index d5e094c..ce84e32 100644 (file)
 #define GIGACAGE_ENABLED 0
 #define PRIMITIVE_GIGACAGE_MASK 0
 #define JSVALUE_GIGACAGE_MASK 0
+#define GIGACAGE_BASE_PTRS_SIZE 8192
 
 extern "C" {
-extern WTF_EXPORTDATA void* g_gigacageBasePtr;
+extern WTF_EXPORTDATA char g_gigacageBasePtrs[GIGACAGE_BASE_PTRS_SIZE];
 }
 
 namespace Gigacage {
@@ -77,9 +78,23 @@ ALWAYS_INLINE const char* name(Kind kind)
     return nullptr;
 }
 
-ALWAYS_INLINE void*& basePtr(Kind)
+ALWAYS_INLINE void*& basePtr(BasePtrs& basePtrs, Kind kind)
 {
-    return g_gigacageBasePtr;
+    switch (kind) {
+    case Primitive:
+        return basePtrs.primitive;
+    case JSValue:
+        return basePtrs.jsValue;
+    case String:
+        return basePtrs.string;
+    }
+    RELEASE_ASSERT_NOT_REACHED();
+    return basePtrs.primitive;
+}
+
+ALWAYS_INLINE BasePtrs& basePtrs()
+{
+    return *reinterpret_cast<BasePtrs*>(g_gigacageBasePtrs);
 }
 
 ALWAYS_INLINE size_t mask(Kind) { return 0; }