Fix slot access intrinsics for objects with > 16 reserved slots.
parent
8098b926f8
commit
317673d504
|
@ -2618,6 +2618,10 @@ IonBuilder::inlineUnsafeSetReservedSlot(CallInfo& callInfo)
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
uint32_t slot = uint32_t(arg->toConstant()->toInt32());
|
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();
|
callInfo.setImplicitlyUsedUnchecked();
|
||||||
|
|
||||||
MStoreFixedSlot* store =
|
MStoreFixedSlot* store =
|
||||||
|
@ -2649,6 +2653,10 @@ IonBuilder::inlineUnsafeGetReservedSlot(CallInfo& callInfo, MIRType knownValueTy
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
uint32_t slot = uint32_t(arg->toConstant()->toInt32());
|
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();
|
callInfo.setImplicitlyUsedUnchecked();
|
||||||
|
|
||||||
MLoadFixedSlot* load = MLoadFixedSlot::New(alloc(), callInfo.getArg(0), slot);
|
MLoadFixedSlot* load = MLoadFixedSlot::New(alloc(), callInfo.getArg(0), slot);
|
||||||
|
|
Loading…
Reference in New Issue