diff --git a/ecmascript/compiler/number_speculative_lowering.cpp b/ecmascript/compiler/number_speculative_lowering.cpp index 96e6d71901..23f4b50fee 100644 --- a/ecmascript/compiler/number_speculative_lowering.cpp +++ b/ecmascript/compiler/number_speculative_lowering.cpp @@ -80,6 +80,10 @@ void NumberSpeculativeLowering::VisitGate(GateRef gate) VisitLoadElement(gate); break; } + case OpCode::INDEX_CHECK: { + VisitIndexCheck(gate); + break; + } case OpCode::LOAD_ARRAY_LENGTH: case OpCode::LOAD_TYPED_ARRAY_LENGTH: { VisitLoadArrayLength(gate); @@ -494,6 +498,12 @@ void NumberSpeculativeLowering::VisitPhi(GateRef gate) } } +void NumberSpeculativeLowering::VisitIndexCheck(GateRef gate) +{ + acc_.SetGateType(gate, GateType::NJSValue()); + acc_.SetMachineType(gate, MachineType::I32); +} + void NumberSpeculativeLowering::VisitLoadArrayLength(GateRef gate) { acc_.SetGateType(gate, GateType::NJSValue()); diff --git a/ecmascript/compiler/number_speculative_lowering.h b/ecmascript/compiler/number_speculative_lowering.h index 47cdc1ee9c..a7e2965b41 100644 --- a/ecmascript/compiler/number_speculative_lowering.h +++ b/ecmascript/compiler/number_speculative_lowering.h @@ -45,6 +45,7 @@ private: void VisitUndefinedStrictEq(GateRef gate); void VisitCallBuiltins(GateRef gate); void VisitRangeGuard(GateRef gate); + void VisitIndexCheck(GateRef gate); void VisitLoadArrayLength(GateRef gate); void VisitLoadElement(GateRef gate); void VisitLoadProperty(GateRef gate);