summaryrefslogtreecommitdiff
path: root/js/src/jit/MCallOptimize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit/MCallOptimize.cpp')
-rw-r--r--js/src/jit/MCallOptimize.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/js/src/jit/MCallOptimize.cpp b/js/src/jit/MCallOptimize.cpp
index 1a98432ffa..064c7ee7d2 100644
--- a/js/src/jit/MCallOptimize.cpp
+++ b/js/src/jit/MCallOptimize.cpp
@@ -2894,6 +2894,7 @@ IonBuilder::inlineToInteger(CallInfo& callInfo)
if (input->mightBeType(MIRType::Object) ||
input->mightBeType(MIRType::String) ||
input->mightBeType(MIRType::Symbol) ||
+ input->mightBeType(MIRType::BigInt) ||
input->mightBeType(MIRType::Undefined) ||
input->mightBeMagicType())
{
@@ -3021,12 +3022,16 @@ IonBuilder::inlineAtomicsCompareExchange(CallInfo& callInfo)
// These guards are desirable here and in subsequent atomics to
// avoid bad bailouts with MTruncateToInt32, see https://bugzilla.mozilla.org/show_bug.cgi?id=1141986#c20.
MDefinition* oldval = callInfo.getArg(2);
- if (oldval->mightBeType(MIRType::Object) || oldval->mightBeType(MIRType::Symbol))
+ if (oldval->mightBeType(MIRType::Object) || oldval->mightBeType(MIRType::Symbol) ||
+ oldval->mightBeType(MIRType::BigInt)) {
return InliningStatus_NotInlined;
+ }
MDefinition* newval = callInfo.getArg(3);
- if (newval->mightBeType(MIRType::Object) || newval->mightBeType(MIRType::Symbol))
+ if (newval->mightBeType(MIRType::Object) || newval->mightBeType(MIRType::Symbol) ||
+ newval->mightBeType(MIRType::BigInt)) {
return InliningStatus_NotInlined;
+ }
Scalar::Type arrayType;
bool requiresCheck = false;
@@ -3063,8 +3068,10 @@ IonBuilder::inlineAtomicsExchange(CallInfo& callInfo)
}
MDefinition* value = callInfo.getArg(2);
- if (value->mightBeType(MIRType::Object) || value->mightBeType(MIRType::Symbol))
+ if (value->mightBeType(MIRType::Object) || value->mightBeType(MIRType::Symbol) ||
+ value->mightBeType(MIRType::BigInt)) {
return InliningStatus_NotInlined;
+ }
Scalar::Type arrayType;
bool requiresCheck = false;
@@ -3151,8 +3158,10 @@ IonBuilder::inlineAtomicsStore(CallInfo& callInfo)
return InliningStatus_NotInlined;
}
- if (value->mightBeType(MIRType::Object) || value->mightBeType(MIRType::Symbol))
+ if (value->mightBeType(MIRType::Object) || value->mightBeType(MIRType::Symbol) ||
+ value->mightBeType(MIRType::BigInt)) {
return InliningStatus_NotInlined;
+ }
Scalar::Type arrayType;
bool requiresCheck = false;
@@ -3194,8 +3203,10 @@ IonBuilder::inlineAtomicsBinop(CallInfo& callInfo, InlinableNative target)
}
MDefinition* value = callInfo.getArg(2);
- if (value->mightBeType(MIRType::Object) || value->mightBeType(MIRType::Symbol))
+ if (value->mightBeType(MIRType::Object) || value->mightBeType(MIRType::Symbol) ||
+ value->mightBeType(MIRType::BigInt)) {
return InliningStatus_NotInlined;
+ }
Scalar::Type arrayType;
bool requiresCheck = false;