Title: [197186] trunk/Source/_javascript_Core
- Revision
- 197186
- Author
- commit-qu...@webkit.org
- Date
- 2016-02-26 11:18:55 -0800 (Fri, 26 Feb 2016)
Log Message
[JSC] Add32(Imm, Tmp, Tmp) does not ZDef the destination if Imm is zero
https://bugs.webkit.org/show_bug.cgi?id=154704
Patch by Benjamin Poulain <bpoul...@apple.com> on 2016-02-26
Reviewed by Geoffrey Garen.
If the Imm is zero, we should still zero the top bits
to match the definition in AirOpcodes.
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::add32):
* b3/testb3.cpp:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (197185 => 197186)
--- trunk/Source/_javascript_Core/ChangeLog 2016-02-26 19:18:06 UTC (rev 197185)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-02-26 19:18:55 UTC (rev 197186)
@@ -1,3 +1,17 @@
+2016-02-26 Benjamin Poulain <bpoul...@apple.com>
+
+ [JSC] Add32(Imm, Tmp, Tmp) does not ZDef the destination if Imm is zero
+ https://bugs.webkit.org/show_bug.cgi?id=154704
+
+ Reviewed by Geoffrey Garen.
+
+ If the Imm is zero, we should still zero the top bits
+ to match the definition in AirOpcodes.
+
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::add32):
+ * b3/testb3.cpp:
+
2016-02-26 Oliver Hunt <oli...@apple.com>
Make testRegExp not crash when given an invalid regexp
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (197185 => 197186)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2016-02-26 19:18:06 UTC (rev 197185)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2016-02-26 19:18:55 UTC (rev 197186)
@@ -198,7 +198,7 @@
void add32(TrustedImm32 imm, RegisterID src, RegisterID dest)
{
if (!imm.m_value) {
- move(src, dest);
+ zeroExtend32ToPtr(src, dest);
return;
}
Modified: trunk/Source/_javascript_Core/b3/testb3.cpp (197185 => 197186)
--- trunk/Source/_javascript_Core/b3/testb3.cpp 2016-02-26 19:18:06 UTC (rev 197185)
+++ trunk/Source/_javascript_Core/b3/testb3.cpp 2016-02-26 19:18:55 UTC (rev 197186)
@@ -412,6 +412,25 @@
CHECK(inputOutput == a + b);
}
+void testAddArgZeroImmZDef()
+{
+ Procedure proc;
+ BasicBlock* root = proc.addBlock();
+ Value* arg = root->appendNew<Value>(
+ proc, Trunc, Origin(),
+ root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0));
+ Value* constZero = root->appendNew<Const32Value>(proc, Origin(), 0);
+ root->appendNew<ControlValue>(
+ proc, Return, Origin(),
+ root->appendNew<Value>(
+ proc, Add, Origin(),
+ arg,
+ constZero));
+
+ auto code = compile(proc, 0);
+ CHECK(invoke<int64_t>(*code, 0x0123456789abcdef) == 0x89abcdef);
+}
+
void testAddLoadTwice()
{
auto test = [&] (unsigned optLevel) {
@@ -10615,6 +10634,7 @@
RUN_BINARY(testAddArgMem32, int32Operands(), int32Operands());
RUN_BINARY(testAddMemArg32, int32Operands(), int32Operands());
RUN_BINARY(testAddImmMem32, int32Operands(), int32Operands());
+ RUN(testAddArgZeroImmZDef());
RUN(testAddLoadTwice());
RUN(testAddArgDouble(M_PI));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes