Title: [197115] releases/WebKitGTK/webkit-2.12/Source/_javascript_Core
- Revision
- 197115
- Author
- [email protected]
- Date
- 2016-02-25 08:18:42 -0800 (Thu, 25 Feb 2016)
Log Message
Merge r197037 - Stackmaps have problems with double register constraints
https://bugs.webkit.org/show_bug.cgi?id=154643
Reviewed by Geoffrey Garen.
This is currently a benign bug. I found it while playing.
* b3/B3LowerToAir.cpp:
(JSC::B3::Air::LowerToAir::fillStackmap):
* b3/testb3.cpp:
(JSC::B3::testURShiftSelf64):
(JSC::B3::testPatchpointDoubleRegs):
(JSC::B3::zero):
(JSC::B3::run):
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog (197114 => 197115)
--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog 2016-02-25 15:18:21 UTC (rev 197114)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog 2016-02-25 16:18:42 UTC (rev 197115)
@@ -1,3 +1,20 @@
+2016-02-24 Filip Pizlo <[email protected]>
+
+ Stackmaps have problems with double register constraints
+ https://bugs.webkit.org/show_bug.cgi?id=154643
+
+ Reviewed by Geoffrey Garen.
+
+ This is currently a benign bug. I found it while playing.
+
+ * b3/B3LowerToAir.cpp:
+ (JSC::B3::Air::LowerToAir::fillStackmap):
+ * b3/testb3.cpp:
+ (JSC::B3::testURShiftSelf64):
+ (JSC::B3::testPatchpointDoubleRegs):
+ (JSC::B3::zero):
+ (JSC::B3::run):
+
2016-02-23 Keith Miller <[email protected]>
JSC stress tests' standalone-pre.js should exit on the first failure by default
Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/b3/B3LowerToAir.cpp (197114 => 197115)
--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/b3/B3LowerToAir.cpp 2016-02-25 15:18:21 UTC (rev 197114)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/b3/B3LowerToAir.cpp 2016-02-25 16:18:42 UTC (rev 197115)
@@ -991,7 +991,7 @@
case ValueRep::Register:
stackmap->earlyClobbered().clear(value.rep().reg());
arg = Tmp(value.rep().reg());
- append(Move, immOrTmp(value.value()), arg);
+ append(relaxedMoveForType(value.value()->type()), immOrTmp(value.value()), arg);
break;
case ValueRep::StackArgument:
arg = Arg::callArg(value.rep().offsetFromSP());
Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/b3/testb3.cpp (197114 => 197115)
--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/b3/testb3.cpp 2016-02-25 15:18:21 UTC (rev 197114)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/b3/testb3.cpp 2016-02-25 16:18:42 UTC (rev 197115)
@@ -10426,6 +10426,30 @@
check(64);
}
+void testPatchpointDoubleRegs()
+{
+ Procedure proc;
+ BasicBlock* root = proc.addBlock();
+
+ Value* arg = root->appendNew<ArgumentRegValue>(proc, Origin(), FPRInfo::argumentFPR0);
+
+ PatchpointValue* patchpoint = root->appendNew<PatchpointValue>(proc, Double, Origin());
+ patchpoint->append(arg, ValueRep(FPRInfo::fpRegT0));
+ patchpoint->resultConstraint = ValueRep(FPRInfo::fpRegT0);
+
+ unsigned numCalls = 0;
+ patchpoint->setGenerator(
+ [&] (CCallHelpers&, const StackmapGenerationParams&) {
+ numCalls++;
+ });
+
+ root->appendNew<ControlValue>(proc, Return, Origin(), patchpoint);
+
+ auto code = compile(proc);
+ CHECK(numCalls == 1);
+ CHECK(invoke<double>(*code, 42.5) == 42.5);
+}
+
// Make sure the compiler does not try to optimize anything out.
NEVER_INLINE double zero()
{
@@ -11842,6 +11866,8 @@
RUN(testURShiftSelf64());
RUN(testLShiftSelf64());
+ RUN(testPatchpointDoubleRegs());
+
if (tasks.isEmpty())
usage();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes