summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/assembler/MacroAssembler.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
commit881da28418d380042aa95a97f0cbd42560a64f7c (patch)
treea794dff3274695e99c651902dde93d934ea7a5af /Source/JavaScriptCore/assembler/MacroAssembler.cpp
parent7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff)
parent0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff)
downloadqtwebkit-881da28418d380042aa95a97f0cbd42560a64f7c.tar.gz
Merge 'wip/next' into dev
Change-Id: Iff9ee5e23bb326c4371ec8ed81d56f2f05d680e9
Diffstat (limited to 'Source/JavaScriptCore/assembler/MacroAssembler.cpp')
-rw-r--r--Source/JavaScriptCore/assembler/MacroAssembler.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/assembler/MacroAssembler.cpp b/Source/JavaScriptCore/assembler/MacroAssembler.cpp
index 2cff056d2..0cd5bcfb0 100644
--- a/Source/JavaScriptCore/assembler/MacroAssembler.cpp
+++ b/Source/JavaScriptCore/assembler/MacroAssembler.cpp
@@ -28,11 +28,135 @@
#if ENABLE(ASSEMBLER)
+#include <wtf/PrintStream.h>
+
namespace JSC {
const double MacroAssembler::twoToThe32 = (double)0x100000000ull;
+#if ENABLE(MASM_PROBE)
+static void stdFunctionCallback(MacroAssembler::ProbeContext* context)
+{
+ auto func = static_cast<const std::function<void (MacroAssembler::ProbeContext*)>*>(context->arg1);
+ (*func)(context);
+}
+
+void MacroAssembler::probe(std::function<void (MacroAssembler::ProbeContext*)> func)
+{
+ probe(stdFunctionCallback, new std::function<void (MacroAssembler::ProbeContext*)>(func), 0);
+}
+#endif // ENABLE(MASM_PROBE)
+
} // namespace JSC
+namespace WTF {
+
+using namespace JSC;
+
+void printInternal(PrintStream& out, MacroAssembler::RelationalCondition cond)
+{
+ switch (cond) {
+ case MacroAssembler::Equal:
+ out.print("Equal");
+ return;
+ case MacroAssembler::NotEqual:
+ out.print("NotEqual");
+ return;
+ case MacroAssembler::Above:
+ out.print("Above");
+ return;
+ case MacroAssembler::AboveOrEqual:
+ out.print("AboveOrEqual");
+ return;
+ case MacroAssembler::Below:
+ out.print("Below");
+ return;
+ case MacroAssembler::BelowOrEqual:
+ out.print("BelowOrEqual");
+ return;
+ case MacroAssembler::GreaterThan:
+ out.print("GreaterThan");
+ return;
+ case MacroAssembler::GreaterThanOrEqual:
+ out.print("GreaterThanOrEqual");
+ return;
+ case MacroAssembler::LessThan:
+ out.print("LessThan");
+ return;
+ case MacroAssembler::LessThanOrEqual:
+ out.print("LessThanOrEqual");
+ return;
+ }
+ RELEASE_ASSERT_NOT_REACHED();
+}
+
+void printInternal(PrintStream& out, MacroAssembler::ResultCondition cond)
+{
+ switch (cond) {
+ case MacroAssembler::Overflow:
+ out.print("Overflow");
+ return;
+ case MacroAssembler::Signed:
+ out.print("Signed");
+ return;
+ case MacroAssembler::PositiveOrZero:
+ out.print("PositiveOrZero");
+ return;
+ case MacroAssembler::Zero:
+ out.print("Zero");
+ return;
+ case MacroAssembler::NonZero:
+ out.print("NonZero");
+ return;
+ }
+ RELEASE_ASSERT_NOT_REACHED();
+}
+
+void printInternal(PrintStream& out, MacroAssembler::DoubleCondition cond)
+{
+ switch (cond) {
+ case MacroAssembler::DoubleEqual:
+ out.print("DoubleEqual");
+ return;
+ case MacroAssembler::DoubleNotEqual:
+ out.print("DoubleNotEqual");
+ return;
+ case MacroAssembler::DoubleGreaterThan:
+ out.print("DoubleGreaterThan");
+ return;
+ case MacroAssembler::DoubleGreaterThanOrEqual:
+ out.print("DoubleGreaterThanOrEqual");
+ return;
+ case MacroAssembler::DoubleLessThan:
+ out.print("DoubleLessThan");
+ return;
+ case MacroAssembler::DoubleLessThanOrEqual:
+ out.print("DoubleLessThanOrEqual");
+ return;
+ case MacroAssembler::DoubleEqualOrUnordered:
+ out.print("DoubleEqualOrUnordered");
+ return;
+ case MacroAssembler::DoubleNotEqualOrUnordered:
+ out.print("DoubleNotEqualOrUnordered");
+ return;
+ case MacroAssembler::DoubleGreaterThanOrUnordered:
+ out.print("DoubleGreaterThanOrUnordered");
+ return;
+ case MacroAssembler::DoubleGreaterThanOrEqualOrUnordered:
+ out.print("DoubleGreaterThanOrEqualOrUnordered");
+ return;
+ case MacroAssembler::DoubleLessThanOrUnordered:
+ out.print("DoubleLessThanOrUnordered");
+ return;
+ case MacroAssembler::DoubleLessThanOrEqualOrUnordered:
+ out.print("DoubleLessThanOrEqualOrUnordered");
+ return;
+ }
+
+ RELEASE_ASSERT_NOT_REACHED();
+}
+
+} // namespace WTF
+
#endif // ENABLE(ASSEMBLER)