Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(571)

Unified Diff: pkg/compiler/lib/src/ssa/ssa_tracer.dart

Issue 1819833002: Use exact instruction names in the SSA tracer. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/ssa/ssa_tracer.dart
diff --git a/pkg/compiler/lib/src/ssa/ssa_tracer.dart b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
index 4758afdc07f0083db88972548e5b17fcc43f067b..0b35432aeaf76d2eb96930d6cf8c788289df46cf 100644
--- a/pkg/compiler/lib/src/ssa/ssa_tracer.dart
+++ b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
@@ -160,29 +160,29 @@ class HInstructionStringifier implements HVisitor<String> {
return "Boolify: ${temporaryId(node.inputs[0])}";
}
- String handleInvokeBinary(HInvokeBinary node, String op) {
+ String handleInvokeBinary(HInvokeBinary node, String opcode) {
String left = temporaryId(node.left);
String right= temporaryId(node.right);
- return '$left $op $right';
+ return '$opcode: $left $right';
}
- String visitAdd(HAdd node) => handleInvokeBinary(node, '+');
+ String visitAdd(HAdd node) => handleInvokeBinary(node, 'Add');
- String visitBitAnd(HBitAnd node) => handleInvokeBinary(node, '&');
+ String visitBitAnd(HBitAnd node) => handleInvokeBinary(node, 'BitAnd');
String visitBitNot(HBitNot node) {
String operand = temporaryId(node.operand);
- return "~$operand";
+ return "BitNot: $operand";
}
- String visitBitOr(HBitOr node) => handleInvokeBinary(node, '|');
+ String visitBitOr(HBitOr node) => handleInvokeBinary(node, 'BitOr');
- String visitBitXor(HBitXor node) => handleInvokeBinary(node, '^');
+ String visitBitXor(HBitXor node) => handleInvokeBinary(node, 'BitXor');
String visitBoundsCheck(HBoundsCheck node) {
String lengthId = temporaryId(node.length);
String indexId = temporaryId(node.index);
- return "Bounds check: length = $lengthId, index = $indexId";
+ return "BoundsCheck: length = $lengthId, index = $indexId";
}
String visitBreak(HBreak node) {
@@ -193,7 +193,7 @@ class HInstructionStringifier implements HVisitor<String> {
return "Break: (B${target.id})";
}
- String visitConstant(HConstant constant) => "Constant ${constant.constant}";
+ String visitConstant(HConstant constant) => "Constant: ${constant.constant}";
String visitContinue(HContinue node) {
HBasicBlock target = currentBlock.successors[0];
@@ -203,22 +203,22 @@ class HInstructionStringifier implements HVisitor<String> {
return "Continue: (B${target.id})";
}
- String visitDivide(HDivide node) => handleInvokeBinary(node, '/');
+ String visitDivide(HDivide node) => handleInvokeBinary(node, 'Divide');
- String visitExit(HExit node) => "exit";
+ String visitExit(HExit node) => "Exit";
String visitFieldGet(HFieldGet node) {
if (node.isNullCheck) {
- return 'null check on ${temporaryId(node.receiver)}';
+ return 'FieldGet: NullCheck ${temporaryId(node.receiver)}';
}
String fieldName = node.element.name;
- return 'field get ${temporaryId(node.receiver)}.$fieldName';
+ return 'FieldGet: ${temporaryId(node.receiver)}.$fieldName';
}
String visitFieldSet(HFieldSet node) {
String valueId = temporaryId(node.value);
String fieldName = node.element.name;
- return 'field set ${temporaryId(node.receiver)}.$fieldName to $valueId';
+ return 'FieldSet: ${temporaryId(node.receiver)}.$fieldName to $valueId';
}
String visitReadModifyWrite(HReadModifyWrite node) {
@@ -227,23 +227,23 @@ class HInstructionStringifier implements HVisitor<String> {
String op = node.jsOp;
if (node.isAssignOp) {
String valueId = temporaryId(node.value);
- return 'field-update $receiverId.$fieldName $op= $valueId';
+ return 'ReadModifyWrite: $receiverId.$fieldName $op= $valueId';
} else if (node.isPreOp) {
- return 'field-update $op$receiverId.$fieldName';
+ return 'ReadModifyWrite: $op$receiverId.$fieldName';
} else {
- return 'field-update $receiverId.$fieldName$op';
+ return 'ReadModifyWrite: $receiverId.$fieldName$op';
}
}
String visitLocalGet(HLocalGet node) {
String localName = node.variable.name;
- return 'local get ${temporaryId(node.local)}.$localName';
+ return 'LocalGet: ${temporaryId(node.local)}.$localName';
}
String visitLocalSet(HLocalSet node) {
String valueId = temporaryId(node.value);
String localName = node.variable.name;
- return 'local set ${temporaryId(node.local)}.$localName to $valueId';
+ return 'LocalSet: ${temporaryId(node.local)}.$localName to $valueId';
}
String visitGoto(HGoto node) {
@@ -251,11 +251,11 @@ class HInstructionStringifier implements HVisitor<String> {
return "Goto: (B${target.id})";
}
- String visitGreater(HGreater node) => handleInvokeBinary(node, '>');
+ String visitGreater(HGreater node) => handleInvokeBinary(node, 'Greater');
String visitGreaterEqual(HGreaterEqual node) {
- return handleInvokeBinary(node, '>=');
+ return handleInvokeBinary(node, 'GreaterEqual');
}
- String visitIdentity(HIdentity node) => handleInvokeBinary(node, '===');
+ String visitIdentity(HIdentity node) => handleInvokeBinary(node, 'Identity');
String visitIf(HIf node) {
HBasicBlock thenBlock = currentBlock.successors[0];
@@ -264,8 +264,8 @@ class HInstructionStringifier implements HVisitor<String> {
return "If ($conditionId): (B${thenBlock.id}) else (B${elseBlock.id})";
}
- String visitGenericInvoke(String invokeType, String functionName,
- List<HInstruction> arguments) {
+ String handleGenericInvoke(String invokeType, String functionName,
+ List<HInstruction> arguments) {
StringBuffer argumentsString = new StringBuffer();
for (int i = 0; i < arguments.length; i++) {
if (i != 0) argumentsString.write(", ");
@@ -293,59 +293,60 @@ class HInstructionStringifier implements HVisitor<String> {
JavaScriptBackend backend = compiler.backend;
String cls =
backend.namer.suffixForGetInterceptor(node.interceptedClasses);
- return "Intercept ($cls): $value";
+ return "Interceptor ($cls): $value";
}
- return "Intercept: $value";
+ return "Interceptor: $value";
}
String visitInvokeClosure(HInvokeClosure node)
- => visitInvokeDynamic(node, "closure");
+ => handleInvokeDynamic(node, "InvokeClosure");
- String visitInvokeDynamic(HInvokeDynamic invoke, String kind) {
+ String handleInvokeDynamic(HInvokeDynamic invoke, String kind) {
String receiver = temporaryId(invoke.receiver);
String name = invoke.selector.name;
- String target = "($kind) $receiver.$name";
+ String target = "$receiver.$name";
int offset = HInvoke.ARGUMENTS_OFFSET;
List arguments = invoke.inputs.sublist(offset);
- return visitGenericInvoke("Invoke", target, arguments) +
+ return handleGenericInvoke(kind, target, arguments) +
"(${invoke.mask})";
}
String visitInvokeDynamicMethod(HInvokeDynamicMethod node)
- => visitInvokeDynamic(node, "method");
+ => handleInvokeDynamic(node, "InvokeDynamicMethod");
String visitInvokeDynamicGetter(HInvokeDynamicGetter node)
- => visitInvokeDynamic(node, "get");
+ => handleInvokeDynamic(node, "InvokeDynamicGetter");
String visitInvokeDynamicSetter(HInvokeDynamicSetter node)
- => visitInvokeDynamic(node, "set");
+ => handleInvokeDynamic(node, "InvokeDynamicSetter");
String visitInvokeStatic(HInvokeStatic invoke) {
String target = invoke.element.name;
- return visitGenericInvoke("Invoke", target, invoke.inputs);
+ return handleGenericInvoke("InvokeStatic", target, invoke.inputs);
}
String visitInvokeSuper(HInvokeSuper invoke) {
String target = invoke.element.name;
- return visitGenericInvoke("Invoke super", target, invoke.inputs);
+ return handleGenericInvoke("InvokeSuper", target, invoke.inputs);
}
String visitInvokeConstructorBody(HInvokeConstructorBody invoke) {
String target = invoke.element.name;
- return visitGenericInvoke("Invoke constructor body", target, invoke.inputs);
+ return handleGenericInvoke("InvokeConstructorBody", target, invoke.inputs);
}
String visitForeignCode(HForeignCode foreign) {
- return visitGenericInvoke("Foreign", "${foreign.codeTemplate.ast}",
+ return handleGenericInvoke("ForeignCode", "${foreign.codeTemplate.ast}",
foreign.inputs);
}
String visitForeignNew(HForeignNew node) {
- return visitGenericInvoke("New",
+ return handleGenericInvoke("ForeignNew",
"${node.element.name}",
node.inputs);
}
- String visitLess(HLess node) => handleInvokeBinary(node, '<');
- String visitLessEqual(HLessEqual node) => handleInvokeBinary(node, '<=');
+ String visitLess(HLess node) => handleInvokeBinary(node, 'Less');
+ String visitLessEqual(HLessEqual node) =>
+ handleInvokeBinary(node, 'LessEqual');
String visitLiteralList(HLiteralList node) {
StringBuffer elementsString = new StringBuffer();
@@ -353,65 +354,67 @@ class HInstructionStringifier implements HVisitor<String> {
if (i != 0) elementsString.write(", ");
elementsString.write(temporaryId(node.inputs[i]));
}
- return "Literal list: [$elementsString]";
+ return "LiteralList: [$elementsString]";
}
String visitLoopBranch(HLoopBranch branch) {
HBasicBlock bodyBlock = currentBlock.successors[0];
HBasicBlock exitBlock = currentBlock.successors[1];
String conditionId = temporaryId(branch.inputs[0]);
- return "While ($conditionId): (B${bodyBlock.id}) then (B${exitBlock.id})";
+ return
+ "LoopBranch ($conditionId): (B${bodyBlock.id}) then (B${exitBlock.id})";
}
- String visitMultiply(HMultiply node) => handleInvokeBinary(node, '*');
+ String visitMultiply(HMultiply node) => handleInvokeBinary(node, 'Multiply');
String visitNegate(HNegate node) {
String operand = temporaryId(node.operand);
- return "-$operand";
+ return "Negate: $operand";
}
String visitNot(HNot node) => "Not: ${temporaryId(node.inputs[0])}";
String visitParameterValue(HParameterValue node) {
- return "p${node.sourceElement.name}";
+ return "ParameterValue: ${node.sourceElement.name}";
}
String visitLocalValue(HLocalValue node) {
- return "l${node.sourceElement.name}";
+ return "LocalValue: ${node.sourceElement.name}";
}
String visitPhi(HPhi phi) {
StringBuffer buffer = new StringBuffer();
- buffer.write("Phi(");
+ buffer.write("Phi: ");
for (int i = 0; i < phi.inputs.length; i++) {
if (i > 0) buffer.write(", ");
buffer.write(temporaryId(phi.inputs[i]));
}
- buffer.write(")");
return buffer.toString();
}
String visitRef(HRef node) {
- return 'Ref ${temporaryId(node.value)}';
+ return 'Ref: ${temporaryId(node.value)}';
}
- String visitReturn(HReturn node) => "Return ${temporaryId(node.inputs[0])}";
+ String visitReturn(HReturn node) => "Return: ${temporaryId(node.inputs[0])}";
- String visitShiftLeft(HShiftLeft node) => handleInvokeBinary(node, '<<');
- String visitShiftRight(HShiftRight node) => handleInvokeBinary(node, '>>');
+ String visitShiftLeft(HShiftLeft node) =>
+ handleInvokeBinary(node, 'ShiftLeft');
+ String visitShiftRight(HShiftRight node) =>
+ handleInvokeBinary(node, 'ShiftRight');
String visitStatic(HStatic node)
- => "Static ${node.element.name}";
+ => "Static: ${node.element.name}";
String visitLazyStatic(HLazyStatic node)
- => "LazyStatic ${node.element.name}";
+ => "LazyStatic: ${node.element.name}";
String visitOneShotInterceptor(HOneShotInterceptor node)
- => visitInvokeDynamic(node, "one shot interceptor");
+ => handleInvokeDynamic(node, "OneShotInterceptor");
String visitStaticStore(HStaticStore node) {
String lhs = node.element.name;
- return "Static $lhs = ${temporaryId(node.inputs[0])}";
+ return "StaticStore: $lhs = ${temporaryId(node.inputs[0])}";
}
String visitStringConcat(HStringConcat node) {
@@ -421,10 +424,10 @@ class HInstructionStringifier implements HVisitor<String> {
}
String visitStringify(HStringify node) {
- return "Stringify ${temporaryId(node.inputs[0])}";
+ return "Stringify: ${temporaryId(node.inputs[0])}";
}
- String visitSubtract(HSubtract node) => handleInvokeBinary(node, '-');
+ String visitSubtract(HSubtract node) => handleInvokeBinary(node, 'Subtract');
String visitSwitch(HSwitch node) {
StringBuffer buf = new StringBuffer();
@@ -442,20 +445,20 @@ class HInstructionStringifier implements HVisitor<String> {
return buf.toString();
}
- String visitThis(HThis node) => "this";
+ String visitThis(HThis node) => "This";
- String visitThrow(HThrow node) => "Throw ${temporaryId(node.inputs[0])}";
+ String visitThrow(HThrow node) => "Throw: ${temporaryId(node.inputs[0])}";
String visitThrowExpression(HThrowExpression node) {
- return "ThrowExpression ${temporaryId(node.inputs[0])}";
+ return "ThrowExpression: ${temporaryId(node.inputs[0])}";
}
String visitTruncatingDivide(HTruncatingDivide node) {
- return handleInvokeBinary(node, '~/');
+ return handleInvokeBinary(node, 'TruncatingDivide');
}
String visitExitTry(HExitTry node) {
- return "Exit try";
+ return "ExitTry";
}
String visitTry(HTry node) {
@@ -477,12 +480,12 @@ class HInstructionStringifier implements HVisitor<String> {
String visitIs(HIs node) {
String type = node.typeExpression.toString();
- return "TypeTest: ${temporaryId(node.expression)} is $type";
+ return "Is: ${temporaryId(node.expression)} is $type";
}
String visitIsViaInterceptor(HIsViaInterceptor node) {
String type = node.typeExpression.toString();
- return "TypeTest: ${temporaryId(node.inputs[0])} is $type";
+ return "IsViaInterceptor: ${temporaryId(node.inputs[0])} is $type";
}
String visitTypeConversion(HTypeConversion node) {
@@ -529,10 +532,10 @@ class HInstructionStringifier implements HVisitor<String> {
}
String visitAwait(HAwait node) {
- return "await ${temporaryId(node.inputs[0])}";
+ return "Await: ${temporaryId(node.inputs[0])}";
}
String visitYield(HYield node) {
- return "yield${node.hasStar ? "*" : ""} ${temporaryId(node.inputs[0])}";
+ return "Yield${node.hasStar ? "*" : ""}: ${temporaryId(node.inputs[0])}";
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698