Title: [157680] trunk/Source/_javascript_Core
- Revision
- 157680
- Author
- [email protected]
- Date
- 2013-10-19 14:03:51 -0700 (Sat, 19 Oct 2013)
Log Message
FTL::Location should treat the offset as an addend in the case of a Register location
https://bugs.webkit.org/show_bug.cgi?id=123062
Reviewed by Sam Weinig.
* ftl/FTLLocation.cpp:
(JSC::FTL::Location::forStackmaps):
(JSC::FTL::Location::dump):
(JSC::FTL::Location::restoreInto):
* ftl/FTLLocation.h:
(JSC::FTL::Location::forRegister):
(JSC::FTL::Location::hasAddend):
(JSC::FTL::Location::addend):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (157679 => 157680)
--- trunk/Source/_javascript_Core/ChangeLog 2013-10-19 20:56:44 UTC (rev 157679)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-10-19 21:03:51 UTC (rev 157680)
@@ -1,3 +1,19 @@
+2013-10-19 Filip Pizlo <[email protected]>
+
+ FTL::Location should treat the offset as an addend in the case of a Register location
+ https://bugs.webkit.org/show_bug.cgi?id=123062
+
+ Reviewed by Sam Weinig.
+
+ * ftl/FTLLocation.cpp:
+ (JSC::FTL::Location::forStackmaps):
+ (JSC::FTL::Location::dump):
+ (JSC::FTL::Location::restoreInto):
+ * ftl/FTLLocation.h:
+ (JSC::FTL::Location::forRegister):
+ (JSC::FTL::Location::hasAddend):
+ (JSC::FTL::Location::addend):
+
2013-10-19 Nadav Rotem <[email protected]>
DFG dominators: document and rename stuff.
Modified: trunk/Source/_javascript_Core/ftl/FTLLocation.cpp (157679 => 157680)
--- trunk/Source/_javascript_Core/ftl/FTLLocation.cpp 2013-10-19 20:56:44 UTC (rev 157679)
+++ trunk/Source/_javascript_Core/ftl/FTLLocation.cpp 2013-10-19 21:03:51 UTC (rev 157680)
@@ -42,7 +42,7 @@
return Location();
case StackMaps::Location::Register:
- return forRegister(location.dwarfRegNum);
+ return forRegister(location.dwarfRegNum, location.offset);
case StackMaps::Location::Indirect:
return forIndirect(location.dwarfRegNum, location.offset);
@@ -64,6 +64,8 @@
out.print(", reg", dwarfRegNum());
if (hasOffset())
out.print(", ", offset());
+ if (hasAddend())
+ out.print(", ", addend());
if (hasConstant())
out.print(", ", constant());
out.print(")");
@@ -130,15 +132,17 @@
if (MacroAssembler::isStackRelated(gpr())) {
// These don't get saved.
jit.move(gpr(), result);
- return;
- }
+ } else
+ jit.load64(savedRegisters + offsetOfGPR(gpr()), result);
- jit.load64(savedRegisters + offsetOfGPR(gpr()), result);
+ if (addend())
+ jit.add64(MacroAssembler::TrustedImm32(addend()), result);
return;
}
if (isFPR()) {
jit.load64(savedRegisters + offsetOfFPR(fpr()), result);
+ ASSERT(!addend());
return;
}
Modified: trunk/Source/_javascript_Core/ftl/FTLLocation.h (157679 => 157680)
--- trunk/Source/_javascript_Core/ftl/FTLLocation.h 2013-10-19 20:56:44 UTC (rev 157679)
+++ trunk/Source/_javascript_Core/ftl/FTLLocation.h 2013-10-19 21:03:51 UTC (rev 157680)
@@ -58,11 +58,12 @@
u.constant = 1;
}
- static Location forRegister(int16_t dwarfRegNum)
+ static Location forRegister(int16_t dwarfRegNum, int32_t addend)
{
Location result;
result.m_kind = Register;
result.u.variable.dwarfRegNum = dwarfRegNum;
+ result.u.variable.offset = addend;
return result;
}
@@ -101,6 +102,13 @@
return u.variable.offset;
}
+ bool hasAddend() const { return kind() == Register; }
+ int32_t addend() const
+ {
+ ASSERT(hasAddend());
+ return u.variable.offset;
+ }
+
bool hasConstant() const { return kind() == Constant; }
int64_t constant() const
{
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes