summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGDisassembler.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-09-13 12:51:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-19 20:50:05 +0200
commitd441d6f39bb846989d95bcf5caf387b42414718d (patch)
treee367e64a75991c554930278175d403c072de6bb8 /Source/JavaScriptCore/dfg/DFGDisassembler.h
parent0060b2994c07842f4c59de64b5e3e430525c4b90 (diff)
downloadqtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit. Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGDisassembler.h')
-rw-r--r--Source/JavaScriptCore/dfg/DFGDisassembler.h29
1 files changed, 24 insertions, 5 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGDisassembler.h b/Source/JavaScriptCore/dfg/DFGDisassembler.h
index 8cc58c666..9f6c5b040 100644
--- a/Source/JavaScriptCore/dfg/DFGDisassembler.h
+++ b/Source/JavaScriptCore/dfg/DFGDisassembler.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2012, 2013 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -33,6 +33,8 @@
#include "DFGCommon.h"
#include "LinkBuffer.h"
#include "MacroAssembler.h"
+#include <wtf/HashMap.h>
+#include <wtf/StringPrintStream.h>
#include <wtf/Vector.h>
namespace JSC { namespace DFG {
@@ -49,9 +51,10 @@ public:
{
m_labelForBlockIndex[blockIndex] = label;
}
- void setForNode(NodeIndex nodeIndex, MacroAssembler::Label label)
+ void setForNode(Node* node, MacroAssembler::Label label)
{
- m_labelForNodeIndex[nodeIndex] = label;
+ ASSERT(label.isSet());
+ m_labelForNode.add(node, label);
}
void setEndOfMainPath(MacroAssembler::Label label)
{
@@ -64,14 +67,30 @@ public:
void dump(PrintStream&, LinkBuffer&);
void dump(LinkBuffer&);
+ void reportToProfiler(Profiler::Compilation*, LinkBuffer&);
private:
- void dumpDisassembly(PrintStream&, const char* prefix, LinkBuffer&, MacroAssembler::Label& previousLabel, MacroAssembler::Label currentLabel, NodeIndex context);
+ void dumpHeader(PrintStream&, LinkBuffer&);
+
+ struct DumpedOp {
+ DumpedOp(CodeOrigin codeOrigin, CString text)
+ : codeOrigin(codeOrigin)
+ , text(text)
+ {
+ }
+
+ CodeOrigin codeOrigin;
+ CString text;
+ };
+ void append(Vector<DumpedOp>&, StringPrintStream&, CodeOrigin&);
+ Vector<DumpedOp> createDumpList(LinkBuffer&);
+
+ void dumpDisassembly(PrintStream&, const char* prefix, LinkBuffer&, MacroAssembler::Label& previousLabel, MacroAssembler::Label currentLabel, Node* context);
Graph& m_graph;
MacroAssembler::Label m_startOfCode;
Vector<MacroAssembler::Label> m_labelForBlockIndex;
- Vector<MacroAssembler::Label> m_labelForNodeIndex;
+ HashMap<Node*, MacroAssembler::Label> m_labelForNode;
MacroAssembler::Label m_endOfMainPath;
MacroAssembler::Label m_endOfCode;
};