/*
- * 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>
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)
}
private:
- Vector<char, inlineCapacity> m_storage;
+ Vector<char, inlineCapacity, UnsafeVectorOverflow> m_storage;
char* m_buffer;
int m_capacity;
int m_index;