Skip to content

Commit 8d56262

Browse files
committed
[MERGE #1604 @leirocks] fix pinning number chunks for in-proc JIT
Merge pull request #1604 from leirocks:inprocnumber
2 parents b45eaf8 + fb128e5 commit 8d56262

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

lib/Backend/JITOutput.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,10 @@ JITOutput::FinalizeNativeCode(Func *func, EmitBufferAllocation * alloc)
179179
{
180180
func->GetInProcJITEntryPointInfo()->SetInProcJITNativeCodeData(func->GetNativeCodeDataAllocator()->Finalize());
181181
func->GetInProcJITEntryPointInfo()->GetJitTransferData()->SetRawData(func->GetTransferDataAllocator()->Finalize());
182+
#if !FLOATVAR
183+
CodeGenNumberChunk * numberChunks = func->GetNumberAllocator()->Finalize();
184+
func->GetInProcJITEntryPointInfo()->SetNumberChunks(numberChunks);
185+
#endif
182186
}
183187
}
184188

lib/Runtime/Base/FunctionBody.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7790,9 +7790,9 @@ namespace Js
77907790

77917791
if (this->numberPageSegments)
77927792
{
7793-
auto numberChunks = this->GetScriptContext()->GetThreadContext()
7793+
auto numberArray = this->GetScriptContext()->GetThreadContext()
77947794
->GetXProcNumberPageSegmentManager()->RegisterSegments(this->numberPageSegments);
7795-
this->SetNumberChunks(numberChunks);
7795+
this->SetNumberArray(numberArray);
77967796
this->numberPageSegments = nullptr;
77977797
}
77987798
}

lib/Runtime/Base/FunctionBody.h

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
struct CodeGenWorkItem;
1111
class SourceContextInfo;
1212
struct DeferredFunctionStub;
13+
struct CodeGenNumberChunk;
1314
#ifdef DYNAMIC_PROFILE_MUTATOR
1415
class DynamicProfileMutator;
1516
class DynamicProfileMutatorImpl;
@@ -512,7 +513,11 @@ namespace Js
512513
#if ENABLE_NATIVE_CODEGEN
513514
NativeCodeData * inProcJITNaticeCodedata;
514515
char* nativeDataBuffer;
515-
Js::JavascriptNumber** numberChunks;
516+
union
517+
{
518+
Js::JavascriptNumber** numberArray;
519+
CodeGenNumberChunk* numberChunks;
520+
};
516521
XProcNumberPageSegment* numberPageSegments;
517522
#endif
518523

@@ -577,11 +582,16 @@ namespace Js
577582
char** GetNativeDataBufferRef() { return &nativeDataBuffer; }
578583
char* GetNativeDataBuffer() { return nativeDataBuffer; }
579584
void SetInProcJITNativeCodeData(NativeCodeData* nativeCodeData) { inProcJITNaticeCodedata = nativeCodeData; }
580-
void SetNumberChunks(Js::JavascriptNumber** chunks)
585+
void SetNumberChunks(CodeGenNumberChunk* chunks)
581586
{
582-
Assert(numberPageSegments != nullptr);
587+
Assert(numberPageSegments == nullptr);
583588
numberChunks = chunks;
584589
}
590+
void SetNumberArray(Js::JavascriptNumber** array)
591+
{
592+
Assert(numberPageSegments != nullptr);
593+
numberArray = array;
594+
}
585595
void SetNumberPageSegment(XProcNumberPageSegment * segments)
586596
{
587597
Assert(numberPageSegments == nullptr);

0 commit comments

Comments
 (0)