blob: 2b9ea54012b598fdfe9f378161366728ed0d220b [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#include "Backend.h"
template<typename TAlloc, typename TPreReservedAlloc>
CodeGenAllocators<TAlloc, TPreReservedAlloc>::CodeGenAllocators(AllocationPolicyManager * policyManager, Js::ScriptContext * scriptContext, ThreadContextInfo * threadContext, CustomHeap::CodePageAllocators<TAlloc, TPreReservedAlloc> * codePageAllocators, HANDLE processHandle)
: pageAllocator(policyManager, Js::Configuration::Global.flags, PageAllocatorType_BGJIT, 0)
, allocator(_u("NativeCode"), &pageAllocator, Js::Throw::OutOfMemory)
, emitBufferManager(&allocator, codePageAllocators, scriptContext, threadContext, _u("JIT code buffer"), processHandle)
#if !TARGET_64 && _CONTROL_FLOW_GUARD
, canCreatePreReservedSegment(false)
#endif
{
}
template<typename TAlloc, typename TPreReservedAlloc>
CodeGenAllocators<TAlloc, TPreReservedAlloc>::~CodeGenAllocators()
{
}
#if DBG
template<typename TAlloc, typename TPreReservedAlloc>
void
CodeGenAllocators<TAlloc, TPreReservedAlloc>::ClearConcurrentThreadId()
{
this->pageAllocator.ClearConcurrentThreadId();
}
#endif
template class CodeGenAllocators<VirtualAllocWrapper, PreReservedVirtualAllocWrapper>;
#if ENABLE_OOP_NATIVE_CODEGEN
template class CodeGenAllocators<SectionAllocWrapper, PreReservedSectionAllocWrapper>;
#endif