| Index: pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart b/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| index 20768999e5c928668d8feff6b22daf113a65d026..7edc8bdea4d689af0a99e2fa6e169f4099b20160 100644
|
| --- a/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| +++ b/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| @@ -4,12 +4,15 @@
|
|
|
| import 'package:kernel/ast.dart' as ir;
|
|
|
| +import '../compiler.dart';
|
| import '../constants/values.dart';
|
| import '../diagnostics/invariant.dart';
|
| import '../elements/elements.dart';
|
| import '../js_backend/js_backend.dart';
|
| +import '../resolution/tree_elements.dart';
|
| import '../tree/tree.dart' as ast;
|
| import '../types/masks.dart';
|
| +import '../universe/selector.dart';
|
| import '../universe/side_effects.dart';
|
|
|
| import 'types.dart';
|
| @@ -30,8 +33,11 @@ class KernelAstAdapter {
|
| }
|
| }
|
|
|
| + Compiler get _compiler => _backend.compiler;
|
| + TreeElements get _elements => _resolvedAst.elements;
|
| +
|
| ConstantValue getConstantForSymbol(ir.SymbolLiteral node) {
|
| - ast.Node astNode = _nodeToAst[node];
|
| + ast.Node astNode = getNode(node);
|
| ConstantValue constantValue = _backend.constants
|
| .getConstantValueForNode(astNode, _resolvedAst.elements);
|
| assert(invariant(astNode, constantValue != null,
|
| @@ -45,17 +51,41 @@ class KernelAstAdapter {
|
| return result;
|
| }
|
|
|
| + ast.Node getNode(ir.Node node) {
|
| + ast.Node result = _nodeToAst[node];
|
| + assert(result != null);
|
| + return result;
|
| + }
|
| +
|
| bool getCanThrow(ir.Procedure procedure) {
|
| FunctionElement function = getElement(procedure);
|
| - return !_backend.compiler.world.getCannotThrow(function);
|
| + return !_compiler.world.getCannotThrow(function);
|
| }
|
|
|
| TypeMask returnTypeOf(ir.Procedure node) {
|
| return TypeMaskFactory.inferredReturnTypeForElement(
|
| - getElement(node), _backend.compiler);
|
| + getElement(node), _compiler);
|
| }
|
|
|
| SideEffects getSideEffects(ir.Node node) {
|
| - return _backend.compiler.world.getSideEffectsOfElement(getElement(node));
|
| + return _compiler.world.getSideEffectsOfElement(getElement(node));
|
| + }
|
| +
|
| + // TODO(het): Create the selector directly from the invocation
|
| + Selector getSelector(ir.MethodInvocation invocation) {
|
| + return _elements.getSelector(getNode(invocation));
|
| + }
|
| +
|
| + TypeMask getTypeMask(ir.MethodInvocation invocation) {
|
| + return _elements.getTypeMask(getNode(invocation));
|
| + }
|
| +
|
| + TypeMask selectorTypeOf(ir.MethodInvocation invocation) {
|
| + return TypeMaskFactory.inferredTypeForSelector(
|
| + getSelector(invocation), getTypeMask(invocation), _compiler);
|
| + }
|
| +
|
| + bool isIntercepted(ir.MethodInvocation invocation) {
|
| + return _backend.isInterceptedSelector(getSelector(invocation));
|
| }
|
| }
|
|
|