Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (160679 => 160680)
--- trunk/Source/_javascript_Core/ChangeLog 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-12-17 01:33:05 UTC (rev 160680)
@@ -1,3 +1,23 @@
+2013-12-16 Mark Hahnenberg <[email protected]>
+
+ Add some missing functions to MacroAssembler
+ https://bugs.webkit.org/show_bug.cgi?id=125809
+
+ Reviewed by Oliver Hunt.
+
+ * assembler/AbstractMacroAssembler.h:
+ * assembler/AssemblerBuffer.h:
+ * assembler/LinkBuffer.cpp:
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::storePtr):
+ (JSC::MacroAssembler::andPtr):
+ * assembler/MacroAssemblerARM64.h:
+ (JSC::MacroAssemblerARM64::and64):
+ (JSC::MacroAssemblerARM64::branchTest8):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::branchTest8):
+ * assembler/X86Assembler.h:
+
2013-12-16 Brent Fulgham <[email protected]>
[Win] Remove dead code after conversion to VS2013
Modified: trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h (160679 => 160680)
--- trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h 2013-12-17 01:33:05 UTC (rev 160680)
@@ -30,6 +30,7 @@
#include "CodeLocation.h"
#include "MacroAssemblerCodeRef.h"
#include "Options.h"
+#include "WeakRandom.h"
#include <wtf/CryptographicallyRandomNumber.h>
#include <wtf/Noncopyable.h>
Modified: trunk/Source/_javascript_Core/assembler/AssemblerBuffer.h (160679 => 160680)
--- trunk/Source/_javascript_Core/assembler/AssemblerBuffer.h 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/assembler/AssemblerBuffer.h 2013-12-17 01:33:05 UTC (rev 160680)
@@ -30,7 +30,6 @@
#include "ExecutableAllocator.h"
#include "JITCompilationEffort.h"
-#include "VM.h"
#include "stdint.h"
#include <string.h>
#include <wtf/Assertions.h>
Modified: trunk/Source/_javascript_Core/assembler/LinkBuffer.cpp (160679 => 160680)
--- trunk/Source/_javascript_Core/assembler/LinkBuffer.cpp 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/assembler/LinkBuffer.cpp 2013-12-17 01:33:05 UTC (rev 160680)
@@ -29,6 +29,7 @@
#if ENABLE(ASSEMBLER)
#include "Options.h"
+#include "VM.h"
#include <wtf/CompilationThread.h>
namespace JSC {
Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.h (160679 => 160680)
--- trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2013-12-17 01:33:05 UTC (rev 160680)
@@ -592,6 +592,11 @@
store32(TrustedImm32(imm), address);
}
+ void storePtr(TrustedImmPtr imm, BaseIndex address)
+ {
+ store32(TrustedImm32(imm), address);
+ }
+
DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address)
{
return store32WithAddressOffsetPatch(src, address);
@@ -729,6 +734,11 @@
and64(imm, srcDest);
}
+ void andPtr(TrustedImmPtr imm, RegisterID srcDest)
+ {
+ and64(imm, srcDest);
+ }
+
void lshiftPtr(Imm32 imm, RegisterID srcDest)
{
lshift64(trustedImm32ForShift(imm), srcDest);
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (160679 => 160680)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h 2013-12-17 01:33:05 UTC (rev 160680)
@@ -351,6 +351,19 @@
signExtend32ToPtr(imm, getCachedDataTempRegisterIDAndInvalidate());
m_assembler.and_<64>(dest, dest, dataTempRegister);
}
+
+ void and64(TrustedImmPtr imm, RegisterID dest)
+ {
+ LogicalImmediate logicalImm = LogicalImmediate::create64(reinterpret_cast<uint64_t>(imm.m_value));
+
+ if (logicalImm.isValid()) {
+ m_assembler.and_<64>(dest, dest, logicalImm);
+ return;
+ }
+
+ move(imm, getCachedDataTempRegisterIDAndInvalidate());
+ m_assembler.and_<64>(dest, dest, dataTempRegister);
+ }
void countLeadingZeros32(RegisterID src, RegisterID dest)
{
@@ -1753,6 +1766,12 @@
return branchTest32(cond, dataTempRegister, mask);
}
+ Jump branchTest8(ResultCondition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1))
+ {
+ load8(address, getCachedDataTempRegisterIDAndInvalidate());
+ return branchTest32(cond, dataTempRegister, mask);
+ }
+
Jump branch32WithUnalignedHalfWords(RelationalCondition cond, BaseIndex left, TrustedImm32 right)
{
return branch32(cond, left, right);
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (160679 => 160680)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2013-12-17 01:33:05 UTC (rev 160680)
@@ -1405,6 +1405,13 @@
return branchTest32(cond, addressTempRegister, mask);
}
+ Jump branchTest8(ResultCondition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1))
+ {
+ // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/
+ load8(address, addressTempRegister);
+ return branchTest32(cond, addressTempRegister, mask);
+ }
+
Jump branchTest8(ResultCondition cond, Address address, TrustedImm32 mask = TrustedImm32(-1))
{
// use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/
Modified: trunk/Source/_javascript_Core/assembler/X86Assembler.h (160679 => 160680)
--- trunk/Source/_javascript_Core/assembler/X86Assembler.h 2013-12-17 01:32:12 UTC (rev 160679)
+++ trunk/Source/_javascript_Core/assembler/X86Assembler.h 2013-12-17 01:33:05 UTC (rev 160680)
@@ -30,6 +30,7 @@
#include "AssemblerBuffer.h"
#include "JITCompilationEffort.h"
+#include <limits.h>
#include <stdint.h>
#include <wtf/Assertions.h>
#include <wtf/Vector.h>