Title: [226428] trunk/Source/_javascript_Core
- Revision
- 226428
- Author
- [email protected]
- Date
- 2018-01-04 16:17:06 -0800 (Thu, 04 Jan 2018)
Log Message
Add assembler support for x86 lfence and sfence
https://bugs.webkit.org/show_bug.cgi?id=181311
<rdar://problem/36301780>
Reviewed by Michael Saboff.
Useful for testing performance of serializing instructions (hint:
it's not good).
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::lfence):
(JSC::MacroAssemblerX86Common::sfence):
* assembler/X86Assembler.h:
(JSC::X86Assembler::lfence):
(JSC::X86Assembler::sfence):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (226427 => 226428)
--- trunk/Source/_javascript_Core/ChangeLog 2018-01-05 00:16:26 UTC (rev 226427)
+++ trunk/Source/_javascript_Core/ChangeLog 2018-01-05 00:17:06 UTC (rev 226428)
@@ -1,3 +1,21 @@
+2018-01-04 JF Bastien <[email protected]>
+
+ Add assembler support for x86 lfence and sfence
+ https://bugs.webkit.org/show_bug.cgi?id=181311
+ <rdar://problem/36301780>
+
+ Reviewed by Michael Saboff.
+
+ Useful for testing performance of serializing instructions (hint:
+ it's not good).
+
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::lfence):
+ (JSC::MacroAssemblerX86Common::sfence):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::lfence):
+ (JSC::X86Assembler::sfence):
+
2018-01-04 Saam Barati <[email protected]>
Add a new pattern matching rule to Graph::methodOfGettingAValueProfileFor for SetLocal(@nodeWithHeapPrediction)
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (226427 => 226428)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2018-01-05 00:16:26 UTC (rev 226427)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2018-01-05 00:17:06 UTC (rev 226428)
@@ -3886,11 +3886,21 @@
s_avxCheckState = (flags & (1 << 28)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
}
+ void lfence()
+ {
+ m_assembler.lfence();
+ }
+
void mfence()
{
m_assembler.mfence();
}
+ void sfence()
+ {
+ m_assembler.sfence();
+ }
+
void rdtsc()
{
m_assembler.rdtsc();
Modified: trunk/Source/_javascript_Core/assembler/X86Assembler.h (226427 => 226428)
--- trunk/Source/_javascript_Core/assembler/X86Assembler.h 2018-01-05 00:16:26 UTC (rev 226427)
+++ trunk/Source/_javascript_Core/assembler/X86Assembler.h 2018-01-05 00:17:06 UTC (rev 226428)
@@ -344,7 +344,9 @@
typedef enum {
OP3_ROUNDSS_VssWssIb = 0x0A,
OP3_ROUNDSD_VsdWsdIb = 0x0B,
+ OP3_LFENCE = 0xE8,
OP3_MFENCE = 0xF0,
+ OP3_SFENCE = 0xF8,
} ThreeByteOpcodeID;
struct VexPrefix {
@@ -3541,12 +3543,22 @@
m_formatter.twoByteOp64(OP2_XADD, src, base, index, scale, offset);
}
#endif // CPU(X86_64)
-
+
+ void lfence()
+ {
+ m_formatter.threeByteOp(OP2_3BYTE_ESCAPE_AE, OP3_LFENCE);
+ }
+
void mfence()
{
m_formatter.threeByteOp(OP2_3BYTE_ESCAPE_AE, OP3_MFENCE);
}
+ void sfence()
+ {
+ m_formatter.threeByteOp(OP2_3BYTE_ESCAPE_AE, OP3_SFENCE);
+ }
+
void rdtsc()
{
m_formatter.twoByteOp(OP2_RDTSC);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes