| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library dart2js.ir_nodes_sexpr; | 5 library dart2js.ir_nodes_sexpr; |
| 6 | 6 |
| 7 import '../constants/values.dart'; | 7 import '../constants/values.dart'; |
| 8 import '../util/util.dart'; | 8 import '../util/util.dart'; |
| 9 import 'cps_ir_nodes.dart'; | 9 import 'cps_ir_nodes.dart'; |
| 10 | 10 |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 return '$indentation(Rethrow)'; | 195 return '$indentation(Rethrow)'; |
| 196 } | 196 } |
| 197 | 197 |
| 198 String visitBranch(Branch node) { | 198 String visitBranch(Branch node) { |
| 199 String condition = visit(node.condition); | 199 String condition = visit(node.condition); |
| 200 String trueCont = access(node.trueContinuation); | 200 String trueCont = access(node.trueContinuation); |
| 201 String falseCont = access(node.falseContinuation); | 201 String falseCont = access(node.falseContinuation); |
| 202 return '$indentation(Branch $condition $trueCont $falseCont)'; | 202 return '$indentation(Branch $condition $trueCont $falseCont)'; |
| 203 } | 203 } |
| 204 | 204 |
| 205 String visitUnreachable(Unreachable node) { |
| 206 return '$indentation(Unreachable)'; |
| 207 } |
| 208 |
| 205 String visitConstant(Constant node) { | 209 String visitConstant(Constant node) { |
| 206 String value = node.value.accept(new ConstantStringifier(), null); | 210 String value = node.value.accept(new ConstantStringifier(), null); |
| 207 return '(Constant $value)'; | 211 return '(Constant $value)'; |
| 208 } | 212 } |
| 209 | 213 |
| 210 String visitCreateFunction(CreateFunction node) { | 214 String visitCreateFunction(CreateFunction node) { |
| 211 String function = | 215 String function = |
| 212 indentBlock(() => indentBlock(() => visit(node.definition))); | 216 indentBlock(() => indentBlock(() => visit(node.definition))); |
| 213 return '(CreateFunction\n$function)'; | 217 return '(CreateFunction\n$function)'; |
| 214 } | 218 } |
| 215 | 219 |
| 216 String visitContinuation(Continuation node) { | 220 String visitContinuation(Continuation node) { |
| 217 // Continuations are visited directly in visitLetCont. | 221 // Continuations are visited directly in visitLetCont. |
| 218 return '(Unexpected Continuation)'; | 222 return '(Unexpected Continuation)'; |
| 219 } | 223 } |
| 220 | 224 |
| 221 String visitGetMutableVariable(GetMutableVariable node) { | 225 String visitGetMutableVariable(GetMutableVariable node) { |
| 222 return '(GetMutableVariable ${access(node.variable)})'; | 226 return '(GetMutableVariable ${access(node.variable)})'; |
| 223 } | 227 } |
| 224 | 228 |
| 225 String visitSetMutableVariable(SetMutableVariable node) { | 229 String visitSetMutableVariable(SetMutableVariable node) { |
| 226 String value = access(node.value); | 230 String value = access(node.value); |
| 227 String body = indentBlock(() => visit(node.body)); | 231 String body = indentBlock(() => visit(node.body)); |
| 228 return '$indentation(SetMutableVariable ${access(node.variable)} ' | 232 return '$indentation(SetMutableVariable ${access(node.variable)} ' |
| 229 '$value\n$body)'; | 233 '$value\n$body)'; |
| 230 } | 234 } |
| 231 | 235 |
| 232 String visitTypeOperator(TypeOperator node) { | 236 String visitTypeCast(TypeCast node) { |
| 233 String value = access(node.value); | 237 String value = access(node.value); |
| 234 String cont = access(node.continuation); | 238 String cont = access(node.continuation); |
| 235 String operator = node.isTypeTest ? 'is' : 'as'; | |
| 236 String typeArguments = node.typeArguments.map(access).join(' '); | 239 String typeArguments = node.typeArguments.map(access).join(' '); |
| 237 return '$indentation(TypeOperator $operator $value ${node.type} ' | 240 return '$indentation(TypeCast $value ${node.type} ($typeArguments) $cont)'; |
| 238 '($typeArguments) $cont)'; | 241 } |
| 242 |
| 243 String visitTypeTest(TypeTest node) { |
| 244 String value = access(node.value); |
| 245 String typeArguments = node.typeArguments.map(access).join(' '); |
| 246 return '(TypeTest $value ${node.type} ($typeArguments))'; |
| 239 } | 247 } |
| 240 | 248 |
| 241 String visitLiteralList(LiteralList node) { | 249 String visitLiteralList(LiteralList node) { |
| 242 String values = node.values.map(access).join(' '); | 250 String values = node.values.map(access).join(' '); |
| 243 return '(LiteralList ($values))'; | 251 return '(LiteralList ($values))'; |
| 244 } | 252 } |
| 245 | 253 |
| 246 String visitLiteralMap(LiteralMap node) { | 254 String visitLiteralMap(LiteralMap node) { |
| 247 String keys = node.entries.map((e) => access(e.key)).join(' '); | 255 String keys = node.entries.map((e) => access(e.key)).join(' '); |
| 248 String values = node.entries.map((e) => access(e.value)).join(' '); | 256 String values = node.entries.map((e) => access(e.value)).join(' '); |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 void setReturnContinuation(Continuation node) { | 445 void setReturnContinuation(Continuation node) { |
| 438 assert(!_names.containsKey(node) || _names[node] == 'return'); | 446 assert(!_names.containsKey(node) || _names[node] == 'return'); |
| 439 _names[node] = 'return'; | 447 _names[node] = 'return'; |
| 440 } | 448 } |
| 441 | 449 |
| 442 String getName(Node node) { | 450 String getName(Node node) { |
| 443 if (!_names.containsKey(node)) return 'MISSING_NAME'; | 451 if (!_names.containsKey(node)) return 'MISSING_NAME'; |
| 444 return _names[node]; | 452 return _names[node]; |
| 445 } | 453 } |
| 446 } | 454 } |
| OLD | NEW |