| 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 part of dart2js.ir_builder; | 5 part of dart2js.ir_builder; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * This task iterates through all resolved elements and builds [ir.Node]s. The | 8 * This task iterates through all resolved elements and builds [ir.Node]s. The |
| 9 * nodes are stored in the [nodes] map and accessible through [hasIr] and | 9 * nodes are stored in the [nodes] map and accessible through [hasIr] and |
| 10 * [getIr]. | 10 * [getIr]. |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 * returns `null`. | 134 * returns `null`. |
| 135 */ | 135 */ |
| 136 ir.FunctionDefinition buildFunction(FunctionElement functionElement) { | 136 ir.FunctionDefinition buildFunction(FunctionElement functionElement) { |
| 137 return nullIfGiveup(() => buildFunctionInternal(functionElement)); | 137 return nullIfGiveup(() => buildFunctionInternal(functionElement)); |
| 138 } | 138 } |
| 139 | 139 |
| 140 ir.FunctionDefinition buildFunctionInternal(FunctionElement element) { | 140 ir.FunctionDefinition buildFunctionInternal(FunctionElement element) { |
| 141 assert(invariant(element, element.isImplementation)); | 141 assert(invariant(element, element.isImplementation)); |
| 142 ast.FunctionExpression function = element.node; | 142 ast.FunctionExpression function = element.node; |
| 143 assert(function != null); | 143 assert(function != null); |
| 144 assert(!function.modifiers.isExternal); | |
| 145 assert(elements[function] != null); | 144 assert(elements[function] != null); |
| 146 | 145 |
| 147 DetectClosureVariables closureLocals = new DetectClosureVariables(elements); | 146 DetectClosureVariables closureLocals = new DetectClosureVariables(elements); |
| 148 closureLocals.visit(function); | 147 closureLocals.visit(function); |
| 149 | 148 |
| 150 return withBuilder( | 149 return withBuilder( |
| 151 new IrBuilder(compiler.backend.constantSystem, | 150 new IrBuilder(compiler.backend.constantSystem, |
| 152 element, closureLocals.usedFromClosure), | 151 element, closureLocals.usedFromClosure), |
| 153 () { | 152 () { |
| 154 FunctionSignature signature = element.functionSignature; | 153 FunctionSignature signature = element.functionSignature; |
| (...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 876 node.visitChildren(this); | 875 node.visitChildren(this); |
| 877 } | 876 } |
| 878 | 877 |
| 879 visitFunctionExpression(ast.FunctionExpression node) { | 878 visitFunctionExpression(ast.FunctionExpression node) { |
| 880 FunctionElement oldFunction = currentFunction; | 879 FunctionElement oldFunction = currentFunction; |
| 881 currentFunction = elements[node]; | 880 currentFunction = elements[node]; |
| 882 visit(node.body); | 881 visit(node.body); |
| 883 currentFunction = oldFunction; | 882 currentFunction = oldFunction; |
| 884 } | 883 } |
| 885 } | 884 } |
| OLD | NEW |