diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart index 9d8f3e6f977..f92a431ddf3 100644 --- a/pkg/dev_compiler/lib/src/kernel/compiler.dart +++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart @@ -6135,13 +6135,18 @@ class ProgramCompiler extends ComputeOnceConstantVisitor var typeArgs = node.arguments.types; var name = target.name.text; - if (args.isEmpty && typeArgs.length == 1) { - if (name == 'TYPE_REF') { - return _emitType(typeArgs.single); + if (args.isEmpty) { + if (typeArgs.isEmpty && name == 'DART_RUNTIME_LIBRARY') { + return _runtimeModule; } - if (name == 'LEGACY_TYPE_REF') { - return _emitType( - typeArgs.single.withDeclaredNullability(Nullability.legacy)); + if (typeArgs.length == 1) { + if (name == 'TYPE_REF') { + return _emitType(typeArgs.single); + } + if (name == 'LEGACY_TYPE_REF') { + return _emitType( + typeArgs.single.withDeclaredNullability(Nullability.legacy)); + } } } diff --git a/pkg/dev_compiler/lib/src/kernel/compiler_new.dart b/pkg/dev_compiler/lib/src/kernel/compiler_new.dart index f5f29023abe..09ae291b433 100644 --- a/pkg/dev_compiler/lib/src/kernel/compiler_new.dart +++ b/pkg/dev_compiler/lib/src/kernel/compiler_new.dart @@ -6215,16 +6215,20 @@ class LibraryCompiler extends ComputeOnceConstantVisitor var typeArgs = node.arguments.types; var name = target.name.text; - if (args.isEmpty && typeArgs.length == 1) { - if (name == 'TYPE_REF') { - return _emitType(typeArgs.single); + if (args.isEmpty) { + if (typeArgs.isEmpty && name == 'DART_RUNTIME_LIBRARY') { + return _runtimeModule; } - if (name == 'LEGACY_TYPE_REF') { - return _emitType( - typeArgs.single.withDeclaredNullability(Nullability.legacy)); + if (typeArgs.length == 1) { + if (name == 'TYPE_REF') { + return _emitType(typeArgs.single); + } + if (name == 'LEGACY_TYPE_REF') { + return _emitType( + typeArgs.single.withDeclaredNullability(Nullability.legacy)); + } } } - if (args.length == 1) { if (name == 'getInterceptor') { var argExpression = args.single.accept(this); diff --git a/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart b/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart index 270936439d7..5f8e6abf539 100644 --- a/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart +++ b/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart @@ -9,6 +9,7 @@ import 'dart:async'; import 'dart:_debugger' show stackTraceMapper, trackCall; import 'dart:_foreign_helper' show + DART_RUNTIME_LIBRARY, JS, JS_CLASS_REF, JS_EMBEDDED_GLOBAL, @@ -182,7 +183,7 @@ final Object global_ = JS('', ''' '''); void trackProfile(bool flag) { - JS('', 'dart.__trackProfile = #', flag); + JS('', '#.__trackProfile = #', DART_RUNTIME_LIBRARY(), flag); } final JsSymbol = JS('', 'Symbol'); @@ -208,7 +209,7 @@ final hOP = JS('!', '#.Object.prototype.hasOwnProperty', global_); /// /// const my_library = Object.create(dart.library); /// -Object libraryPrototype = JS('', 'dart.library'); +Object libraryPrototype = JS('', '#.library', DART_RUNTIME_LIBRARY()); // TODO(vsm): Remove once this flag we've removed the ability to // whitelist / fallback on the old behavior. diff --git a/sdk/lib/_internal/js_dev_runtime/private/debugger.dart b/sdk/lib/_internal/js_dev_runtime/private/debugger.dart index 8840907c123..7451af19ab2 100644 --- a/sdk/lib/_internal/js_dev_runtime/private/debugger.dart +++ b/sdk/lib/_internal/js_dev_runtime/private/debugger.dart @@ -7,7 +7,8 @@ library dart._debugger; import 'dart:_foreign_helper' show JS; import 'dart:_interceptors' show JSArray; import 'dart:_js_helper' show InternalMap, jsObjectGetPrototypeOf; -import 'dart:_foreign_helper' show JS_GET_FLAG, JS_GET_NAME; +import 'dart:_foreign_helper' + show DART_RUNTIME_LIBRARY, JS_GET_FLAG, JS_GET_NAME; import 'dart:_js_shared_embedded_names' show JsGetName; import 'dart:_runtime' as dart; import 'dart:core'; diff --git a/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart b/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart index 45679392497..cda86db334c 100644 --- a/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart +++ b/sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart @@ -335,3 +335,8 @@ external String JS_STRING_CONCAT(String a, String b); /// JavaScript. @notNull external Object JS_CLASS_REF(Type type); + +/// Identifier used to access the dart:_runtime library object in the calling +/// context. +@notNull +external Object DART_RUNTIME_LIBRARY(); diff --git a/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart b/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart index a53419ea332..af12e60c73a 100644 --- a/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart +++ b/sdk/lib/_internal/js_dev_runtime/private/js_helper.dart @@ -7,7 +7,8 @@ library dart._js_helper; import 'dart:async' show Zone; import 'dart:collection'; -import 'dart:_foreign_helper' show JS, JS_CLASS_REF, JS_GET_FLAG, JSExportName; +import 'dart:_foreign_helper' + show DART_RUNTIME_LIBRAY, JS, JS_CLASS_REF, JS_GET_FLAG, JSExportName; import 'dart:_interceptors'; import 'dart:_internal' diff --git a/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart b/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart index 483e721d286..56b290fe6cd 100644 --- a/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart +++ b/sdk/lib/_internal/js_dev_runtime/private/js_rti.dart @@ -4,11 +4,6 @@ part of dart._js_helper; -// TODO(leafp): Maybe get rid of this? Currently used by the interceptors -// library, but that should probably be culled as well. -Type? getRuntimeType(object) => - JS('Type|null', 'dart.getReifiedType(#)', object); - /// Returns the property [index] of the JavaScript array [array]. getIndex(array, int index) { assert(isJsArray(array)); diff --git a/sdk/lib/_internal/js_dev_runtime/private/profile.dart b/sdk/lib/_internal/js_dev_runtime/private/profile.dart index ede43638034..943158c54f9 100644 --- a/sdk/lib/_internal/js_dev_runtime/private/profile.dart +++ b/sdk/lib/_internal/js_dev_runtime/private/profile.dart @@ -106,7 +106,8 @@ clearDynamicStats() { // We need to set this property while the sdk is only partially initialized // so we cannot use a regular Dart field. -bool get _trackProfile => JS('!', 'dart.__trackProfile'); +bool get _trackProfile => + JS('!', '#.__trackProfile', DART_RUNTIME_LIBRARY()); trackCall(obj) { if (JS('!', '!#', _trackProfile)) return;