Skip to content

Commit 351fc5c

Browse files
committed
address CR comments
1 parent 32f729b commit 351fc5c

39 files changed

+310
-240
lines changed

bin/ChakraCore/ChakraCoreDllFunc.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,9 @@ HRESULT JsInitializeJITServer(
213213
{
214214
return E_NOTIMPL;
215215
}
216-
#endif
216+
EXPORT_FUNC
217+
HRESULT JsShutdownJITServer()
218+
{
219+
return E_NOTIMPL;
220+
}
221+
#endif

bin/ch/JITProcessManager.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ HRESULT JITProcessManager::CreateServerProcess(int argc, __in_ecount(argc) LPWST
105105
NULL,
106106
NULL,
107107
FALSE,
108-
CREATE_SUSPENDED,
108+
NULL,
109109
NULL,
110110
NULL,
111111
&si,
@@ -116,14 +116,6 @@ HRESULT JITProcessManager::CreateServerProcess(int argc, __in_ecount(argc) LPWST
116116

117117
free(cmdLine);
118118

119-
if (ResumeThread(processInfo.hThread) == (DWORD)-1)
120-
{
121-
TerminateProcess(processInfo.hProcess, GetLastError());
122-
CloseHandle(processInfo.hProcess);
123-
CloseHandle(processInfo.hThread);
124-
return HRESULT_FROM_WIN32(GetLastError());
125-
}
126-
127119
CloseHandle(processInfo.hThread);
128120
s_rpcServerProcessHandle = processInfo.hProcess;
129121

bin/ch/ch.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,9 @@ bool HandleJITServerFlag(int& argc, _Inout_updates_to_(argc, argc) LPWSTR argv[]
668668
}
669669

670670
if (i == argc)
671+
{
671672
return false;
673+
}
672674

673675
// remove this flag now
674676
HostConfigFlags::RemoveArg(argc, argv, i);

bin/ch/ch.vcxproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@
3838
kernel32.lib;
3939
Rpcrt4.lib;
4040
</AdditionalDependencies>
41-
<IgnoreAllDefaultLibraries Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
42-
</IgnoreAllDefaultLibraries>
4341
</Link>
4442
</ItemDefinitionGroup>
4543
<ItemGroup>

lib/Backend/BackwardPass.cpp

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,7 @@ BackwardPass::MergeSuccBlocksInfo(BasicBlock * block)
710710
auto fixupFrom = [block, blockSucc, this](Bucket<AddPropertyCacheBucket> &bucket)
711711
{
712712
AddPropertyCacheBucket *fromData = &bucket.element;
713-
if (fromData->GetInitialType().t == nullptr ||
713+
if (fromData->GetInitialType() == nullptr ||
714714
fromData->GetFinalType() == fromData->GetInitialType())
715715
{
716716
return;
@@ -722,7 +722,7 @@ BackwardPass::MergeSuccBlocksInfo(BasicBlock * block)
722722
auto fixupTo = [blockSucc, this](Bucket<AddPropertyCacheBucket> &bucket)
723723
{
724724
AddPropertyCacheBucket *toData = &bucket.element;
725-
if (toData->GetInitialType().t == nullptr ||
725+
if (toData->GetInitialType() == nullptr ||
726726
toData->GetFinalType() == toData->GetInitialType())
727727
{
728728
return;
@@ -1184,7 +1184,7 @@ BackwardPass::MergeGuardedProperties(ObjTypeGuardBucket bucket1, ObjTypeGuardBuc
11841184
ObjTypeGuardBucket bucket;
11851185
bucket.SetGuardedPropertyOps(mergedPropertyOps);
11861186
JITTypeHolder monoGuardType = bucket1.GetMonoGuardType();
1187-
if (monoGuardType.t != nullptr)
1187+
if (monoGuardType != nullptr)
11881188
{
11891189
Assert(!bucket2.NeedsMonoCheck() || monoGuardType == bucket2.GetMonoGuardType());
11901190
}
@@ -3662,7 +3662,7 @@ BackwardPass::ProcessNewScObject(IR::Instr* instr)
36623662
// transition here.
36633663
AddPropertyCacheBucket *pBucket = block->stackSymToFinalType->Get(objSym->m_id);
36643664
if (pBucket &&
3665-
pBucket->GetInitialType().t != nullptr &&
3665+
pBucket->GetInitialType() != nullptr &&
36663666
pBucket->GetFinalType() != pBucket->GetInitialType())
36673667
{
36683668
Assert(pBucket->GetInitialType() == ctorCache->GetType());
@@ -3672,7 +3672,7 @@ BackwardPass::ProcessNewScObject(IR::Instr* instr)
36723672
}
36733673
#if DBG
36743674
pBucket->deadStoreUnavailableInitialType = pBucket->GetInitialType();
3675-
if (pBucket->deadStoreUnavailableFinalType.t == nullptr)
3675+
if (pBucket->deadStoreUnavailableFinalType == nullptr)
36763676
{
36773677
pBucket->deadStoreUnavailableFinalType = pBucket->GetFinalType();
36783678
}
@@ -4256,7 +4256,7 @@ BackwardPass::ProcessPropertySymOpndUse(IR::PropertySymOpnd * opnd)
42564256
StackSym *baseSym = opnd->GetObjectSym();
42574257
AddPropertyCacheBucket *pBucket = block->stackSymToFinalType->Get(baseSym->m_id);
42584258
if (pBucket &&
4259-
pBucket->GetFinalType().t != nullptr &&
4259+
pBucket->GetFinalType() != nullptr &&
42604260
pBucket->GetFinalType() != pBucket->GetInitialType())
42614261
{
42624262
this->InsertTypeTransition(this->currentInstr->m_next, baseSym, pBucket);
@@ -4501,7 +4501,7 @@ BackwardPass::TrackAddPropertyTypes(IR::PropertySymOpnd *opnd, BasicBlock *block
45014501
JITTypeHolder typeWithProperty = opnd->IsMono() ? opnd->GetType() : opnd->GetFirstEquivalentType();
45024502
JITTypeHolder typeWithoutProperty = opnd->HasInitialType() ? opnd->GetInitialType() : JITTypeHolder(nullptr);
45034503

4504-
if (typeWithoutProperty.t == nullptr ||
4504+
if (typeWithoutProperty == nullptr ||
45054505
typeWithProperty == typeWithoutProperty ||
45064506
(opnd->IsTypeChecked() && !opnd->IsInitialTypeChecked()))
45074507
{
@@ -4510,7 +4510,7 @@ BackwardPass::TrackAddPropertyTypes(IR::PropertySymOpnd *opnd, BasicBlock *block
45104510
PropertySym *propertySym = opnd->m_sym->AsPropertySym();
45114511
AddPropertyCacheBucket *pBucket =
45124512
block->stackSymToFinalType->Get(propertySym->m_stackSym->m_id);
4513-
if (pBucket && pBucket->GetFinalType().t && pBucket->GetInitialType() != pBucket->GetFinalType())
4513+
if (pBucket && pBucket->GetFinalType() != nullptr && pBucket->GetInitialType() != pBucket->GetFinalType())
45144514
{
45154515
opnd->SetFinalType(pBucket->GetFinalType());
45164516
}
@@ -4519,12 +4519,13 @@ BackwardPass::TrackAddPropertyTypes(IR::PropertySymOpnd *opnd, BasicBlock *block
45194519
return;
45204520
}
45214521

4522-
#if 0 // TODO: OOP JIT, add these assert back (ReadProcessMemory?)
4522+
#if DBG
45234523
Assert(typeWithProperty != nullptr);
4524-
Js::DynamicTypeHandler * typeWithoutPropertyTypeHandler = static_cast<Js::DynamicType *>(typeWithoutProperty)->GetTypeHandler();
4525-
Js::DynamicTypeHandler * typeWithPropertyTypeHandler = static_cast<Js::DynamicType *>(typeWithProperty)->GetTypeHandler();
4526-
Assert(typeWithoutPropertyTypeHandler->GetPropertyCount() + 1 == typeWithPropertyTypeHandler->GetPropertyCount());
4527-
AssertMsg(Js::DynamicObject::IsTypeHandlerCompatibleForObjectHeaderInlining(typeWithoutPropertyTypeHandler, typeWithPropertyTypeHandler),
4524+
const JITTypeHandler * typeWithoutPropertyTypeHandler = typeWithoutProperty->GetTypeHandler();
4525+
const JITTypeHandler * typeWithPropertyTypeHandler = typeWithProperty->GetTypeHandler();
4526+
// TODO: OOP JIT, reenable assert
4527+
//Assert(typeWithoutPropertyTypeHandler->GetPropertyCount() + 1 == typeWithPropertyTypeHandler->GetPropertyCount());
4528+
AssertMsg(JITTypeHandler::IsTypeHandlerCompatibleForObjectHeaderInlining(typeWithoutPropertyTypeHandler, typeWithPropertyTypeHandler),
45284529
"TypeHandlers are not compatible for transition?");
45294530
Assert(typeWithoutPropertyTypeHandler->GetSlotCapacity() <= typeWithPropertyTypeHandler->GetSlotCapacity());
45304531
#endif
@@ -4545,7 +4546,7 @@ BackwardPass::TrackAddPropertyTypes(IR::PropertySymOpnd *opnd, BasicBlock *block
45454546
#if DBG
45464547
JITTypeHolder deadStoreUnavailableFinalType(nullptr);
45474548
#endif
4548-
if (pBucket->GetInitialType().t == nullptr || opnd->GetType() != pBucket->GetInitialType())
4549+
if (pBucket->GetInitialType() == nullptr || opnd->GetType() != pBucket->GetInitialType())
45494550
{
45504551
#if DBG
45514552
if (opnd->GetType() == pBucket->deadStoreUnavailableInitialType)
@@ -4571,7 +4572,7 @@ BackwardPass::TrackAddPropertyTypes(IR::PropertySymOpnd *opnd, BasicBlock *block
45714572

45724573
if (!PHASE_OFF(Js::ObjTypeSpecStorePhase, this->func))
45734574
{
4574-
#if 0 //TODO: OOP JIT, reenable assert
4575+
#if DBG
45754576

45764577
// We may regress in this case:
45774578
// if (b)
@@ -4592,15 +4593,17 @@ BackwardPass::TrackAddPropertyTypes(IR::PropertySymOpnd *opnd, BasicBlock *block
45924593
if (!opnd->IsTypeDead())
45934594
{
45944595
// This is the type that would have been propagated if we didn't kill it because the type isn't available
4595-
JITTypeHolder checkFinalType = deadStoreUnavailableFinalType ? deadStoreUnavailableFinalType : finalType;
4596+
JITTypeHolder checkFinalType = deadStoreUnavailableFinalType != nullptr ? deadStoreUnavailableFinalType : finalType;
45964597
if (opnd->HasFinalType() && opnd->GetFinalType() != checkFinalType)
45974598
{
45984599
// Final type discovery must be progressively better (unless we kill it in the deadstore pass
45994600
// when the type is not available during the forward pass)
4600-
Js::DynamicTypeHandler * oldFinalTypeHandler = static_cast<Js::DynamicType *>(opnd->GetFinalType())->GetTypeHandler();
4601-
Js::DynamicTypeHandler * checkFinalTypeHandler = static_cast<Js::DynamicType *>(checkFinalType)->GetTypeHandler();
4602-
Assert(oldFinalTypeHandler->GetPropertyCount() < checkFinalTypeHandler->GetPropertyCount());
4603-
AssertMsg(Js::DynamicObject::IsTypeHandlerCompatibleForObjectHeaderInlining(oldFinalTypeHandler, checkFinalTypeHandler),
4601+
const JITTypeHandler * oldFinalTypeHandler = opnd->GetFinalType()->GetTypeHandler();
4602+
const JITTypeHandler * checkFinalTypeHandler = checkFinalType->GetTypeHandler();
4603+
4604+
// TODO: OOP JIT, enable assert
4605+
//Assert(oldFinalTypeHandler->GetPropertyCount() < checkFinalTypeHandler->GetPropertyCount());
4606+
AssertMsg(JITTypeHandler::IsTypeHandlerCompatibleForObjectHeaderInlining(oldFinalTypeHandler, checkFinalTypeHandler),
46044607
"TypeHandlers should be compatible for transition.");
46054608
Assert(oldFinalTypeHandler->GetSlotCapacity() <= checkFinalTypeHandler->GetSlotCapacity());
46064609
}
@@ -4644,7 +4647,7 @@ BackwardPass::TrackAddPropertyTypes(IR::PropertySymOpnd *opnd, BasicBlock *block
46444647
{
46454648
#if DBG
46464649
pBucket->deadStoreUnavailableInitialType = pBucket->GetInitialType();
4647-
if (pBucket->deadStoreUnavailableFinalType.t == nullptr)
4650+
if (pBucket->deadStoreUnavailableFinalType == nullptr)
46484651
{
46494652
pBucket->deadStoreUnavailableFinalType = pBucket->GetFinalType();
46504653
}
@@ -4671,11 +4674,11 @@ BackwardPass::InsertTypeTransition(IR::Instr *instrInsertBefore, StackSym *objSy
46714674
baseOpnd->SetIsJITOptimizedReg(true);
46724675

46734676
IR::AddrOpnd *initialTypeOpnd =
4674-
IR::AddrOpnd::New(data->GetInitialType().t->GetAddr(), IR::AddrOpndKindDynamicType, this->func);
4677+
IR::AddrOpnd::New(data->GetInitialType()->GetAddr(), IR::AddrOpndKindDynamicType, this->func);
46754678
initialTypeOpnd->m_metadata = data->GetInitialType().t;
46764679

46774680
IR::AddrOpnd *finalTypeOpnd =
4678-
IR::AddrOpnd::New(data->GetFinalType().t->GetAddr(), IR::AddrOpndKindDynamicType, this->func);
4681+
IR::AddrOpnd::New(data->GetFinalType()->GetAddr(), IR::AddrOpndKindDynamicType, this->func);
46794682
finalTypeOpnd->m_metadata = data->GetFinalType().t;
46804683

46814684
IR::Instr *adjustTypeInstr =
@@ -4722,8 +4725,8 @@ BackwardPass::InsertTypeTransitionAtBlock(BasicBlock *block, int symId, AddPrope
47224725
{
47234726
// This symbol already has a type transition at this point.
47244727
// It *must* be doing the same transition we're already trying to do.
4725-
Assert((intptr_t)instr->GetDst()->AsAddrOpnd()->m_address == data->GetFinalType().t->GetAddr() &&
4726-
(intptr_t)instr->GetSrc2()->AsAddrOpnd()->m_address == data->GetInitialType().t->GetAddr());
4728+
Assert((intptr_t)instr->GetDst()->AsAddrOpnd()->m_address == data->GetFinalType()->GetAddr() &&
4729+
(intptr_t)instr->GetSrc2()->AsAddrOpnd()->m_address == data->GetInitialType()->GetAddr());
47274730
// Nothing to do.
47284731
return;
47294732
}
@@ -4824,7 +4827,7 @@ BackwardPass::ForEachAddPropertyCacheBucket(Fn fn)
48244827
FOREACH_HASHTABLE_ENTRY(AddPropertyCacheBucket, bucket, block->stackSymToFinalType)
48254828
{
48264829
AddPropertyCacheBucket *data = &bucket.element;
4827-
if (data->GetInitialType().t != nullptr &&
4830+
if (data->GetInitialType() != nullptr &&
48284831
data->GetInitialType() != data->GetFinalType())
48294832
{
48304833
bool done = fn(bucket.value, data);
@@ -4841,22 +4844,22 @@ bool
48414844
BackwardPass::TransitionUndoesObjectHeaderInlining(AddPropertyCacheBucket *data) const
48424845
{
48434846
JITTypeHolder type = data->GetInitialType();
4844-
if (type.t == nullptr || !Js::DynamicType::Is(type.t->GetTypeId()))
4847+
if (type == nullptr || !Js::DynamicType::Is(type->GetTypeId()))
48454848
{
48464849
return false;
48474850
}
48484851

4849-
if (!type.t->GetTypeHandler()->IsObjectHeaderInlinedTypeHandler())
4852+
if (!type->GetTypeHandler()->IsObjectHeaderInlinedTypeHandler())
48504853
{
48514854
return false;
48524855
}
48534856

48544857
type = data->GetFinalType();
4855-
if (type.t == nullptr || !Js::DynamicType::Is(type.t->GetTypeId()))
4858+
if (type == nullptr || !Js::DynamicType::Is(type->GetTypeId()))
48564859
{
48574860
return false;
48584861
}
4859-
return !type.t->GetTypeHandler()->IsObjectHeaderInlinedTypeHandler();
4862+
return !type->GetTypeHandler()->IsObjectHeaderInlinedTypeHandler();
48604863
}
48614864

48624865
void

lib/Backend/Encoder.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,6 @@ Encoder::Encode()
271271
}
272272
}
273273

274-
JITTimeWorkItem * workItem = m_func->GetWorkItem();
275-
276274
BEGIN_CODEGEN_PHASE(m_func, Js::EmitterPhase);
277275

278276
// Copy to permanent buffer.
@@ -440,7 +438,7 @@ Encoder::Encode()
440438
equivalentTypeGuardOffsets->guards[i].cache.nextEvictionVictim = cache->nextEvictionVictim;
441439
equivalentTypeGuardOffsets->guards[i].cache.record.propertyCount = cache->record.propertyCount;
442440
equivalentTypeGuardOffsets->guards[i].cache.record.propertyOffset = NativeCodeData::GetDataTotalOffset(cache->record.properties);
443-
for (int j = 0; j < EQUIVALENT_TYPE_CACHE_SIZE_IDL; j++)
441+
for (int j = 0; j < EQUIVALENT_TYPE_CACHE_SIZE; j++)
444442
{
445443
equivalentTypeGuardOffsets->guards[i].cache.types[j] = (intptr_t)cache->types[j];
446444
}
@@ -477,10 +475,8 @@ Encoder::Encode()
477475
if (this->m_func->propertyGuardsByPropertyId != nullptr)
478476
{
479477
Assert(!isSimpleJit);
480-
# if 0 // TODO: OOP JIT, is this assert valid?
481478
AssertMsg(!(PHASE_OFF(Js::ObjTypeSpecPhase, this->m_func) && PHASE_OFF(Js::FixedMethodsPhase, this->m_func)),
482479
"Why do we have type guards if we don't do object type spec or fixed methods?");
483-
#endif
484480

485481
#if DBG
486482
int totalGuardCount = (this->m_func->singleTypeGuards != nullptr ? this->m_func->singleTypeGuards->Count() : 0)
@@ -687,10 +683,10 @@ Encoder::Encode()
687683
Js::Configuration::Global.flags.DumpIRAddresses = dumpIRAddressesValue;
688684
}
689685

690-
if (PHASE_DUMP(Js::EncoderPhase, m_func) && Js::Configuration::Global.flags.Verbose)
686+
if (PHASE_DUMP(Js::EncoderPhase, m_func) && Js::Configuration::Global.flags.Verbose && !m_func->IsOOPJIT())
691687
{
692-
workItem->DumpNativeOffsetMaps();
693-
workItem->DumpNativeThrowSpanSequence();
688+
m_func->GetInProcJITEntryPointInfo()->DumpNativeOffsetMaps();
689+
m_func->GetInProcJITEntryPointInfo()->DumpNativeThrowSpanSequence();
694690
this->DumpInlineeFrameMap(m_func->GetJITOutput()->GetCodeAddress());
695691
Output::Flush();
696692
}

lib/Backend/FlowGraph.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3354,9 +3354,9 @@ BasicBlock::Dump()
33543354
void
33553355
AddPropertyCacheBucket::Dump() const
33563356
{
3357-
Assert(this->initialType.t != nullptr);
3358-
Assert(this->finalType.t != nullptr);
3359-
Output::Print(_u(" initial type: 0x%x, final type: 0x%x "), this->initialType.t->GetAddr(), this->finalType.t->GetAddr());
3357+
Assert(this->initialType != nullptr);
3358+
Assert(this->finalType != nullptr);
3359+
Output::Print(_u(" initial type: 0x%x, final type: 0x%x "), this->initialType->GetAddr(), this->finalType->GetAddr());
33603360
}
33613361

33623362
void

lib/Backend/FlowGraph.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class ObjTypeGuardBucket
9191
void SetGuardedPropertyOps(BVSparse<JitArenaAllocator> *guardedPropertyOps) { this->guardedPropertyOps = guardedPropertyOps; }
9292
void AddToGuardedPropertyOps(uint propertyOpId) { Assert(this->guardedPropertyOps != nullptr); this->guardedPropertyOps->Set(propertyOpId); }
9393

94-
bool NeedsMonoCheck() const { return this->monoGuardType.t != nullptr; }
94+
bool NeedsMonoCheck() const { return this->monoGuardType != nullptr; }
9595
void SetMonoGuardType(JITTypeHolder type) { this->monoGuardType = type; }
9696
JITTypeHolder GetMonoGuardType() const { return this->monoGuardType; }
9797

lib/Backend/Func.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -804,11 +804,8 @@ Func::AjustLocalVarSlotOffset()
804804
int localsOffset = m_localVarSlotsOffset - (m_localStackHeight + m_ArgumentsOffset);
805805
int valueChangeOffset = m_hasLocalVarChangedOffset - (m_localStackHeight + m_ArgumentsOffset);
806806

807-
Js::FunctionEntryPointInfo * entryPointInfo = static_cast<Js::FunctionEntryPointInfo*>(this->m_workItem->GetEntryPoint());
808-
Assert(entryPointInfo != nullptr);
809-
810-
entryPointInfo->localVarSlotsOffset = localsOffset;
811-
entryPointInfo->localVarChangedOffset = valueChangeOffset;
807+
m_output.SetVarSlotsOffset(localsOffset);
808+
m_output.SetVarChangedOffset(valueChangeOffset);
812809
}
813810
}
814811
#endif
@@ -1389,7 +1386,7 @@ Func::CreateEquivalentTypeGuard(JITTypeHolder type, uint32 objTypeSpecFldId)
13891386
{
13901387
EnsureEquivalentTypeGuards();
13911388

1392-
Js::JitEquivalentTypeGuard* guard = NativeCodeDataNew(GetNativeCodeDataAllocator(), Js::JitEquivalentTypeGuard, type.t->GetAddr(), this->indexedPropertyGuardCount++, objTypeSpecFldId);
1389+
Js::JitEquivalentTypeGuard* guard = NativeCodeDataNewNoFixup(GetNativeCodeDataAllocator(), Js::JitEquivalentTypeGuard, type->GetAddr(), this->indexedPropertyGuardCount++, objTypeSpecFldId);
13931390

13941391
// If we want to hard code the address of the cache, we will need to go back to allocating it from the native code data allocator.
13951392
// We would then need to maintain consistency (double write) to both the recycler allocated cache and the one on the heap.
@@ -1400,7 +1397,7 @@ Func::CreateEquivalentTypeGuard(JITTypeHolder type, uint32 objTypeSpecFldId)
14001397
}
14011398
else
14021399
{
1403-
cache = NativeCodeDataNewZ(GetTransferDataAllocator(), Js::EquivalentTypeCache);
1400+
cache = NativeCodeDataNewZNoFixup(GetTransferDataAllocator(), Js::EquivalentTypeCache);
14041401
}
14051402
guard->SetCache(cache);
14061403

lib/Backend/GlobOpt.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3506,7 +3506,7 @@ JsTypeValueInfo* GlobOpt::MergeJsTypeValueInfo(JsTypeValueInfo * toValueInfo, Js
35063506
return toValueInfo;
35073507
}
35083508

3509-
if (mergedType.t == nullptr && mergedTypeSet == nullptr)
3509+
if (mergedType == nullptr && mergedTypeSet == nullptr)
35103510
{
35113511
// No info, so don't bother making a value.
35123512
return nullptr;
@@ -20534,7 +20534,7 @@ void ValueInfo::Dump()
2053420534
else if(IsJsType())
2053520535
{
2053620536
const JITTypeHolder type(AsJsType()->GetJsType());
20537-
type.t != nullptr ? Output::Print(_u("type: 0x%p, "), type.t->GetAddr()) : Output::Print(_u("type: null, "));
20537+
type != nullptr ? Output::Print(_u("type: 0x%p, "), type->GetAddr()) : Output::Print(_u("type: null, "));
2053820538
Output::Print(_u("type Set: "));
2053920539
Js::EquivalentTypeSet* typeSet = AsJsType()->GetJsTypeSet();
2054020540
if (typeSet != nullptr)

0 commit comments

Comments
 (0)