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

Side by Side Diff: pkg/compiler/lib/src/ssa/builder_kernel.dart

Issue 2814453005: Merge CommonElements and BackendHelpers! (Closed)
Patch Set: merge with head Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import '../closure.dart'; 7 import '../closure.dart';
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; 9 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem;
10 import '../common/names.dart'; 10 import '../common/names.dart';
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 new DartString.literal(prefixElement.deferredImport.uri.toString()), 577 new DartString.literal(prefixElement.deferredImport.uri.toString()),
578 closedWorld); 578 closedWorld);
579 _pushStaticInvocation(astAdapter.checkDeferredIsLoaded, 579 _pushStaticInvocation(astAdapter.checkDeferredIsLoaded,
580 [prefixConstant, uriConstant], astAdapter.checkDeferredIsLoadedType); 580 [prefixConstant, uriConstant], astAdapter.checkDeferredIsLoadedType);
581 } 581 }
582 582
583 @override 583 @override
584 void visitLoadLibrary(ir.LoadLibrary loadLibrary) { 584 void visitLoadLibrary(ir.LoadLibrary loadLibrary) {
585 // TODO(efortuna): Source information! 585 // TODO(efortuna): Source information!
586 push(new HInvokeStatic( 586 push(new HInvokeStatic(
587 backend.helpers.loadLibraryWrapper, 587 compiler.commonElements.loadLibraryWrapper,
588 [ 588 [
589 graph.addConstantString( 589 graph.addConstantString(
590 new DartString.literal(loadLibrary.import.name), closedWorld) 590 new DartString.literal(loadLibrary.import.name), closedWorld)
591 ], 591 ],
592 commonMasks.nonNullType, 592 commonMasks.nonNullType,
593 targetCanThrow: false)); 593 targetCanThrow: false));
594 } 594 }
595 595
596 @override 596 @override
597 void visitBlock(ir.Block block) { 597 void visitBlock(ir.Block block) {
(...skipping 1899 matching lines...) Expand 10 before | Expand all | Expand 10 after
2497 astAdapter.getNode(invocation), MessageKind.JS_PLACEHOLDER_CAPTURE); 2497 astAdapter.getNode(invocation), MessageKind.JS_PLACEHOLDER_CAPTURE);
2498 } 2498 }
2499 2499
2500 TypeMask ssaType = 2500 TypeMask ssaType =
2501 astAdapter.typeFromNativeBehavior(nativeBehavior, closedWorld); 2501 astAdapter.typeFromNativeBehavior(nativeBehavior, closedWorld);
2502 2502
2503 SourceInformation sourceInformation = null; 2503 SourceInformation sourceInformation = null;
2504 push(new HForeignCode(nativeBehavior.codeTemplate, ssaType, inputs, 2504 push(new HForeignCode(nativeBehavior.codeTemplate, ssaType, inputs,
2505 isStatement: !nativeBehavior.codeTemplate.isExpression, 2505 isStatement: !nativeBehavior.codeTemplate.isExpression,
2506 effects: nativeBehavior.sideEffects, 2506 effects: nativeBehavior.sideEffects,
2507 nativeBehavior: nativeBehavior)..sourceInformation = sourceInformation); 2507 nativeBehavior: nativeBehavior)
2508 ..sourceInformation = sourceInformation);
2508 } 2509 }
2509 2510
2510 void handleJsStringConcat(ir.StaticInvocation invocation) { 2511 void handleJsStringConcat(ir.StaticInvocation invocation) {
2511 if (_unexpectedForeignArguments(invocation, 2, 2)) { 2512 if (_unexpectedForeignArguments(invocation, 2, 2)) {
2512 // Result expected on stack. 2513 // Result expected on stack.
2513 stack.add(graph.addConstantNull(closedWorld)); 2514 stack.add(graph.addConstantNull(closedWorld));
2514 return; 2515 return;
2515 } 2516 }
2516 List<HInstruction> inputs = _visitPositionalArguments(invocation.arguments); 2517 List<HInstruction> inputs = _visitPositionalArguments(invocation.arguments);
2517 push(new HStringConcat(inputs[0], inputs[1], commonMasks.stringType)); 2518 push(new HStringConcat(inputs[0], inputs[1], commonMasks.stringType));
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
2601 void visitMethodInvocation(ir.MethodInvocation invocation) { 2602 void visitMethodInvocation(ir.MethodInvocation invocation) {
2602 // Handle `x == null` specially. When these come from null-aware operators, 2603 // Handle `x == null` specially. When these come from null-aware operators,
2603 // there is no mapping in the astAdapter. 2604 // there is no mapping in the astAdapter.
2604 if (_handleEqualsNull(invocation)) return; 2605 if (_handleEqualsNull(invocation)) return;
2605 invocation.receiver.accept(this); 2606 invocation.receiver.accept(this);
2606 HInstruction receiver = pop(); 2607 HInstruction receiver = pop();
2607 Selector selector = astAdapter.getSelector(invocation); 2608 Selector selector = astAdapter.getSelector(invocation);
2608 _pushDynamicInvocation( 2609 _pushDynamicInvocation(
2609 invocation, 2610 invocation,
2610 astAdapter.typeOfInvocation(invocation, closedWorld), 2611 astAdapter.typeOfInvocation(invocation, closedWorld),
2611 <HInstruction>[receiver] 2612 <HInstruction>[receiver]..addAll(
2612 ..addAll( 2613 _visitArgumentsForDynamicTarget(selector, invocation.arguments)));
2613 _visitArgumentsForDynamicTarget(selector, invocation.arguments)));
2614 } 2614 }
2615 2615
2616 bool _handleEqualsNull(ir.MethodInvocation invocation) { 2616 bool _handleEqualsNull(ir.MethodInvocation invocation) {
2617 if (invocation.name.name == '==') { 2617 if (invocation.name.name == '==') {
2618 ir.Arguments arguments = invocation.arguments; 2618 ir.Arguments arguments = invocation.arguments;
2619 if (arguments.types.isEmpty && 2619 if (arguments.types.isEmpty &&
2620 arguments.positional.length == 1 && 2620 arguments.positional.length == 1 &&
2621 arguments.named.isEmpty) { 2621 arguments.named.isEmpty) {
2622 bool finish(ir.Expression comparand) { 2622 bool finish(ir.Expression comparand) {
2623 comparand.accept(this); 2623 comparand.accept(this);
(...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after
3226 enterBlock.setBlockFlow( 3226 enterBlock.setBlockFlow(
3227 new HTryBlockInformation( 3227 new HTryBlockInformation(
3228 kernelBuilder.wrapStatementGraph(bodyGraph), 3228 kernelBuilder.wrapStatementGraph(bodyGraph),
3229 exception, 3229 exception,
3230 kernelBuilder.wrapStatementGraph(catchGraph), 3230 kernelBuilder.wrapStatementGraph(catchGraph),
3231 kernelBuilder.wrapStatementGraph(finallyGraph)), 3231 kernelBuilder.wrapStatementGraph(finallyGraph)),
3232 exitBlock); 3232 exitBlock);
3233 kernelBuilder.inTryStatement = previouslyInTryStatement; 3233 kernelBuilder.inTryStatement = previouslyInTryStatement;
3234 } 3234 }
3235 } 3235 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698