Skip to content

Commit e164473

Browse files
committed
avoid extra redundant copying for obj type spec info
1 parent 32528a8 commit e164473

38 files changed

+1452
-1818
lines changed

lib/Backend/Backend.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
#include "Language/AsmJsModule.h"
1717
#include "Language/ProfilingHelpers.h"
1818
#include "Language/FunctionCodeGenRuntimeData.h"
19-
#include "Language/ObjTypeSpecFldInfo.h"
20-
#include "Language/FunctionCodeGenJitTimeData.h"
2119
#include "Language/JavascriptMathOperators.h"
2220
#include "Language/JavascriptMathOperators.inl"
2321
#include "Language/JavascriptStackWalker.h"
@@ -112,15 +110,16 @@ enum IRDumpFlags
112110

113111
#include "JITTimeProfileInfo.h"
114112
#include "JITRecyclableObject.h"
115-
#include "JITTimeFixedField.h"
113+
#include "FixedFieldInfo.h"
116114
#include "JITTimePolymorphicInlineCache.h"
117115
#include "JITTimePolymorphicInlineCacheInfo.h"
118116
#include "CodeGenWorkItemType.h"
119117
#include "CodeGenAllocators.h"
120118
#include "JITTimeConstructorCache.h"
121119
#include "JITTypeHandler.h"
122120
#include "JITType.h"
123-
#include "JITObjTypeSpecFldInfo.h"
121+
#include "ObjTypeSpecFldInfo.h"
122+
#include "FunctionCodeGenJitTimeData.h"
124123
#include "ServerScriptContext.h"
125124
#include "JITOutput.h"
126125
#include "JITTimeScriptContext.h"

