| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_builder_task; | 5 library dart2js.ir_builder_task; |
| 6 | 6 |
| 7 import '../closure.dart' as closurelib; | 7 import '../closure.dart' as closurelib; |
| 8 import '../closure.dart' hide ClosureScope; | 8 import '../closure.dart' hide ClosureScope; |
| 9 import '../constants/expressions.dart'; | 9 import '../constants/expressions.dart'; |
| 10 import '../dart_types.dart'; | 10 import '../dart_types.dart'; |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 currentMask: elements.getCurrentTypeMask(node), | 332 currentMask: elements.getCurrentTypeMask(node), |
| 333 moveNextMask: elements.getMoveNextTypeMask(node), | 333 moveNextMask: elements.getMoveNextTypeMask(node), |
| 334 iteratorMask: elements.getIteratorTypeMask(node), | 334 iteratorMask: elements.getIteratorTypeMask(node), |
| 335 buildBody: subbuild(node.body), | 335 buildBody: subbuild(node.body), |
| 336 target: elements.getTargetDefinition(node), | 336 target: elements.getTargetDefinition(node), |
| 337 closureScope: getClosureScopeForNode(node)); | 337 closureScope: getClosureScopeForNode(node)); |
| 338 } | 338 } |
| 339 | 339 |
| 340 ir.Primitive visitVariableDefinitions(ast.VariableDefinitions node) { | 340 ir.Primitive visitVariableDefinitions(ast.VariableDefinitions node) { |
| 341 assert(irBuilder.isOpen); | 341 assert(irBuilder.isOpen); |
| 342 if (node.modifiers.isConst) { | 342 for (ast.Node definition in node.definitions.nodes) { |
| 343 // Do nothing. | 343 Element element = elements[definition]; |
| 344 // handleLocalConstantGet inlines the constant at use-site. | 344 ir.Primitive initialValue; |
| 345 } else { | 345 // Definitions are either SendSets if there is an initializer, or |
| 346 for (ast.Node definition in node.definitions.nodes) { | 346 // Identifiers if there is no initializer. |
| 347 Element element = elements[definition]; | 347 if (definition is ast.SendSet) { |
| 348 ir.Primitive initialValue; | 348 assert(!definition.arguments.isEmpty); |
| 349 // Definitions are either SendSets if there is an initializer, or | 349 assert(definition.arguments.tail.isEmpty); |
| 350 // Identifiers if there is no initializer. | 350 initialValue = visit(definition.arguments.head); |
| 351 if (definition is ast.SendSet) { | 351 } else { |
| 352 assert(!definition.arguments.isEmpty); | 352 assert(definition is ast.Identifier); |
| 353 assert(definition.arguments.tail.isEmpty); | |
| 354 initialValue = visit(definition.arguments.head); | |
| 355 } else { | |
| 356 assert(definition is ast.Identifier); | |
| 357 } | |
| 358 irBuilder.declareLocalVariable(element, initialValue: initialValue); | |
| 359 } | 353 } |
| 354 irBuilder.declareLocalVariable(element, initialValue: initialValue); |
| 360 } | 355 } |
| 361 return null; | 356 return null; |
| 362 } | 357 } |
| 363 | 358 |
| 364 // Build(Return(e), C) = C'[InvokeContinuation(return, x)] | 359 // Build(Return(e), C) = C'[InvokeContinuation(return, x)] |
| 365 // where (C', x) = Build(e, C) | 360 // where (C', x) = Build(e, C) |
| 366 // | 361 // |
| 367 // Return without a subexpression is translated as if it were return null. | 362 // Return without a subexpression is translated as if it were return null. |
| 368 ir.Primitive visitReturn(ast.Return node) { | 363 ir.Primitive visitReturn(ast.Return node) { |
| 369 assert(irBuilder.isOpen); | 364 assert(irBuilder.isOpen); |
| (...skipping 2882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3252 } | 3247 } |
| 3253 | 3248 |
| 3254 processSetStatic(ir.SetStatic node) { | 3249 processSetStatic(ir.SetStatic node) { |
| 3255 node.body = replacementFor(node.body); | 3250 node.body = replacementFor(node.body); |
| 3256 } | 3251 } |
| 3257 | 3252 |
| 3258 processContinuation(ir.Continuation node) { | 3253 processContinuation(ir.Continuation node) { |
| 3259 node.body = replacementFor(node.body); | 3254 node.body = replacementFor(node.body); |
| 3260 } | 3255 } |
| 3261 } | 3256 } |
| OLD | NEW |