diff --git a/ecmascript/js_tagged_value.cpp b/ecmascript/js_tagged_value.cpp index 96bd8d161c4c35204c6922f52a5e277a5dbaf9da..7280ac6b375080ad2922ff80d0348c60e3c58c0d 100644 --- a/ecmascript/js_tagged_value.cpp +++ b/ecmascript/js_tagged_value.cpp @@ -406,11 +406,24 @@ ComparisonResult JSTaggedValue::Compare(JSThread *thread, const JSHandleIsNumber()) { + resultX = primX->GetNumber(); + } else { + JSTaggedNumber xNumber = ToNumber(thread, x); + RETURN_VALUE_IF_ABRUPT_COMPLETION(thread, ComparisonResult::UNDEFINED); + resultX = xNumber.GetNumber(); + } + if (y.GetTaggedValue().IsECMAObject() && primY->IsNumber()) { + resultY = primY->GetNumber(); + } else { + JSTaggedNumber yNumber = ToNumber(thread, y); + RETURN_VALUE_IF_ABRUPT_COMPLETION(thread, ComparisonResult::UNDEFINED); + resultY = yNumber.GetNumber(); + } + return StrictNumberCompare(resultX, resultY); } bool JSTaggedValue::IsSameTypeOrHClass(JSTaggedValue x, JSTaggedValue y)