lib/Backend/BackwardPass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4404,7 +4404,7 @@ BackwardPass::TrackObjTypeSpecProperties(IR::PropertySymOpnd *opnd, BasicBlock *
44044404
#if DBG
44054405
FOREACH_BITSET_IN_SPARSEBV(propOpId, guardedPropertyOps)
44064406
{
4407-
JITObjTypeSpecFldInfo* existingFldInfo = this->func->GetGlobalObjTypeSpecFldInfo(propOpId);
4407+
ObjTypeSpecFldInfo* existingFldInfo = this->func->GetGlobalObjTypeSpecFldInfo(propOpId);
44084408
Assert(existingFldInfo != nullptr);
44094409

44104410
if (existingFldInfo->GetPropertyId() != opnd->GetPropertyId())

lib/Backend/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ add_library (Chakra.Backend OBJECT
1717
Encoder.cpp
1818
FlowGraph.cpp
1919
Func.cpp
20+
FunctionCodeGenJitTimeData.cpp
2021
FunctionJITRuntimeInfo.cpp
2122
FunctionJITTimeInfo.cpp
2223
GlobOpt.cpp
@@ -37,10 +38,9 @@ add_library (Chakra.Backend OBJECT
3738
InliningHeuristics.cpp
3839
IntBounds.cpp
3940
InterpreterThunkEmitter.cpp
40-
JITObjTypeSpecFldInfo.cpp
4141
JITOutput.cpp
4242
JITTimeConstructorCache.cpp
43-
JITTimeFixedField.cpp
43+
FixedFieldInfo.cpp
4444
JITTimeFunctionBody.cpp
4545
JITTimePolymorphicInlineCache.cpp
4646
JITTimePolymorphicInlineCacheInfo.cpp
@@ -56,6 +56,7 @@ add_library (Chakra.Backend OBJECT
5656
LowerMDSharedSimd128.cpp
5757
NativeCodeData.cpp
5858
NativeCodeGenerator.cpp
59+
ObjTypeSpecFldInfo.cpp
5960
Opnd.cpp
6061
PDataManager.cpp
6162
Peeps.cpp

lib/Backend/Chakra.Backend.vcxproj

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,15 +204,16 @@
204204
<ClCompile Include="$(MSBuildThisFileDirectory)AsmJsJITInfo.cpp" />
205205
<ClCompile Include="$(MSBuildThisFileDirectory)FunctionJITRuntimeInfo.cpp" />
206206
<ClCompile Include="$(MSBuildThisFileDirectory)FunctionJITTimeInfo.cpp" />
207-
<ClCompile Include="$(MSBuildThisFileDirectory)JITObjTypeSpecFldInfo.cpp" />
207+
<ClCompile Include="$(MSBuildThisFileDirectory)ObjTypeSpecFldInfo.cpp" />
208208
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimeConstructorCache.cpp" />
209209
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimePolymorphicInlineCache.cpp" />
210210
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimePolymorphicInlineCacheInfo.cpp" />
211211
<ClCompile Include="$(MSBuildThisFileDirectory)JITType.cpp" />
212212
<ClCompile Include="$(MSBuildThisFileDirectory)JITTypeHandler.cpp" />
213213
<ClCompile Include="$(MSBuildThisFileDirectory)ServerScriptContext.cpp" />
214214
<ClCompile Include="$(MSBuildThisFileDirectory)ServerThreadContext.cpp" />
215-
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimeFixedField.cpp" />
215+
<ClCompile Include="$(MSBuildThisFileDirectory)FixedFieldInfo.cpp" />
216+
<ClCompile Include="$(MSBuildThisFileDirectory)FunctionCodeGenJitTimeData.cpp" />
216217
</ItemGroup>
217218
<ItemGroup>
218219
<ClInclude Include="AgenPeeps.h" />
@@ -250,6 +251,7 @@
250251
<ExcludedFromBuild Condition="'$(Platform)'!='ARM64'">true</ExcludedFromBuild>
251252
</ClInclude>
252253
<ClInclude Include="AsmJsJITInfo.h" />
254+
<ClInclude Include="FunctionCodeGenJitTimeData.h" />
253255
<ClInclude Include="FunctionJITRuntimeInfo.h" />
254256
<ClInclude Include="FunctionJITTimeInfo.h" />
255257
<ClInclude Include="IRBaseTypeList.h" />
@@ -384,11 +386,11 @@
384386
<ClInclude Include="IRViewer.h" />
385387
<ClInclude Include="IRType.h" />
386388
<ClInclude Include="IRTypeList.h" />
387-
<ClInclude Include="JITObjTypeSpecFldInfo.h" />
389+
<ClInclude Include="ObjTypeSpecFldInfo.h" />
388390
<ClInclude Include="JITOutput.h" />
389391
<ClInclude Include="JITRecyclableObject.h" />
390392
<ClInclude Include="JITTimeConstructorCache.h" />
391-
<ClInclude Include="JITTimeFixedField.h" />
393+
<ClInclude Include="FixedFieldInfo.h" />
392394
<ClInclude Include="JITTimeFunctionBody.h" />
393395
<ClInclude Include="JITTimePolymorphicInlineCache.h" />
394396
<ClInclude Include="JITTimePolymorphicInlineCacheInfo.h" />

lib/Backend/Chakra.Backend.vcxproj.filters

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,16 @@
117117
<ClCompile Include="$(MSBuildThisFileDirectory)AsmJsJITInfo.cpp" />
118118
<ClCompile Include="$(MSBuildThisFileDirectory)FunctionJITRuntimeInfo.cpp" />
119119
<ClCompile Include="$(MSBuildThisFileDirectory)FunctionJITTimeInfo.cpp" />
120-
<ClCompile Include="$(MSBuildThisFileDirectory)JITObjTypeSpecFldInfo.cpp" />
121120
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimeConstructorCache.cpp" />
122121
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimePolymorphicInlineCache.cpp" />
123122
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimePolymorphicInlineCacheInfo.cpp" />
124123
<ClCompile Include="$(MSBuildThisFileDirectory)JITType.cpp" />
125124
<ClCompile Include="$(MSBuildThisFileDirectory)JITTypeHandler.cpp" />
126125
<ClCompile Include="$(MSBuildThisFileDirectory)ServerScriptContext.cpp" />
127126
<ClCompile Include="$(MSBuildThisFileDirectory)ServerThreadContext.cpp" />
127+
<ClCompile Include="$(MSBuildThisFileDirectory)FunctionCodeGenJitTimeData.cpp" />
128+
<ClCompile Include="$(MSBuildThisFileDirectory)FixedFieldInfo.cpp" />
129+
<ClCompile Include="$(MSBuildThisFileDirectory)ObjTypeSpecFldInfo.cpp" />
128130
<ClCompile Include="$(MSBuildThisFileDirectory)JITTimeFixedField.cpp" />
129131
<ClCompile Include="$(MSBuildThisFileDirectory)PageAllocatorPool.cpp" />
130132
</ItemGroup>
@@ -326,17 +328,18 @@
326328
<ClInclude Include="AsmJsJITInfo.h" />
327329
<ClInclude Include="FunctionJITTimeInfo.h" />
328330
<ClInclude Include="FunctionJITRuntimeInfo.h" />
329-
<ClInclude Include="JITObjTypeSpecFldInfo.h" />
330331
<ClInclude Include="JITTimeConstructorCache.h" />
331332
<ClInclude Include="JITType.h" />
332333
<ClInclude Include="JITTypeHandler.h" />
333334
<ClInclude Include="JITTimePolymorphicInlineCacheInfo.h" />
334335
<ClInclude Include="JITTimePolymorphicInlineCache.h" />
335336
<ClInclude Include="ServerThreadContext.h" />
336337
<ClInclude Include="ServerScriptContext.h" />
337-
<ClInclude Include="JITTimeFixedField.h" />
338338
<ClInclude Include="ExternalLowerer.h" />
339339
<ClInclude Include="JITRecyclableObject.h" />
340+
<ClInclude Include="FunctionCodeGenJitTimeData.h" />
341+
<ClInclude Include="FixedFieldInfo.h" />
342+
<ClInclude Include="ObjTypeSpecFldInfo.h" />
340343
<ClInclude Include="CRC.h" />
341344
<ClInclude Include="PageAllocatorPool.h" />
342345
</ItemGroup>

lib/Backend/FixedFieldInfo.cpp

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
//-------------------------------------------------------------------------------------------------------
2+
// Copyright (C) Microsoft. All rights reserved.
3+
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
4+
//-------------------------------------------------------------------------------------------------------
5+
6+
#include "Backend.h"
7+
8+
CompileAssert(sizeof(FixedFieldIDL) == sizeof(FixedFieldInfo));
9+
10+
/* static */
11+
void
12+
FixedFieldInfo::PopulateFixedField(_In_opt_ Js::Type * type, _In_opt_ Js::Var var, _Out_ FixedFieldInfo * fixed)
13+
{
14+
FixedFieldIDL * rawFF = fixed->GetRaw();
15+
rawFF->fieldValue = (intptr_t)var;
16+
rawFF->nextHasSameFixedField = false;
17+
if (var != nullptr && Js::JavascriptFunction::Is(var))
18+
{
19+
Js::JavascriptFunction * funcObj = Js::JavascriptFunction::FromVar(var);
20+
rawFF->valueType = ValueType::FromObject(funcObj).GetRawData();
21+
rawFF->funcInfoAddr = (intptr_t)funcObj->GetFunctionInfo();
22+
rawFF->isClassCtor = funcObj->GetFunctionInfo()->IsClassConstructor();
23+
rawFF->localFuncId = (intptr_t)funcObj->GetFunctionInfo()->GetLocalFunctionId();
24+
if (Js::ScriptFunction::Is(var))
25+
{
26+
rawFF->environmentAddr = (intptr_t)Js::ScriptFunction::FromVar(funcObj)->GetEnvironment();
27+
}
28+
}
29+
if (type != nullptr)
30+
{
31+
JITType::BuildFromJsType(type, (JITType*)&rawFF->type);
32+
}
33+
}
34+
35+
void
36+
FixedFieldInfo::SetNextHasSameFixedField()
37+
{
38+
m_data.nextHasSameFixedField = TRUE;
39+
}
40+
41+
bool
42+
FixedFieldInfo::IsClassCtor() const
43+
{
44+
return m_data.isClassCtor != FALSE;
45+
}
46+
47+
bool
48+
FixedFieldInfo::NextHasSameFixedField() const
49+
{
50+
return m_data.nextHasSameFixedField != FALSE;
51+
}
52+
53+
uint
54+
FixedFieldInfo::GetLocalFuncId() const
55+
{
56+
return m_data.localFuncId;
57+
}
58+
59+
ValueType
60+
FixedFieldInfo::GetValueType() const
61+
{
62+
CompileAssert(sizeof(ValueType) == sizeof(uint16));
63+
return *(ValueType*)&m_data.valueType;
64+
}
65+
66+
intptr_t
67+
FixedFieldInfo::GetFieldValue() const
68+
{
69+
return m_data.fieldValue;
70+
}
71+
72+
intptr_t
73+
FixedFieldInfo::GetFuncInfoAddr() const
74+
{
75+
return m_data.funcInfoAddr;
76+
}
77+
78+
intptr_t
79+
FixedFieldInfo::GetEnvironmentAddr() const
80+
{
81+
return m_data.environmentAddr;
82+
}
83+
84+
JITType *
85+
FixedFieldInfo::GetType() const
86+
{
87+
return (JITType*)&m_data.type;
88+
}
89+
90+
FixedFieldIDL *
91+
FixedFieldInfo::GetRaw()
92+
{
93+
return &m_data;
94+
}
95+

lib/Backend/JITTimeFixedField.h renamed to lib/Backend/FixedFieldInfo.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55

66
#pragma once
77

8-
class JITTimeFixedField
8+
class FixedFieldInfo
99
{
1010
public:
11+
FixedFieldInfo() {};
12+
static void PopulateFixedField(_In_opt_ Js::Type * type, _In_opt_ Js::Var var, _Out_ FixedFieldInfo * fixed);
13+
1114
void SetNextHasSameFixedField();
1215

1316
bool IsClassCtor() const;
@@ -18,7 +21,7 @@ class JITTimeFixedField
1821
intptr_t GetEnvironmentAddr() const;
1922
intptr_t GetFieldValue() const;
2023
JITType * GetType() const;
24+
FixedFieldIDL * GetRaw();
2125
private:
22-
JITTimeFixedField();
2326
FixedFieldIDL m_data;
2427
};

lib/Backend/Func.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,12 +243,12 @@ Func::Func(JitArenaAllocator *alloc, JITTimeWorkItem * workItem,
243243

244244
if (this->IsTopFunc())
245245
{
246-
m_globalObjTypeSpecFldInfoArray = JitAnewArrayZ(this->m_alloc, JITObjTypeSpecFldInfo*, GetWorkItem()->GetJITTimeInfo()->GetGlobalObjTypeSpecFldInfoCount());
246+
m_globalObjTypeSpecFldInfoArray = JitAnewArrayZ(this->m_alloc, ObjTypeSpecFldInfo*, GetWorkItem()->GetJITTimeInfo()->GetGlobalObjTypeSpecFldInfoCount());
247247
}
248248

249249
for (uint i = 0; i < GetJITFunctionBody()->GetInlineCacheCount(); ++i)
250250
{
251-
JITObjTypeSpecFldInfo * info = GetWorkItem()->GetJITTimeInfo()->GetObjTypeSpecFldInfo(i);
251+
ObjTypeSpecFldInfo * info = GetWorkItem()->GetJITTimeInfo()->GetObjTypeSpecFldInfo(i);
252252
if (info != nullptr)
253253
{
254254
Assert(info->GetObjTypeSpecFldId() < GetTopFunc()->GetWorkItem()->GetJITTimeInfo()->GetGlobalObjTypeSpecFldInfoCount());
@@ -1335,7 +1335,7 @@ Func::GetPolyCacheUtil(const uint index) const
13351335
return this->m_polymorphicInlineCacheInfo->GetUtil(index);
13361336
}
13371337

1338-
JITObjTypeSpecFldInfo*
1338+
ObjTypeSpecFldInfo*
13391339
Func::GetObjTypeSpecFldInfo(const uint index) const
13401340
{
13411341
if (GetJITFunctionBody()->GetInlineCacheCount() == 0)
@@ -1347,7 +1347,7 @@ Func::GetObjTypeSpecFldInfo(const uint index) const
13471347
return GetWorkItem()->GetJITTimeInfo()->GetObjTypeSpecFldInfo(index);
13481348
}
13491349

1350-
JITObjTypeSpecFldInfo*
1350+
ObjTypeSpecFldInfo*
13511351
Func::GetGlobalObjTypeSpecFldInfo(uint propertyInfoId) const
13521352
{
13531353
Assert(propertyInfoId < GetTopFunc()->GetWorkItem()->GetJITTimeInfo()->GetGlobalObjTypeSpecFldInfoCount());

lib/Backend/Func.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -544,8 +544,8 @@ static const unsigned __int64 c_debugFillPattern8 = 0xcececececececece;
544544

545545
Js::Var AllocateNumber(double value);
546546

547-
JITObjTypeSpecFldInfo* GetObjTypeSpecFldInfo(const uint index) const;
548-
JITObjTypeSpecFldInfo* GetGlobalObjTypeSpecFldInfo(uint propertyInfoId) const;
547+
ObjTypeSpecFldInfo* GetObjTypeSpecFldInfo(const uint index) const;
548+
ObjTypeSpecFldInfo* GetGlobalObjTypeSpecFldInfo(uint propertyInfoId) const;
549549

550550
// Gets an inline cache pointer to use in jitted code. Cached data may not be stable while jitting. Does not return null.
551551
intptr_t GetRuntimeInlineCache(const uint index) const;
@@ -998,7 +998,7 @@ static const unsigned __int64 c_debugFillPattern8 = 0xcececececececece;
998998
void * const m_codeGenAllocators;
999999
YieldOffsetResumeLabelList * m_yieldOffsetResumeLabelList;
10001000
StackArgWithFormalsTracker * stackArgWithFormalsTracker;
1001-
JITObjTypeSpecFldInfo ** m_globalObjTypeSpecFldInfoArray;
1001+
ObjTypeSpecFldInfo ** m_globalObjTypeSpecFldInfoArray;
10021002
StackSym *CreateInlineeStackSym();
10031003
IR::SymOpnd *GetInlineeOpndAtOffset(int32 offset);
10041004
bool HasLocalVarSlotCreated() const { return m_localVarSlotsOffset != Js::Constants::InvalidOffset; }

lib/Runtime/Language/FunctionCodeGenJitTimeData.cpp renamed to lib/Backend/FunctionCodeGenJitTimeData.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// Copyright (C) Microsoft. All rights reserved.
33
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
44
//-------------------------------------------------------------------------------------------------------
5-
#include "RuntimeLanguagePch.h"
6-
#include "JITTimeFunctionBody.h"
5+
6+
#include "Backend.h"
77

88
#if ENABLE_NATIVE_CODEGEN
99
namespace Js

lib/Backend/FunctionJITTimeInfo.cpp

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,11 @@ FunctionJITTimeInfo::BuildJITTimeData(
109109
jitData->ldFldInlineeCount = jitData->bodyData->inlineCacheCount;
110110
jitData->ldFldInlinees = AnewArrayZ(alloc, FunctionJITTimeDataIDL*, jitData->bodyData->inlineCacheCount);
111111

112-
Field(Js::ObjTypeSpecFldInfo*)* objTypeSpecInfo = codeGenData->GetObjTypeSpecFldInfoArray()->GetInfoArray();
112+
Field(ObjTypeSpecFldInfo*)* objTypeSpecInfo = codeGenData->GetObjTypeSpecFldInfoArray()->GetInfoArray();
113113
if(objTypeSpecInfo)
114114
{
115115
jitData->objTypeSpecFldInfoCount = jitData->bodyData->inlineCacheCount;
116-
jitData->objTypeSpecFldInfoArray = AnewArrayZ(alloc, ObjTypeSpecFldIDL, jitData->bodyData->inlineCacheCount);
117-
JITObjTypeSpecFldInfo::BuildObjTypeSpecFldInfoArray(alloc, objTypeSpecInfo, jitData->objTypeSpecFldInfoCount, jitData->objTypeSpecFldInfoArray);
116+
jitData->objTypeSpecFldInfoArray = (ObjTypeSpecFldIDL**)objTypeSpecInfo;
118117
}
119118
for (Js::InlineCacheIndex i = 0; i < jitData->bodyData->inlineCacheCount; ++i)
120119
{
@@ -129,12 +128,11 @@ FunctionJITTimeInfo::BuildJITTimeData(
129128
}
130129
if (!isInlinee && codeGenData->GetGlobalObjTypeSpecFldInfoCount() > 0)
131130
{
132-
Field(Js::ObjTypeSpecFldInfo*)* globObjTypeSpecInfo = codeGenData->GetGlobalObjTypeSpecFldInfoArray();
131+
Field(ObjTypeSpecFldInfo*)* globObjTypeSpecInfo = codeGenData->GetGlobalObjTypeSpecFldInfoArray();
133132
Assert(globObjTypeSpecInfo != nullptr);
134133

135134
jitData->globalObjTypeSpecFldInfoCount = codeGenData->GetGlobalObjTypeSpecFldInfoCount();
136-
jitData->globalObjTypeSpecFldInfoArray = AnewArrayZ(alloc, ObjTypeSpecFldIDL, jitData->globalObjTypeSpecFldInfoCount);
137-
JITObjTypeSpecFldInfo::BuildObjTypeSpecFldInfoArray(alloc, globObjTypeSpecInfo, jitData->globalObjTypeSpecFldInfoCount, jitData->globalObjTypeSpecFldInfoArray);
135+
jitData->globalObjTypeSpecFldInfoArray = (ObjTypeSpecFldIDL**)globObjTypeSpecInfo;
138136
}
139137
const Js::FunctionCodeGenJitTimeData * nextJITData = codeGenData->GetNext();
140138
if (nextJITData != nullptr)
@@ -255,32 +253,24 @@ FunctionJITTimeInfo::GetRuntimeInfo() const
255253
return reinterpret_cast<const FunctionJITRuntimeInfo*>(m_data.profiledRuntimeData);
256254
}
257255

258-
JITObjTypeSpecFldInfo *
256+
ObjTypeSpecFldInfo *
259257
FunctionJITTimeInfo::GetObjTypeSpecFldInfo(uint index) const
260258
{
261259
Assert(index < GetBody()->GetInlineCacheCount());
262260
if (m_data.objTypeSpecFldInfoArray == nullptr)
263261
{
264262
return nullptr;
265263
}
266-
if (!m_data.objTypeSpecFldInfoArray[index].inUse)
267-
{
268-
return nullptr;
269-
}
270264

271-
return reinterpret_cast<JITObjTypeSpecFldInfo *>(&m_data.objTypeSpecFldInfoArray[index]);
265+
return reinterpret_cast<ObjTypeSpecFldInfo *>(m_data.objTypeSpecFldInfoArray[index]);
272266
}
273267

274-
JITObjTypeSpecFldInfo *
268+
ObjTypeSpecFldInfo *
275269
FunctionJITTimeInfo::GetGlobalObjTypeSpecFldInfo(uint index) const
276270
{
277271
Assert(index < m_data.globalObjTypeSpecFldInfoCount);
278-
if (!m_data.globalObjTypeSpecFldInfoArray[index].inUse)
279-
{
280-
return nullptr;
281-
}
282272

283-
return reinterpret_cast<JITObjTypeSpecFldInfo *>(&m_data.globalObjTypeSpecFldInfoArray[index]);
273+
return reinterpret_cast<ObjTypeSpecFldInfo *>(m_data.globalObjTypeSpecFldInfoArray[index]);
284274
}
285275

286276
uint

0 commit comments

Comments
 (0)