@@ -328,10 +328,20 @@ GlobOpt::ProcessFieldKills(IR::Instr *instr, BVSparse<JitArenaAllocator> *bv, bo
328
328
Assert (dstOpnd != nullptr );
329
329
KillLiveFields (this ->lengthEquivBv , bv);
330
330
KillLiveElems (dstOpnd->AsIndirOpnd (), bv, inGlobOpt, instr->m_func );
331
+ if (inGlobOpt)
332
+ {
333
+ KillObjectHeaderInlinedTypeSyms (this ->currentBlock , false );
334
+ }
331
335
break ;
332
336
333
337
case Js::OpCode::InitComputedProperty:
338
+ case Js::OpCode::InitGetElemI:
339
+ case Js::OpCode::InitSetElemI:
334
340
KillLiveElems (dstOpnd->AsIndirOpnd (), bv, inGlobOpt, instr->m_func );
341
+ if (inGlobOpt)
342
+ {
343
+ KillObjectHeaderInlinedTypeSyms (this ->currentBlock , false );
344
+ }
335
345
break ;
336
346
337
347
case Js::OpCode::DeleteElemI_A:
@@ -394,6 +404,10 @@ GlobOpt::ProcessFieldKills(IR::Instr *instr, BVSparse<JitArenaAllocator> *bv, bo
394
404
case Js::OpCode::InlineArrayPush:
395
405
case Js::OpCode::InlineArrayPop:
396
406
KillLiveFields (this ->lengthEquivBv , bv);
407
+ if (inGlobOpt)
408
+ {
409
+ KillObjectHeaderInlinedTypeSyms (this ->currentBlock , false );
410
+ }
397
411
break ;
398
412
399
413
case Js::OpCode::InlineeStart:
@@ -410,10 +424,18 @@ GlobOpt::ProcessFieldKills(IR::Instr *instr, BVSparse<JitArenaAllocator> *bv, bo
410
424
fnHelper = instr->GetSrc1 ()->AsHelperCallOpnd ()->m_fnHelper ;
411
425
412
426
// Kill length field for built-ins that can update it.
413
- if (nullptr != this ->lengthEquivBv && (fnHelper == IR::JnHelperMethod::HelperArray_Shift || fnHelper == IR::JnHelperMethod::HelperArray_Splice
414
- || fnHelper == IR::JnHelperMethod::HelperArray_Unshift))
427
+ if (fnHelper == IR::JnHelperMethod::HelperArray_Shift
428
+ || fnHelper == IR::JnHelperMethod::HelperArray_Splice
429
+ || fnHelper == IR::JnHelperMethod::HelperArray_Unshift)
415
430
{
416
- KillLiveFields (this ->lengthEquivBv , bv);
431
+ if (nullptr != this ->lengthEquivBv )
432
+ {
433
+ KillLiveFields (this ->lengthEquivBv , bv);
434
+ }
435
+ if (inGlobOpt)
436
+ {
437
+ KillObjectHeaderInlinedTypeSyms (this ->currentBlock , false );
438
+ }
417
439
}
418
440
419
441
if ((fnHelper == IR::JnHelperMethod::HelperRegExp_Exec)
0 commit comments