Title: [173794] trunk/Source/_javascript_Core
- Revision
- 173794
- Author
- [email protected]
- Date
- 2014-09-20 11:45:54 -0700 (Sat, 20 Sep 2014)
Log Message
FTL OSR exit should do reboxing and value recovery in the same pass
https://bugs.webkit.org/show_bug.cgi?id=136977
Reviewed by Oliver Hunt.
It's conceptually simpler to have all of the logic in one place. After the
recover-and-rebox loop is done, all of the exit values are in the form that the baseline
JIT would want them to be in; the only remaining task is to move them into the right
place on the stack after we do all of the necessary stack adjustments.
* ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (173793 => 173794)
--- trunk/Source/_javascript_Core/ChangeLog 2014-09-20 17:59:58 UTC (rev 173793)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-09-20 18:45:54 UTC (rev 173794)
@@ -1,3 +1,18 @@
+2014-09-20 Filip Pizlo <[email protected]>
+
+ FTL OSR exit should do reboxing and value recovery in the same pass
+ https://bugs.webkit.org/show_bug.cgi?id=136977
+
+ Reviewed by Oliver Hunt.
+
+ It's conceptually simpler to have all of the logic in one place. After the
+ recover-and-rebox loop is done, all of the exit values are in the form that the baseline
+ JIT would want them to be in; the only remaining task is to move them into the right
+ place on the stack after we do all of the necessary stack adjustments.
+
+ * ftl/FTLOSRExitCompiler.cpp:
+ (JSC::FTL::compileStub):
+
2014-09-19 Filip Pizlo <[email protected]>
StorageAccessData should be referenced in a sensible way
Modified: trunk/Source/_javascript_Core/ftl/FTLOSRExitCompiler.cpp (173793 => 173794)
--- trunk/Source/_javascript_Core/ftl/FTLOSRExitCompiler.cpp 2014-09-20 17:59:58 UTC (rev 173793)
+++ trunk/Source/_javascript_Core/ftl/FTLOSRExitCompiler.cpp 2014-09-20 18:45:54 UTC (rev 173794)
@@ -122,7 +122,7 @@
}
// Save all state from wherever the exit data tells us it was, into the appropriate place in
- // the scratch buffer. This doesn't rebox any values yet.
+ // the scratch buffer. This also does the reboxing.
for (unsigned index = exit.m_values.size(); index--;) {
ExitValue value = exit.m_values[index];
@@ -197,6 +197,9 @@
break;
}
+ reboxAccordingToFormat(
+ value.valueFormat(), jit, GPRInfo::regT0, GPRInfo::regT1, GPRInfo::regT2);
+
jit.store64(GPRInfo::regT0, scratch + index);
}
@@ -338,15 +341,12 @@
arityReturnPCReady.link(&jit);
- // Now get state out of the scratch buffer and place it back into the stack. This part does
- // all reboxing.
+ // Now get state out of the scratch buffer and place it back into the stack. The values are
+ // already reboxed so we just move them.
for (unsigned index = exit.m_values.size(); index--;) {
int operand = exit.m_values.operandForIndex(index);
- ExitValue value = exit.m_values[index];
jit.load64(scratch + index, GPRInfo::regT0);
- reboxAccordingToFormat(
- value.valueFormat(), jit, GPRInfo::regT0, GPRInfo::regT1, GPRInfo::regT2);
jit.store64(GPRInfo::regT0, AssemblyHelpers::addressFor(static_cast<VirtualRegister>(operand)));
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes