| 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 095473111da3e46b1ac898d69c8bdefc30223e6c..aac72e4c6a36765689035ee2202ca3f89edf8ee0 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 '../closure.dart';
|
| @@ -16,6 +17,7 @@ import '../elements/jumps.dart';
|
| import '../elements/modelx.dart';
|
| import '../elements/resolution_types.dart';
|
| import '../elements/types.dart';
|
| +import '../js/js.dart' as js;
|
| import '../js_backend/js_backend.dart';
|
| import '../kernel/element_map.dart';
|
| import '../kernel/kernel.dart';
|
| @@ -239,6 +241,35 @@ class KernelAstAdapter extends KernelToElementMapMixin
|
| });
|
| }
|
|
|
| + js.Name getNameForJsGetName(ir.Node argument, ConstantValue constant) {
|
| + int index = _extractEnumIndexFromConstantValue(
|
| + constant, _compiler.resolution.commonElements.jsGetNameEnum);
|
| + if (index == null) return null;
|
| + return _backend.namer
|
| + .getNameForJsGetName(getNode(argument), JsGetName.values[index]);
|
| + }
|
| +
|
| + js.Template getJsBuiltinTemplate(ConstantValue constant) {
|
| + int index = _extractEnumIndexFromConstantValue(
|
| + constant, _compiler.resolution.commonElements.jsBuiltinEnum);
|
| + if (index == null) return null;
|
| + return _backend.emitter.builtinTemplateFor(JsBuiltin.values[index]);
|
| + }
|
| +
|
| + int _extractEnumIndexFromConstantValue(
|
| + ConstantValue constant, ClassEntity classElement) {
|
| + if (constant is ConstructedConstantValue) {
|
| + if (constant.type.element == classElement) {
|
| + assert(constant.fields.length == 1 || constant.fields.length == 2);
|
| + ConstantValue indexConstant = constant.fields.values.first;
|
| + if (indexConstant is IntConstantValue) {
|
| + return indexConstant.primitiveValue;
|
| + }
|
| + }
|
| + }
|
| + return null;
|
| + }
|
| +
|
| DartType getDartType(ir.DartType type) {
|
| return _typeConverter.convert(type);
|
| }
|
|
|