| 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 3164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3175 validateArgumentCount(exactly: 2); | 3175 validateArgumentCount(exactly: 2); |
| 3176 List<ir.Primitive> arguments = argumentNodes.mapToList(visit); | 3176 List<ir.Primitive> arguments = argumentNodes.mapToList(visit); |
| 3177 return irBuilder.buildStringConcatenation(arguments); | 3177 return irBuilder.buildStringConcatenation(arguments); |
| 3178 | 3178 |
| 3179 case 'JS_CURRENT_ISOLATE_CONTEXT': | 3179 case 'JS_CURRENT_ISOLATE_CONTEXT': |
| 3180 validateArgumentCount(exactly: 0); | 3180 validateArgumentCount(exactly: 0); |
| 3181 | 3181 |
| 3182 if (!compiler.hasIsolateSupport) { | 3182 if (!compiler.hasIsolateSupport) { |
| 3183 // If the isolate library is not used, we just generate code | 3183 // If the isolate library is not used, we just generate code |
| 3184 // to fetch the current isolate. | 3184 // to fetch the current isolate. |
| 3185 String name = backend.namer.currentIsolate; | 3185 continue GET_CURRENT_ISOLATE; |
| 3186 return irBuilder.buildForeignCode(js.js.parseForeignJS(name), | |
| 3187 const <ir.Primitive>[], NativeBehavior.PURE); | |
| 3188 } | 3186 } |
| 3189 return buildIsolateHelperInvocation('_currentIsolate', | 3187 return buildIsolateHelperInvocation('_currentIsolate', |
| 3190 CallStructure.NO_ARGS); | 3188 CallStructure.NO_ARGS); |
| 3191 | 3189 |
| 3190 GET_CURRENT_ISOLATE: case 'JS_CURRENT_ISOLATE': |
| 3191 validateArgumentCount(exactly: 0); |
| 3192 |
| 3193 return irBuilder.buildForeignCode( |
| 3194 js.js.parseForeignJS(backend.namer.currentIsolate), |
| 3195 const <ir.Primitive>[], |
| 3196 NativeBehavior.PURE); |
| 3197 |
| 3192 case 'JS_CALL_IN_ISOLATE': | 3198 case 'JS_CALL_IN_ISOLATE': |
| 3193 validateArgumentCount(exactly: 2); | 3199 validateArgumentCount(exactly: 2); |
| 3194 | 3200 |
| 3195 if (!compiler.hasIsolateSupport) { | 3201 if (!compiler.hasIsolateSupport) { |
| 3196 ir.Primitive closure = visit(argumentNodes.tail.head); | 3202 ir.Primitive closure = visit(argumentNodes.tail.head); |
| 3197 return irBuilder.buildCallInvocation(closure, CallStructure.NO_ARGS, | 3203 return irBuilder.buildCallInvocation(closure, CallStructure.NO_ARGS, |
| 3198 const <ir.Primitive>[]); | 3204 const <ir.Primitive>[]); |
| 3199 } | 3205 } |
| 3200 return buildIsolateHelperInvocation('_callInIsolate', | 3206 return buildIsolateHelperInvocation('_callInIsolate', |
| 3201 CallStructure.TWO_ARGS); | 3207 CallStructure.TWO_ARGS); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3273 } | 3279 } |
| 3274 | 3280 |
| 3275 processSetStatic(ir.SetStatic node) { | 3281 processSetStatic(ir.SetStatic node) { |
| 3276 node.body = replacementFor(node.body); | 3282 node.body = replacementFor(node.body); |
| 3277 } | 3283 } |
| 3278 | 3284 |
| 3279 processContinuation(ir.Continuation node) { | 3285 processContinuation(ir.Continuation node) { |
| 3280 node.body = replacementFor(node.body); | 3286 node.body = replacementFor(node.body); |
| 3281 } | 3287 } |
| 3282 } | 3288 } |
| OLD | NEW |