Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp (248220 => 248221)
--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp 2019-08-04 03:22:41 UTC (rev 248220)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp 2019-08-04 03:22:43 UTC (rev 248221)
@@ -1709,8 +1709,7 @@
return srcDst;
}
-template<typename EqOp>
-RegisterID* BytecodeGenerator::emitEqualityOp(RegisterID* dst, RegisterID* src1, RegisterID* src2)
+bool BytecodeGenerator::emitEqualityOpImpl(RegisterID* dst, RegisterID* src1, RegisterID* src2)
{
if (!canDoPeepholeOptimization())
return false;
@@ -1725,48 +1724,47 @@
if (value == "undefined") {
rewind();
OpIsUndefined::emit(this, dst, op.m_value);
- return dst;
+ return true;
}
if (value == "boolean") {
rewind();
OpIsBoolean::emit(this, dst, op.m_value);
- return dst;
+ return true;
}
if (value == "number") {
rewind();
OpIsNumber::emit(this, dst, op.m_value);
- return dst;
+ return true;
}
if (value == "string") {
rewind();
OpIsCellWithType::emit(this, dst, op.m_value, StringType);
- return dst;
+ return true;
}
if (value == "symbol") {
rewind();
OpIsCellWithType::emit(this, dst, op.m_value, SymbolType);
- return dst;
+ return true;
}
if (Options::useBigInt() && value == "bigint") {
rewind();
OpIsCellWithType::emit(this, dst, op.m_value, BigIntType);
- return dst;
+ return true;
}
if (value == "object") {
rewind();
OpIsObjectOrNull::emit(this, dst, op.m_value);
- return dst;
+ return true;
}
if (value == "function") {
rewind();
OpIsFunction::emit(this, dst, op.m_value);
- return dst;
+ return true;
}
}
}
- EqOp::emit(this, dst, src1, src2);
- return dst;
+ return false;
}
void BytecodeGenerator::emitTypeProfilerExpressionInfo(const JSTextPosition& startDivot, const JSTextPosition& endDivot)
Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h (248220 => 248221)
--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h 2019-08-04 03:22:41 UTC (rev 248220)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h 2019-08-04 03:22:43 UTC (rev 248221)
@@ -710,7 +710,15 @@
RegisterID* emitBinaryOp(OpcodeID, RegisterID* dst, RegisterID* src1, RegisterID* src2, OperandTypes);
template<typename EqOp>
- RegisterID* emitEqualityOp(RegisterID* dst, RegisterID* src1, RegisterID* src2);
+ RegisterID* emitEqualityOp(RegisterID* dst, RegisterID* src1, RegisterID* src2)
+ {
+ if (!emitEqualityOpImpl(dst, src1, src2))
+ EqOp::emit(this, dst, src1, src2);
+ return dst;
+ }
+
+ bool emitEqualityOpImpl(RegisterID* dst, RegisterID* src1, RegisterID* src2);
+
RegisterID* emitCreateThis(RegisterID* dst);
void emitTDZCheck(RegisterID* target);
bool needsTDZCheck(const Variable&);