Fix slot access intrinsics for objects with > 16 reserved slots.

master
Fedor 2021-02-07 17:33:01 +02:00
parent 8098b926f8
commit 317673d504
1 changed files with 8 additions and 0 deletions

View File

@ -2618,6 +2618,10 @@ IonBuilder::inlineUnsafeSetReservedSlot(CallInfo& callInfo)
return InliningStatus_NotInlined;
uint32_t slot = uint32_t(arg->toConstant()->toInt32());
// Don't inline if it's not a fixed slot.
if (slot >= NativeObject::MAX_FIXED_SLOTS)
return InliningStatus_NotInlined;
callInfo.setImplicitlyUsedUnchecked();
MStoreFixedSlot* store =
@ -2649,6 +2653,10 @@ IonBuilder::inlineUnsafeGetReservedSlot(CallInfo& callInfo, MIRType knownValueTy
return InliningStatus_NotInlined;
uint32_t slot = uint32_t(arg->toConstant()->toInt32());
// Don't inline if it's not a fixed slot.
if (slot >= NativeObject::MAX_FIXED_SLOTS)
return InliningStatus_NotInlined;
callInfo.setImplicitlyUsedUnchecked();
MLoadFixedSlot* load = MLoadFixedSlot::New(alloc(), callInfo.getArg(0), slot);