Log Message
Add storeFence support for ARMv7 https://bugs.webkit.org/show_bug.cgi?id=164733
Reviewed by Saam Barati. * assembler/ARMAssembler.h: (JSC::ARMAssembler::dmbISHST): Added. * assembler/ARMv7Assembler.h: Typo fixed, DMB has only T1 encoding. (JSC::ARMv7Assembler::dmbSY): (JSC::ARMv7Assembler::dmbISHST): Added. * assembler/MacroAssemblerARM.h: (JSC::MacroAssemblerARM::storeFence): * assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::storeFence):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (209391 => 209392)
--- trunk/Source/_javascript_Core/ChangeLog 2016-12-06 12:16:06 UTC (rev 209391)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-12-06 15:34:22 UTC (rev 209392)
@@ -1,3 +1,20 @@
+2016-12-06 Csaba Osztrogonác <o...@webkit.org>
+
+ Add storeFence support for ARMv7
+ https://bugs.webkit.org/show_bug.cgi?id=164733
+
+ Reviewed by Saam Barati.
+
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::dmbISHST): Added.
+ * assembler/ARMv7Assembler.h: Typo fixed, DMB has only T1 encoding.
+ (JSC::ARMv7Assembler::dmbSY):
+ (JSC::ARMv7Assembler::dmbISHST): Added.
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::storeFence):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::storeFence):
+
2016-12-05 Matt Baker <mattba...@apple.com>
Web Inspector: remove ASSERT from InspectorDebuggerAgent::derefAsyncCallData
Modified: trunk/Source/_javascript_Core/assembler/ARMAssembler.h (209391 => 209392)
--- trunk/Source/_javascript_Core/assembler/ARMAssembler.h 2016-12-06 12:16:06 UTC (rev 209391)
+++ trunk/Source/_javascript_Core/assembler/ARMAssembler.h 2016-12-06 15:34:22 UTC (rev 209392)
@@ -215,6 +215,7 @@
#endif
NOP = 0xe1a00000,
DMB_SY = 0xf57ff05f,
+ DMB_ISHST = 0xf57ff05a,
#if HAVE(ARM_IDIV_INSTRUCTIONS)
SDIV = 0x0710f010,
UDIV = 0x0730f010,
@@ -722,6 +723,11 @@
m_buffer.putInt(DMB_SY);
}
+ void dmbISHST()
+ {
+ m_buffer.putInt(DMB_ISHST);
+ }
+
void bx(int rm, Condition cc = AL)
{
emitInstruction(toARMWord(cc) | BX, 0, 0, RM(rm));
Modified: trunk/Source/_javascript_Core/assembler/ARMv7Assembler.h (209391 => 209392)
--- trunk/Source/_javascript_Core/assembler/ARMv7Assembler.h 2016-12-06 12:16:06 UTC (rev 209391)
+++ trunk/Source/_javascript_Core/assembler/ARMv7Assembler.h 2016-12-06 15:34:22 UTC (rev 209392)
@@ -681,7 +681,7 @@
OP_MOVT = 0xF2C0,
OP_UBFX_T1 = 0xF3C0,
OP_NOP_T2a = 0xF3AF,
- OP_DMB_SY_T2a = 0xF3BF,
+ OP_DMB_T1a = 0xF3BF,
OP_STRB_imm_T3 = 0xF800,
OP_STRB_reg_T2 = 0xF800,
OP_LDRB_imm_T3 = 0xF810,
@@ -715,32 +715,33 @@
} OpcodeID1;
typedef enum {
- OP_VADD_T2b = 0x0A00,
- OP_VDIVb = 0x0A00,
- OP_FLDSb = 0x0A00,
- OP_VLDRb = 0x0A00,
- OP_VMOV_IMM_T2b = 0x0A00,
- OP_VMOV_T2b = 0x0A40,
- OP_VMUL_T2b = 0x0A00,
- OP_FSTSb = 0x0A00,
- OP_VSTRb = 0x0A00,
- OP_VMOV_StoCb = 0x0A10,
- OP_VMOV_CtoSb = 0x0A10,
- OP_VMOV_DtoCb = 0x0A10,
- OP_VMOV_CtoDb = 0x0A10,
- OP_VMRSb = 0x0A10,
- OP_VABS_T2b = 0x0A40,
- OP_VCMPb = 0x0A40,
- OP_VCVT_FPIVFPb = 0x0A40,
- OP_VNEG_T2b = 0x0A40,
- OP_VSUB_T2b = 0x0A40,
- OP_VSQRT_T1b = 0x0A40,
- OP_VCVTSD_T1b = 0x0A40,
- OP_VCVTDS_T1b = 0x0A40,
- OP_NOP_T2b = 0x8000,
- OP_DMB_SY_T2b = 0x8F5F,
- OP_B_T3b = 0x8000,
- OP_B_T4b = 0x9000,
+ OP_VADD_T2b = 0x0A00,
+ OP_VDIVb = 0x0A00,
+ OP_FLDSb = 0x0A00,
+ OP_VLDRb = 0x0A00,
+ OP_VMOV_IMM_T2b = 0x0A00,
+ OP_VMOV_T2b = 0x0A40,
+ OP_VMUL_T2b = 0x0A00,
+ OP_FSTSb = 0x0A00,
+ OP_VSTRb = 0x0A00,
+ OP_VMOV_StoCb = 0x0A10,
+ OP_VMOV_CtoSb = 0x0A10,
+ OP_VMOV_DtoCb = 0x0A10,
+ OP_VMOV_CtoDb = 0x0A10,
+ OP_VMRSb = 0x0A10,
+ OP_VABS_T2b = 0x0A40,
+ OP_VCMPb = 0x0A40,
+ OP_VCVT_FPIVFPb = 0x0A40,
+ OP_VNEG_T2b = 0x0A40,
+ OP_VSUB_T2b = 0x0A40,
+ OP_VSQRT_T1b = 0x0A40,
+ OP_VCVTSD_T1b = 0x0A40,
+ OP_VCVTDS_T1b = 0x0A40,
+ OP_NOP_T2b = 0x8000,
+ OP_DMB_SY_T1b = 0x8F5F,
+ OP_DMB_ISHST_T1b = 0x8F5A,
+ OP_B_T3b = 0x8000,
+ OP_B_T4b = 0x9000,
} OpcodeID2;
struct FourFours {
@@ -2042,9 +2043,14 @@
void dmbSY()
{
- m_formatter.twoWordOp16Op16(OP_DMB_SY_T2a, OP_DMB_SY_T2b);
+ m_formatter.twoWordOp16Op16(OP_DMB_T1a, OP_DMB_SY_T1b);
}
+ void dmbISHST()
+ {
+ m_formatter.twoWordOp16Op16(OP_DMB_T1a, OP_DMB_ISHST_T1b);
+ }
+
AssemblerLabel labelIgnoringWatchpoints()
{
return m_formatter.label();
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h (209391 => 209392)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h 2016-12-06 12:16:06 UTC (rev 209391)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h 2016-12-06 15:34:22 UTC (rev 209392)
@@ -1465,9 +1465,7 @@
void storeFence()
{
- // FIXME: We should actually implement this. The only current caller is related to
- // concurrent GC, which is disabled on 32-bit systems.
- // https://bugs.webkit.org/show_bug.cgi?id=164733
+ m_assembler.dmbISHST();
}
static FunctionPtr readCallTarget(CodeLocationCall call)
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (209391 => 209392)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2016-12-06 12:16:06 UTC (rev 209391)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2016-12-06 15:34:22 UTC (rev 209392)
@@ -1346,9 +1346,7 @@
void storeFence()
{
- // FIXME: We should actually implement this. The only current caller is related to
- // concurrent GC, which is disabled on 32-bit systems.
- // https://bugs.webkit.org/show_bug.cgi?id=164733
+ m_assembler.dmbISHST();
}
static void replaceWithJump(CodeLocationLabel instructionStart, CodeLocationLabel destination)
_______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes