summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/assembler/MacroAssembler.cpp
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2016-08-25 19:20:41 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:30:55 +0000
commit6882a04fb36642862b11efe514251d32070c3d65 (patch)
treeb7959826000b061fd5ccc7512035c7478742f7b0 /Source/JavaScriptCore/assembler/MacroAssembler.cpp
parentab6df191029eeeb0b0f16f127d553265659f739e (diff)
downloadqtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
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)