]> git.saurik.com Git - apple/javascriptcore.git/commitdiff
JavaScriptCore-525.tar.gz iphone-31 iphone-311 iphone-312 iphone-313 v525
authorApple <opensource@apple.com>
Wed, 9 Sep 2009 05:23:36 +0000 (05:23 +0000)
committerApple <opensource@apple.com>
Wed, 9 Sep 2009 05:23:36 +0000 (05:23 +0000)
interpreter/Interpreter.cpp
interpreter/Interpreter.h
wtf/Assertions.cpp.rej [deleted file]
wtf/FastMalloc.cpp
wtf/TCSystemAlloc.cpp

index 865e00ac032036b0a628e66238a71b8ac77a32b9..a45773c5d496d8aa2a74f6fe9b34f0e54dba62f5 100644 (file)
@@ -343,7 +343,7 @@ NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction*
     PropertySlot slot(globalObject);
     if (globalObject->getPropertySlot(callFrame, ident, slot)) {
         JSValuePtr result = slot.getValue(callFrame, ident);
-        if (slot.isCacheable() && !globalObject->structure()->isDictionary()) {
+        if (slot.isCacheable() && !globalObject->structure()->isDictionary() && slot.slotBase() == globalObject) {
             if (vPC[4].u.structure)
                 vPC[4].u.structure->deref();
             globalObject->structure()->ref();
@@ -5338,7 +5338,7 @@ JSValueEncodedAsPointer* Interpreter::cti_op_resolve_global(STUB_ARGS)
     PropertySlot slot(globalObject);
     if (globalObject->getPropertySlot(callFrame, ident, slot)) {
         JSValuePtr result = slot.getValue(callFrame, ident);
-        if (slot.isCacheable() && !globalObject->structure()->isDictionary()) {
+        if (slot.isCacheable() && !globalObject->structure()->isDictionary() && slot.slotBase() == globalObject) {
             GlobalResolveInfo& globalResolveInfo = callFrame->codeBlock()->globalResolveInfo(globalResolveInfoIndex);
             if (globalResolveInfo.structure)
                 globalResolveInfo.structure->deref();
index dc467e37dd572560379b5ea79cd0dc654d6f5e16..087be106fa58adb4e4f48ff3596b822fa25f254d 100644 (file)
@@ -107,7 +107,9 @@ namespace JSC {
         WillExecuteStatement
     };
 
-    enum { MaxReentryDepth = 128 };
+    // We use a smaller reentrancy limit on iPhone because of the high amount of
+    // stack space required on the web thread.
+    enum { MaxReentryDepth = 100 };
 
     class Interpreter {
         friend class JIT;
diff --git a/wtf/Assertions.cpp.rej b/wtf/Assertions.cpp.rej
deleted file mode 100644 (file)
index d6043c6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-***************
-*** 63,88 ****
-          CFRelease(str);
-          CFRelease(cfFormat);
-      } else
-- #elif COMPILER(MSVC) && !PLATFORM(WIN_CE)
--     if (IsDebuggerPresent()) {
--         size_t size = 1024;
-- 
--         do {
--             char* buffer = (char*)malloc(size);
-- 
--             if (buffer == NULL)
--                 break;
-- 
--             if (_vsnprintf(buffer, size, format, args) != -1) {
--                 OutputDebugStringA(buffer);
--                 free(buffer);
--                 break;
--             }
-- 
--             free(buffer);
--             size *= 2;
--         } while (size > 1024);
--     }
-      vfprintf(stderr, format, args);
-  }
-  
---- 63,68 ----
-          CFRelease(str);
-          CFRelease(cfFormat);
-      } else
-      vfprintf(stderr, format, args);
-  }
-  
index 468aaac0be9273b357d39c1e4f8fbe16ade73c43..15c42b25a3c368d5c195ae9c06fdb6ea8044dd32 100644 (file)
@@ -82,6 +82,8 @@
 #include <pthread.h>
 #endif
 
+#include <Availability.h>
+
 #ifndef NO_TCMALLOC_SAMPLES
 #ifdef WTF_CHANGES
 #define NO_TCMALLOC_SAMPLES
@@ -3806,7 +3808,8 @@ void* FastMallocZone::zoneRealloc(malloc_zone_t*, void*, size_t)
 
 extern "C" {
 malloc_introspection_t jscore_fastmalloc_introspection = { &FastMallocZone::enumerate, &FastMallocZone::goodSize, &FastMallocZone::check, &FastMallocZone::print,
-    &FastMallocZone::log, &FastMallocZone::forceLock, &FastMallocZone::forceUnlock, &FastMallocZone::statistics };
+    &FastMallocZone::log, &FastMallocZone::forceLock, &FastMallocZone::forceUnlock, &FastMallocZone::statistics
+    };
 }
 
 FastMallocZone::FastMallocZone(TCMalloc_PageHeap* pageHeap, TCMalloc_ThreadCache** threadHeaps, TCMalloc_Central_FreeListPadded* centralCaches)
@@ -3815,6 +3818,7 @@ FastMallocZone::FastMallocZone(TCMalloc_PageHeap* pageHeap, TCMalloc_ThreadCache
     , m_centralCaches(centralCaches)
 {
     memset(&m_zone, 0, sizeof(m_zone));
+    m_zone.version = 4;
     m_zone.zone_name = "JavaScriptCore FastMalloc";
     m_zone.size = &FastMallocZone::size;
     m_zone.malloc = &FastMallocZone::zoneMalloc;
index 1aeb99ef1847fad7fc5d35b6e13fb4d783398ed8..df1aa3333b18807d377c850e65e6e8354ee1a531 100644 (file)
 #define MAP_ANONYMOUS MAP_ANON
 #endif
 
-#if PLATFORM(DARWIN) && defined(VM_MEMORY_TCMALLOC)
-static const int mmapFileDescriptor = VM_MAKE_TAG(VM_MEMORY_TCMALLOC);
-#else
-static const int mmapFileDescriptor = -1;
-#endif
-
 // Structure for discovering alignment
 union MemoryAligner {
   void*  p;
@@ -178,7 +172,7 @@ static void* TryMmap(size_t size, size_t *actual_size, size_t alignment) {
   void* result = mmap(NULL, size + extra,
                       PROT_READ | PROT_WRITE,
                       MAP_PRIVATE|MAP_ANONYMOUS,
-                      mmapFileDescriptor, 0);
+                      -1, 0);
   if (result == reinterpret_cast<void*>(MAP_FAILED)) {
     mmap_failure = true;
     return NULL;
@@ -430,7 +424,7 @@ void TCMalloc_SystemRelease(void* start, size_t length)
 #endif
 
 #if HAVE(MMAP)
-  void* newAddress = mmap(start, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, mmapFileDescriptor, 0);
+  void* newAddress = mmap(start, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
   // If the mmap failed then that's ok, we just won't return the memory to the system.
   ASSERT_UNUSED(newAddress, newAddress == start || newAddress == reinterpret_cast<void*>(MAP_FAILED));
   return;