Skip to content
This repository has been archived by the owner on Oct 15, 2020. It is now read-only.

Commit

Permalink
[Merge chakra-core/ChakraCore@4c2e0f3d68] [MERGE #4195 @boingoing] Me…
Browse files Browse the repository at this point in the history
…rge unreleased/rs3 to release/1.7

Merge pull request #4195 from boingoing:mergeback_rs3_17
  • Loading branch information
chakrabot committed Nov 11, 2017
1 parent 9f473d4 commit ea40e0b
Show file tree
Hide file tree
Showing 118 changed files with 2,143 additions and 1,257 deletions.
6 changes: 6 additions & 0 deletions deps/chakrashim/core/.gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,9 @@
test/**/*.js -crlf
test/es6/HTMLComments.js binary diff=cpp
*.wasm binary
*.cpp text eol=lf diff=cpp
*.h text eol=lf diff=cpp
*.inl text eol=lf diff=cpp
*.vcproj text eol=crlf diff=xml
*.vcxproj text eol=crlf diff=xml
*.sln text eol=crlf diff=xml
14 changes: 14 additions & 0 deletions deps/chakrashim/core/Build/Common.Build.ProjectConfiguration.props
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,19 @@
<Platform>ARM</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|CHPE">
<Configuration>Debug</Configuration>
<Platform>CHPE</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Test|CHPE">
<Configuration>Test</Configuration>
<Platform>CHPE</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|CHPE">
<Configuration>Release</Configuration>
<Platform>CHPE</Platform>
</ProjectConfiguration>
</ItemGroup>
</Project>

10 changes: 5 additions & 5 deletions deps/chakrashim/core/Build/Common.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
<!-- ======== sources.inc ======== -->
<!-- generates SAL annotations for our interface -->
<AdditionalOptions>%(AdditionalOptions) -sal_local</AdditionalOptions>

<PreprocessorDefinitions>%(PreprocessorDefinitions);WINVER=$(Win32_WinNTVersion)</PreprocessorDefinitions>
</Midl>
<ClCompile>
Expand All @@ -54,11 +53,11 @@
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<!-- /Zi -->
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat Condition="'$(MultiProcessorCompilation)' == 'true'">OldStyle</DebugInformationFormat>
<DebugInformationFormat Condition="'%(MultiProcessorCompilation)' == 'true'">OldStyle</DebugInformationFormat>
<!-- /EHsc- -->
<ExceptionHandling>SyncCThrow</ExceptionHandling>
<!-- /Gz -->
<CallingConvention Condition="'$(Platform)'=='Win32'">StdCall</CallingConvention>
<CallingConvention Condition="'$(Platform)'=='Win32' or '$(Platform)'=='chpe'">StdCall</CallingConvention>
<!-- /Zp8 -->
<StructMemberAlignment>8Bytes</StructMemberAlignment>
<!-- /GS -->
Expand Down Expand Up @@ -132,7 +131,8 @@
<ItemDefinitionGroup Condition="'$(OptimizedBuild)'=='true' AND '$(ENABLE_CODECOVERAGE)'!='true'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<WholeProgramOptimization>true</WholeProgramOptimization>
<!-- HYB-TODO: When a CHPE toolchain arrives that supports LTCG, remove this condition. -->
<WholeProgramOptimization Condition="'$(Platform)' != 'chpe'">true</WholeProgramOptimization>
</ClCompile>
</ItemDefinitionGroup>

Expand Down Expand Up @@ -162,7 +162,7 @@
<LinkTimeCodeGeneration Condition="'$(PlatformToolset)'!='v120' AND '$(TF_BUILD)'==''">UseFastLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<Lib>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
<LinkTimeCodeGeneration Condition="'$(Platform)' != 'chpe'">true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemGroup Condition="'$(ConfigurationType)'=='DynamicLibrary' OR '$(ConfigurationType)'=='Application'">
Expand Down
2 changes: 1 addition & 1 deletion deps/chakrashim/core/bin/GCStress/GCStress.vcxproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Condition="'$(ChakraBuildPathImported)'!='true'" Project="$(SolutionDir)Chakra.Build.Paths.props" />
<Import Project="$(BuildConfigPropsPath)Chakra.Build.ProjectConfiguration.props" />
Expand Down
8 changes: 1 addition & 7 deletions deps/chakrashim/core/bin/GCStress/StubExternalApi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,10 +112,4 @@ HRESULT MemProtectHeapSynchronizeWithCollector(void * heapHandle) { return E_NOT
void MemProtectHeapSetDisableConcurrentThreadExitedCheck(void * heapHandle) {};
#endif

#if DBG && defined(RECYCLER_VERIFY_MARK)
bool IsLikelyRuntimeFalseReference(char* objectStartAddress, size_t offset,
const char* typeName)
{
return false;
}
#endif
IMPLEMENT_STUB_IsLikelyRuntimeFalseReference()
12 changes: 6 additions & 6 deletions deps/chakrashim/core/bin/NativeTests/MemoryPolicyTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,20 +79,20 @@ namespace MemoryPolicyTests

TEST_CASE("MemoryPolicyTest_UnboundedMemory", "[MemoryPolicyTest]")
{
BasicTest(JsRuntimeAttributeNone, "UnboundedMemory.js");
BasicTest(JsRuntimeAttributeDisableBackgroundWork, "UnboundedMemory.js");
BasicTest(JsRuntimeAttributeDisableFatalOnOOM, "UnboundedMemory.js");
BasicTest((JsRuntimeAttributes)(JsRuntimeAttributeDisableBackgroundWork | JsRuntimeAttributeDisableFatalOnOOM), "UnboundedMemory.js");
}

TEST_CASE("MemoryPolicyTest_ArrayTest", "[MemoryPolicyTest]")
{
BasicTest(JsRuntimeAttributeNone, "arrayTest.js");
BasicTest(JsRuntimeAttributeDisableBackgroundWork, "arrayTest.js");
BasicTest(JsRuntimeAttributeDisableFatalOnOOM, "arrayTest.js");
BasicTest((JsRuntimeAttributes)(JsRuntimeAttributeDisableBackgroundWork | JsRuntimeAttributeDisableFatalOnOOM), "arrayTest.js");
}

TEST_CASE("MemoryPolicyTest_ArrayBuffer", "[MemoryPolicyTest]")
{
BasicTest(JsRuntimeAttributeNone, "arraybuffer.js");
BasicTest(JsRuntimeAttributeDisableBackgroundWork, "arraybuffer.js");
BasicTest(JsRuntimeAttributeDisableFatalOnOOM, "arraybuffer.js");
BasicTest((JsRuntimeAttributes)(JsRuntimeAttributeDisableBackgroundWork | JsRuntimeAttributeDisableFatalOnOOM), "arraybuffer.js");
}

void OOSTest(JsRuntimeAttributes attributes)
Expand Down
2 changes: 1 addition & 1 deletion deps/chakrashim/core/jenkins/check_eol.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ fi
ERRFILE=check_eol.sh.err
rm -f $ERRFILE

git diff --name-only `git merge-base origin/master HEAD` HEAD | grep -v -E "(test/.*\\.js|\\.cmd|\\.baseline|\\.wasm)" | xargs -I % ./jenkins/check_file_eol.sh %
git diff --name-only `git merge-base origin/master HEAD` HEAD | grep -v -E "(test/.*\\.js|\\.cmd|\\.baseline|\\.wasm|\\.vcxproj|\\.vcproj|\\.sln)" | xargs -I % ./jenkins/check_file_eol.sh %

if [ -e $ERRFILE ]; then # if error file exists then there were errors
>&2 echo "--------------" # leading >&2 means echo to stderr
Expand Down
5 changes: 4 additions & 1 deletion deps/chakrashim/core/lib/Backend/BailOut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1228,6 +1228,10 @@ BailOutRecord::BailOutFromLoopBodyInlinedCommon(Js::JavascriptCallStackLayout *
uint32 bailOutOffset, void * returnAddress, IR::BailOutKind bailOutKind, Js::Var branchValue)
{
Assert(bailOutRecord->parent != nullptr);
// This isn't strictly necessary if there's no allocations on this path, but because such an
// issue would be hard to notice and introduce some significant issues, we can do this copy.
// The problem from not doing this and then doing an allocation before RestoreValues is that
// the GC doesn't check the BailOutRegisterSaveSpace.
Js::Var registerSaves[BailOutRegisterSaveSlotCount];
js_memcpy_s(registerSaves, sizeof(registerSaves), (Js::Var *)layout->functionObject->GetScriptContext()->GetThreadContext()->GetBailOutRegisterSaveSpace(),
sizeof(registerSaves));
Expand Down Expand Up @@ -2951,7 +2955,6 @@ void GlobalBailOutRecordDataTable::AddOrUpdateRow(JitArenaAllocator *allocator,
if(rowToUpdate->offset == offset &&
rowToUpdate->isInt == (unsigned)isInt &&
rowToUpdate->isFloat == (unsigned)isFloat &&

#ifdef ENABLE_SIMDJS
// SIMD_JS
rowToUpdate->isSimd128F4 == (unsigned) isSimd128F4 &&
Expand Down
2 changes: 1 addition & 1 deletion deps/chakrashim/core/lib/Backend/Func.h
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,7 @@ static const unsigned __int64 c_debugFillPattern8 = 0xcececececececece;
bool hasThrow : 1;
bool hasUnoptimizedArgumentsAccess : 1; // True if there are any arguments access beyond the simple case of this.apply pattern
bool m_canDoInlineArgsOpt : 1;
bool applyTargetInliningRemovedArgumentsAccess :1;
bool applyTargetInliningRemovedArgumentsAccess : 1;
bool isGetterSetter : 1;
const bool isInlinedConstructor: 1;
bool hasImplicitCalls: 1;
Expand Down
1 change: 1 addition & 0 deletions deps/chakrashim/core/lib/Backend/GlobOpt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14702,6 +14702,7 @@ GlobOpt::OptArraySrc(IR::Instr * *const instrRef)
IR::Opnd* lowerBound = baseOwnerIndir->GetIndexOpnd()
? static_cast<IR::Opnd *>(baseOwnerIndir->GetIndexOpnd())
: IR::IntConstOpnd::New(baseOwnerIndir->GetOffset(), TyInt32, instr->m_func);

lowerBound->SetIsJITOptimizedReg(true);
IR::Opnd* upperBound = IR::RegOpnd::New(headSegmentLengthSym, headSegmentLengthSym->GetType(), instr->m_func);
upperBound->SetIsJITOptimizedReg(true);
Expand Down
19 changes: 11 additions & 8 deletions deps/chakrashim/core/lib/Backend/GlobOptBlockData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1052,18 +1052,18 @@ GlobOptBlockData::MergeValueInfo(
ValueInfo *const toDataValueInfo = toDataVal->GetValueInfo();
ValueInfo *const fromDataValueInfo = fromDataVal->GetValueInfo();

// Same value
if (toDataValueInfo == fromDataValueInfo)
{
return toDataValueInfo;
}

if (toDataValueInfo->IsJsType() || fromDataValueInfo->IsJsType())
{
Assert(toDataValueInfo->IsJsType() && fromDataValueInfo->IsJsType());
return this->MergeJsTypeValueInfo(toDataValueInfo->AsJsType(), fromDataValueInfo->AsJsType(), isLoopBackEdge, sameValueNumber);
}

// Same value
if (toDataValueInfo == fromDataValueInfo)
{
return toDataValueInfo;
}

ValueType newValueType(toDataValueInfo->Type().Merge(fromDataValueInfo->Type()));
if (newValueType.IsLikelyInt())
{
Expand Down Expand Up @@ -1118,8 +1118,6 @@ GlobOptBlockData::MergeValueInfo(
JsTypeValueInfo*
GlobOptBlockData::MergeJsTypeValueInfo(JsTypeValueInfo * toValueInfo, JsTypeValueInfo * fromValueInfo, bool isLoopBackEdge, bool sameValueNumber)
{
Assert(toValueInfo != fromValueInfo);

// On loop back edges we must be conservative and only consider type values which are invariant throughout the loop.
// That's because in dead store pass we can't correctly track object pointer assignments (o = p), and we may not
// be able to register correct type checks for the right properties upstream. If we ever figure out how to enhance
Expand All @@ -1129,6 +1127,11 @@ GlobOptBlockData::MergeJsTypeValueInfo(JsTypeValueInfo * toValueInfo, JsTypeValu
return nullptr;
}

if (toValueInfo == fromValueInfo)
{
return toValueInfo;
}

const JITTypeHolder toType = toValueInfo->GetJsType();
const JITTypeHolder fromType = fromValueInfo->GetJsType();
const JITTypeHolder mergedType = toType == fromType ? toType : JITTypeHolder(nullptr);
Expand Down
1 change: 0 additions & 1 deletion deps/chakrashim/core/lib/Backend/IR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4639,4 +4639,3 @@ Instr::DumpRange(Instr *instrEnd)
#endif

} // namespace IR

3 changes: 2 additions & 1 deletion deps/chakrashim/core/lib/Backend/IR.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,8 @@ class Instr
ignoreOverflowBitCount(32),
isCtorCall(false),
isCallInstrProtectedByNoProfileBailout(false),
hasSideEffects(false)
hasSideEffects(false),
isNonFastPathFrameDisplay(false)
{
}
public:
Expand Down
2 changes: 1 addition & 1 deletion deps/chakrashim/core/lib/Backend/IRBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#pragma prefast(disable:28652, "Prefast complains that the OR are causing the compiler to emit dynamic initializers and the variable to be allocated in read/write mem...")

static const IR::BailOutKind c_debuggerBailOutKindForCall =
IR::BailOutForceByFlag | IR::BailOutStackFrameBase | IR::BailOutBreakPointInFunction | IR::BailOutLocalValueChanged | IR::BailOutIgnoreException;
IR::BailOutForceByFlag | IR::BailOutStackFrameBase | IR::BailOutBreakPointInFunction | IR::BailOutLocalValueChanged | IR::BailOutIgnoreException | IR::BailOutStep;
static const IR::BailOutKind c_debuggerBaseBailOutKindForHelper = IR::BailOutIgnoreException | IR::BailOutForceByFlag;

#pragma prefast(pop)
Expand Down
13 changes: 8 additions & 5 deletions deps/chakrashim/core/lib/Backend/IRBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,20 +87,23 @@ class IRBuilder
{
auto loopCount = func->GetJITFunctionBody()->GetLoopCount();
if (loopCount > 0) {
m_saveLoopImplicitCallFlags = (IR::Opnd**)func->m_alloc->Alloc(sizeof(IR::Opnd*) * loopCount);
#if DBG
memset(m_saveLoopImplicitCallFlags, 0, sizeof(IR::Opnd*) * loopCount);
m_saveLoopImplicitCallFlags = AnewArrayZ(func->m_alloc, IR::Opnd*, loopCount);
#else
m_saveLoopImplicitCallFlags = AnewArray(func->m_alloc, IR::Opnd*, loopCount);
#endif
}

// Note: use original byte code without debugging probes, so that we don't jit BPs inserted by the user.
func->m_workItem->InitializeReader(&m_jnReader, &m_statementReader, func->m_alloc);
};

~IRBuilder() {
~IRBuilder()
{
Assert(m_func->GetJITFunctionBody()->GetLoopCount() == 0 || m_saveLoopImplicitCallFlags);
if (m_saveLoopImplicitCallFlags) {
m_func->m_alloc->Free(m_saveLoopImplicitCallFlags, sizeof(IR::Opnd*) * m_func->GetJITFunctionBody()->GetLoopCount());
if (m_saveLoopImplicitCallFlags)
{
AdeleteArray(m_func->m_alloc, m_func->GetJITFunctionBody()->GetLoopCount(), m_saveLoopImplicitCallFlags);
}
}

Expand Down
4 changes: 2 additions & 2 deletions deps/chakrashim/core/lib/Backend/Inline.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1716,7 +1716,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function
else
{
// We patch later for constructor inlining.
Assert(
AssertOrFailFast(
callInstr->m_opcode == Js::OpCode::NewScObject ||
callInstr->m_opcode == Js::OpCode::NewScObjArray);
}
Expand Down Expand Up @@ -3759,7 +3759,7 @@ void Inline::InlineDOMGetterSetterFunction(IR::Instr *ldFldInstr, const Function
// type-specific optimizations. Otherwise, this optimization to reduce calls into the host will also
// result in relatively more expensive calls in the runtime.
tmpDst->SetValueType(ldFldInstr->GetDst()->GetValueType());

IR::Opnd * callInstrDst = ldFldInstr->UnlinkDst();
ldFldInstr->SetDst(tmpDst);

Expand Down
14 changes: 7 additions & 7 deletions deps/chakrashim/core/lib/Backend/InterpreterThunkEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const BYTE InterpreterThunkEmitter::StackAllocSize = 0x28;
// Hence, we allocate 0x28 bytes of stack space for the callee to use. The callee uses 8 bytes to push the first
// argument and the rest 0x20 ensures alignment is correct.
//
const BYTE InterpreterThunkEmitter::InterpreterThunk[] = {
const BYTE InterpreterThunkEmitter::InterpreterThunk[INTERPRETER_THUNK_SIZE] = {
0x48, 0x89, 0x54, 0x24, 0x10, // mov qword ptr [rsp+10h],rdx
0x48, 0x89, 0x4C, 0x24, 0x08, // mov qword ptr [rsp+8],rcx
0x4C, 0x89, 0x44, 0x24, 0x18, // mov qword ptr [rsp+18h],r8
Expand Down Expand Up @@ -69,7 +69,7 @@ const BYTE InterpreterThunkEmitter::ThunkAddressOffset = 61;
const BYTE InterpreterThunkEmitter::PrologSize = 60;
const BYTE InterpreterThunkEmitter::StackAllocSize = 0x0;

const BYTE InterpreterThunkEmitter::InterpreterThunk[] = {
const BYTE InterpreterThunkEmitter::InterpreterThunk[INTERPRETER_THUNK_SIZE] = {
0x55, // push rbp // Prolog - setup the stack frame
0x48, 0x89, 0xe5, // mov rbp, rsp
0x48, 0x8b, 0x47, 0x00, // mov rax, qword ptr [rdi + FunctionInfoOffset]
Expand Down Expand Up @@ -106,7 +106,7 @@ const BYTE InterpreterThunkEmitter::CallBlockStartAddressInstrOffset = 42;
const BYTE InterpreterThunkEmitter::CallThunkSizeInstrOffset = 54;
const BYTE InterpreterThunkEmitter::ErrorOffset = 64;

const BYTE InterpreterThunkEmitter::InterpreterThunk[] = {
const BYTE InterpreterThunkEmitter::InterpreterThunk[INTERPRETER_THUNK_SIZE] = {
0x0F, 0xB4, // push {r0-r3}
0x2D, 0xE9, 0x00, 0x48, // push {r11,lr}
0xEB, 0x46, // mov r11,sp
Expand Down Expand Up @@ -152,7 +152,7 @@ const BYTE InterpreterThunkEmitter::DynamicThunkAddressOffset = 32;
const BYTE InterpreterThunkEmitter::ThunkAddressOffset = 36;

//TODO: saravind :Implement Range Check for ARM64
const BYTE InterpreterThunkEmitter::InterpreterThunk[] = {
const BYTE InterpreterThunkEmitter::InterpreterThunk[INTERPRETER_THUNK_SIZE] = {
0xFD, 0x7B, 0xBB, 0xA9, //stp fp, lr, [sp, #-80]! ;Prologue
0xFD, 0x03, 0x00, 0x91, //mov fp, sp ;update frame pointer to the stack pointer
0xE0, 0x07, 0x01, 0xA9, //stp x0, x1, [sp, #16] ;Prologue again; save all registers
Expand Down Expand Up @@ -191,7 +191,7 @@ const BYTE InterpreterThunkEmitter::ThunkSizeOffset = 26;
const BYTE InterpreterThunkEmitter::ErrorOffset = 33;
const BYTE InterpreterThunkEmitter::ThunkAddressOffset = 44;

const BYTE InterpreterThunkEmitter::InterpreterThunk[] = {
const BYTE InterpreterThunkEmitter::InterpreterThunk[INTERPRETER_THUNK_SIZE] = {
0x55, // push ebp ;Prolog - setup the stack frame
0x8B, 0xEC, // mov ebp,esp
0x8B, 0x45, 0x08, // mov eax, dword ptr [ebp+8]
Expand Down Expand Up @@ -547,7 +547,7 @@ void InterpreterThunkEmitter::EncodeInterpreterThunk(
__in const DWORD epilogSize,
__in const intptr_t interpreterThunk)
{
_Analysis_assume_(thunkSize == HeaderSize());
_Analysis_assume_(thunkSize == INTERPRETER_THUNK_SIZE);
// Encode MOVW
DWORD lowerThunkBits = (uint32)interpreterThunk & 0x0000FFFF;
DWORD movW = EncodeMove(/*Opcode*/ 0x0000F240, /*register*/1, lowerThunkBits);
Expand Down Expand Up @@ -621,7 +621,7 @@ void InterpreterThunkEmitter::EncodeInterpreterThunk(
{
int addrOffset = ThunkAddressOffset;

_Analysis_assume_(thunkSize == HeaderSize());
_Analysis_assume_(thunkSize == INTERPRETER_THUNK_SIZE);
AssertMsg(thunkSize == HeaderSize(), "Mismatch in the size of the InterpreterHeaderThunk and the thunkSize used in this API (EncodeInterpreterThunk)");

// Following 4 MOV Instrs are to move the 64-bit address of the InterpreterThunk address into register x1.
Expand Down
15 changes: 14 additions & 1 deletion deps/chakrashim/core/lib/Backend/InterpreterThunkEmitter.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,20 @@ class InterpreterThunkEmitter
static const BYTE CallBlockStartAddressInstrOffset;
static const BYTE CallThunkSizeInstrOffset;
#endif
static const BYTE InterpreterThunk[];
#ifdef _M_X64
#ifdef _WIN32
#define INTERPRETER_THUNK_SIZE 96
#else // Sys V AMD64
#define INTERPRETER_THUNK_SIZE 72
#endif
#elif defined(_M_ARM)
#define INTERPRETER_THUNK_SIZE 72
#elif defined(_M_ARM64)
#define INTERPRETER_THUNK_SIZE 60
#else
#define INTERPRETER_THUNK_SIZE 56
#endif
static const BYTE InterpreterThunk[INTERPRETER_THUNK_SIZE];

// Call buffer includes a call to the inner interpreter thunk and eventual jump to the epilog
static const BYTE JmpOffset;
Expand Down
2 changes: 1 addition & 1 deletion deps/chakrashim/core/lib/Backend/JnHelperMethod.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
extern "C"
{
#ifdef _M_IX86
void __cdecl _chkstk(int);
DECLSPEC_CHPE_GUEST void __cdecl _chkstk(int);
#else
void __cdecl __chkstk(int);
#endif
Expand Down
3 changes: 1 addition & 2 deletions deps/chakrashim/core/lib/Backend/LinearScan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,11 +222,10 @@ LinearScan::RegAlloc()
}

this->SetSrcRegs(instr);
this->EndDeadLifetimes(instr);

this->CheckOpHelper(instr);

this->EndDeadLifetimes(instr);

this->KillImplicitRegs(instr);

this->AllocateNewLifetimes(instr);
Expand Down
Loading

0 comments on commit ea40e0b

Please sign in to comment.