Chromium Code Reviews| 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 0b54193ad356ab74e563f6de983d88c93ca8e20f..fb4f9fcc58d0a5daaaa00c690caa8bce7a1f58e1 100644 |
| --- a/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart |
| +++ b/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart |
| @@ -2,6 +2,7 @@ |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| +import 'package:js_runtime/shared/embedded_names.dart'; |
| import 'package:kernel/ast.dart' as ir; |
| import '../common.dart'; |
| @@ -10,8 +11,10 @@ import '../compiler.dart'; |
| import '../constants/values.dart'; |
| import '../dart_types.dart'; |
| import '../elements/elements.dart'; |
| +import '../js/js.dart' as js; |
| import '../js_backend/js_backend.dart'; |
| import '../kernel/kernel.dart'; |
| +import '../native/native.dart' as native; |
| import '../resolution/tree_elements.dart'; |
| import '../tree/tree.dart' as ast; |
| import '../types/masks.dart'; |
| @@ -220,6 +223,10 @@ class KernelAstAdapter { |
| return TypeMaskFactory.inferredTypeForSelector(selector, mask, _compiler); |
| } |
| + TypeMask typeFromNativeBehavior(native.NativeBehavior nativeBehavior) { |
| + return TypeMaskFactory.fromNativeBehavior(nativeBehavior, _compiler); |
| + } |
| + |
| ConstantValue getConstantFor(ir.Node node) { |
| ConstantValue constantValue = |
| _backend.constants.getConstantValueForNode(getNode(node), elements); |
| @@ -272,6 +279,44 @@ class KernelAstAdapter { |
| TypeMask get assertThrowReturnType => TypeMaskFactory |
| .inferredReturnTypeForElement(_backend.helpers.assertThrow, _compiler); |
| + //bool isInForeignLibrary(ir.Member member) => |
|
Harry Terkelsen
2016/10/12 16:42:59
remove this comment?
sra1
2016/10/13 19:02:01
Done.
|
| + // getElement(member.enclosingLibrary) == _backend.helpers.foreignLibrary; |
| + bool isInForeignLibrary(ir.Member member) => |
| + _backend.isForeign(getElement(member)); |
| + |
| + native.NativeBehavior getNativeBehavior(ir.Node node) { |
| + return elements.getNativeData(getNode(node)); |
| + } |
| + |
| + js.Name getNameForJsGetName(ir.Node argument, ConstantValue constant) { |
| + int index = _extractEnumIndexFromConstantValue( |
| + constant, _backend.helpers.jsGetNameEnum); |
| + if (index == null) return null; |
| + return _backend.namer |
| + .getNameForJsGetName(getNode(argument), JsGetName.values[index]); |
| + } |
| + |
| + js.Template getJsBuiltinTemplate(ConstantValue constant) { |
| + int index = _extractEnumIndexFromConstantValue( |
| + constant, _backend.helpers.jsBuiltinEnum); |
| + if (index == null) return null; |
| + return _backend.emitter.builtinTemplateFor(JsBuiltin.values[index]); |
| + } |
| + |
| + int _extractEnumIndexFromConstantValue( |
| + ConstantValue constant, Element classElement) { |
| + if (constant is ConstructedConstantValue) { |
| + if (constant.type.element == classElement) { |
| + assert(constant.fields.length == 1); |
| + ConstantValue indexConstant = constant.fields.values.single; |
| + if (indexConstant is IntConstantValue) { |
| + return indexConstant.primitiveValue; |
| + } |
| + } |
| + } |
| + return null; |
| + } |
| + |
| DartType getDartType(ir.DartType type) { |
| return type.accept(_typeConverter); |
| } |