Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (95651 => 95652)
--- trunk/Source/_javascript_Core/ChangeLog 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-09-21 18:33:43 UTC (rev 95652)
@@ -1,3 +1,29 @@
+2011-09-20 Gavin Barraclough <[email protected]>
+
+ MacroAssembler fixes.
+ https://bugs.webkit.org/show_bug.cgi?id=68494
+
+ Reviewed by Sam Weinig.
+
+ Add X86-64's 3 operand or32 to other MacroAssembler, fix load32's [const] void* mismatch
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::orPtr):
+ (JSC::MacroAssembler::loadPtr):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::or32):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::or32):
+ * assembler/MacroAssemblerMIPS.h:
+ (JSC::MacroAssemblerMIPS::or32):
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::or32):
+ (JSC::MacroAssemblerSH4::load32):
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::load32):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::load32):
+
2011-09-20 Geoffrey Garen <[email protected]>
Some Heap cleanup.
Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.h (95651 => 95652)
--- trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2011-09-21 18:33:43 UTC (rev 95652)
@@ -214,6 +214,11 @@
or32(src, dest);
}
+ void orPtr(RegisterID op1, RegisterID op2, RegisterID dest)
+ {
+ or32(op1, op2, dest);
+ }
+
void orPtr(TrustedImmPtr imm, RegisterID dest)
{
or32(TrustedImm32(imm), dest);
@@ -260,7 +265,7 @@
load32(address, dest);
}
- void loadPtr(void* address, RegisterID dest)
+ void loadPtr(const void* address, RegisterID dest)
{
load32(address, dest);
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h (95651 => 95652)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h 2011-09-21 18:33:43 UTC (rev 95652)
@@ -171,6 +171,11 @@
m_assembler.orrs_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0));
}
+ void or32(RegisterID op1, RegisterID op2, RegisterID dest)
+ {
+ m_assembler.orrs_r(dest, op1, op2);
+ }
+
void rshift32(RegisterID shift_amount, RegisterID dest)
{
ARMWord w = ARMAssembler::getOp2(0x1f);
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (95651 => 95652)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2011-09-21 18:33:43 UTC (rev 95652)
@@ -284,6 +284,11 @@
}
}
+ void or32(RegisterID op1, RegisterID op2, RegisterID dest)
+ {
+ m_assembler.orr(dest, op1, op2);
+ }
+
void rshift32(RegisterID shift_amount, RegisterID dest)
{
// Clamp the shift to the range 0..31
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (95651 => 95652)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2011-09-21 18:33:43 UTC (rev 95652)
@@ -301,6 +301,11 @@
m_assembler.orInsn(dest, dest, src);
}
+ void or32(RegisterID op1, RegisterID op2, RegisterID dest)
+ {
+ m_assembler.orInsn(dest, op1, op2);
+ }
+
void or32(TrustedImm32 imm, RegisterID dest)
{
if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth)
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerSH4.h (95651 => 95652)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerSH4.h 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerSH4.h 2011-09-21 18:33:43 UTC (rev 95652)
@@ -221,6 +221,18 @@
releaseScratch(scr);
}
+ void or32(RegisterID op1, RegisterID op2, RegisterID dest)
+ {
+ if (op1 == op2)
+ move(op1, dest);
+ else if (op1 == dest)
+ or32(op2, dest);
+ else {
+ move(op2, dest);
+ or32(op1, dest);
+ }
+ }
+
void rshift32(RegisterID shiftamount, RegisterID dest)
{
compare32(32, shiftamount, Equal);
@@ -529,9 +541,9 @@
releaseScratch(scr);
}
- void load32(void* address, RegisterID dest)
+ void load32(const void* address, RegisterID dest)
{
- m_assembler.loadConstant(reinterpret_cast<uint32_t>(address), dest);
+ m_assembler.loadConstant(reinterpret_cast<uint32_t>(const_cast<void*>(address)), dest);
m_assembler.movlMemReg(dest, dest);
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86.h (95651 => 95652)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86.h 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86.h 2011-09-21 18:33:43 UTC (rev 95652)
@@ -83,7 +83,7 @@
m_assembler.subl_im(imm.m_value, address.m_ptr);
}
- void load32(void* address, RegisterID dest)
+ void load32(const void* address, RegisterID dest)
{
m_assembler.movl_mr(address, dest);
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h (95651 => 95652)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h 2011-09-21 18:18:59 UTC (rev 95651)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h 2011-09-21 18:33:43 UTC (rev 95652)
@@ -77,7 +77,7 @@
sub32(imm, Address(scratchRegister));
}
- void load32(void* address, RegisterID dest)
+ void load32(const void* address, RegisterID dest)
{
if (dest == X86Registers::eax)
m_assembler.movl_mEAX(address);