]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - assembler/AssemblerBuffer.h
JavaScriptCore-1218.34.tar.gz
[apple/javascriptcore.git] / assembler / AssemblerBuffer.h
index b98503d0876e96bec8181eb9c261eedb07e059c5..d82c0b946930853131043150c3c5fcbe7fb13fb5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2012 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
 
 #if ENABLE(ASSEMBLER)
 
+#include "ExecutableAllocator.h"
+#include "JITCompilationEffort.h"
+#include "VM.h"
 #include "stdint.h"
 #include <string.h>
-#include <jit/ExecutableAllocator.h>
 #include <wtf/Assertions.h>
 #include <wtf/FastMalloc.h>
 #include <wtf/StdLibExtras.h>
@@ -128,29 +130,24 @@ namespace JSC {
             return AssemblerLabel(m_index);
         }
 
-        void* executableCopy(JSGlobalData& globalData, ExecutablePool* allocator)
+        PassRefPtr<ExecutableMemoryHandle> executableCopy(VM& vm, void* ownerUID, JITCompilationEffort effort)
         {
             if (!m_index)
                 return 0;
 
-            void* result = allocator->alloc(globalData, m_index);
+            RefPtr<ExecutableMemoryHandle> result = vm.executableAllocator.allocate(vm, m_index, ownerUID, effort);
 
             if (!result)
                 return 0;
 
-            ExecutableAllocator::makeWritable(result, m_index);
+            ExecutableAllocator::makeWritable(result->start(), result->sizeInBytes());
 
-            return memcpy(result, m_buffer, m_index);
+            memcpy(result->start(), m_buffer, m_index);
+            
+            return result.release();
         }
 
-        void rewindToLabel(AssemblerLabel label)
-        {
-            m_index = label.m_offset;
-        }
-
-#ifndef NDEBUG
         unsigned debugOffset() { return m_index; }
-#endif
 
     protected:
         void append(const char* data, int size)
@@ -171,7 +168,7 @@ namespace JSC {
         }
 
     private:
-        Vector<char, inlineCapacity> m_storage;
+        Vector<char, inlineCapacity, UnsafeVectorOverflow> m_storage;
         char* m_buffer;
         int m_capacity;
         int m_index;