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

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

Issue 2722753002: Remove HRuntimeType implementation (Closed)
Patch Set: Created 3 years, 9 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 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 // there is a parameter check expression in the initializer. 469 // there is a parameter check expression in the initializer.
470 parameters[parameter] = argument; 470 parameters[parameter] = argument;
471 localsHandler.updateLocal(parameter, argument); 471 localsHandler.updateLocal(parameter, argument);
472 }); 472 });
473 473
474 // TODO(het): set the locals handler state as if we were inlining the 474 // TODO(het): set the locals handler state as if we were inlining the
475 // constructor. 475 // constructor.
476 _buildInitializers(constructor, constructorChain, fieldValues); 476 _buildInitializers(constructor, constructorChain, fieldValues);
477 } 477 }
478 478
479 HTypeConversion buildFunctionTypeConversion(
480 HInstruction original, ResolutionDartType type, int kind) {
481 HInstruction reifiedType = buildFunctionType(type);
482 return new HTypeConversion.viaMethodOnType(
483 type, kind, original.instructionType, reifiedType, original);
484 }
485
486 /// Builds generative constructor body. 479 /// Builds generative constructor body.
487 void buildConstructorBody(ir.Constructor constructor) { 480 void buildConstructorBody(ir.Constructor constructor) {
488 openFunction(); 481 openFunction();
489 constructor.function.body.accept(this); 482 constructor.function.body.accept(this);
490 closeFunction(); 483 closeFunction();
491 } 484 }
492 485
493 /// Builds a SSA graph for FunctionNodes, found in FunctionExpressions and 486 /// Builds a SSA graph for FunctionNodes, found in FunctionExpressions and
494 /// Procedures. 487 /// Procedures.
495 void buildFunctionNode(ir.FunctionNode functionNode) { 488 void buildFunctionNode(ir.FunctionNode functionNode) {
(...skipping 2353 matching lines...) Expand 10 before | Expand all | Expand 10 after
2849 return; 2842 return;
2850 } 2843 }
2851 2844
2852 if (type is ir.DynamicType) { 2845 if (type is ir.DynamicType) {
2853 stack.add(graph.addConstantBool(true, closedWorld)); 2846 stack.add(graph.addConstantBool(true, closedWorld));
2854 return; 2847 return;
2855 } 2848 }
2856 2849
2857 ResolutionDartType typeValue = 2850 ResolutionDartType typeValue =
2858 localsHandler.substInContext(astAdapter.getDartType(type)); 2851 localsHandler.substInContext(astAdapter.getDartType(type));
2852
2859 if (type is ir.FunctionType) { 2853 if (type is ir.FunctionType) {
2860 List arguments = [buildFunctionType(typeValue), expression]; 2854 HInstruction representation =
2861 _pushDynamicInvocation(node, null, arguments, 2855 typeBuilder.analyzeTypeArgument(typeValue, sourceElement);
2862 selector: new Selector.call( 2856 List<HInstruction> inputs = <HInstruction>[
2863 new PrivateName('_isTest', backend.helpers.jsHelperLibrary), 2857 expression,
2864 CallStructure.ONE_ARG)); 2858 representation,
2865 push( 2859 ];
2866 new HIs.compound(typeValue, expression, pop(), commonMasks.boolType)); 2860 _pushStaticInvocation(
2861 astAdapter.functionTypeTest, inputs, commonMasks.boolType);
2862 HInstruction call = pop();
2863 push(new HIs.compound(typeValue, expression, call, commonMasks.boolType));
2867 return; 2864 return;
2868 } 2865 }
2869 2866
2870 if (type is ir.TypeParameterType) { 2867 if (type is ir.TypeParameterType) {
2871 HInstruction runtimeType = 2868 HInstruction runtimeType =
2872 typeBuilder.addTypeVariableReference(typeValue, sourceElement); 2869 typeBuilder.addTypeVariableReference(typeValue, sourceElement);
2873 _pushStaticInvocation(astAdapter.checkSubtypeOfRuntimeType, 2870 _pushStaticInvocation(astAdapter.checkSubtypeOfRuntimeType,
2874 <HInstruction>[expression, runtimeType], commonMasks.boolType); 2871 <HInstruction>[expression, runtimeType], commonMasks.boolType);
2875 push( 2872 push(
2876 new HIs.variable(typeValue, expression, pop(), commonMasks.boolType)); 2873 new HIs.variable(typeValue, expression, pop(), commonMasks.boolType));
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
3253 enterBlock.setBlockFlow( 3250 enterBlock.setBlockFlow(
3254 new HTryBlockInformation( 3251 new HTryBlockInformation(
3255 kernelBuilder.wrapStatementGraph(bodyGraph), 3252 kernelBuilder.wrapStatementGraph(bodyGraph),
3256 exception, 3253 exception,
3257 kernelBuilder.wrapStatementGraph(catchGraph), 3254 kernelBuilder.wrapStatementGraph(catchGraph),
3258 kernelBuilder.wrapStatementGraph(finallyGraph)), 3255 kernelBuilder.wrapStatementGraph(finallyGraph)),
3259 exitBlock); 3256 exitBlock);
3260 kernelBuilder.inTryStatement = previouslyInTryStatement; 3257 kernelBuilder.inTryStatement = previouslyInTryStatement;
3261 } 3258 }
3262 } 3259 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698