Version 2.12.0-109.0.dev
Merge commit 'cec14bbf71c4e854b2b324fa18656949d9b42f05' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/pubspec.yaml b/pkg/_fe_analyzer_shared/pubspec.yaml
index a62ab70..951d2a4 100644
--- a/pkg/_fe_analyzer_shared/pubspec.yaml
+++ b/pkg/_fe_analyzer_shared/pubspec.yaml
@@ -4,7 +4,7 @@
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/_fe_analyzer_shared
environment:
- sdk: '>=2.6.0 <3.0.0'
+ sdk: '>=2.9.0 <3.0.0'
dependencies:
meta: ^1.0.2
dev_dependencies:
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index 6f40df1..c14bbd5 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -4,7 +4,7 @@
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
environment:
- sdk: '>=2.7.0 <3.0.0'
+ sdk: '>=2.9.0 <3.0.0'
dependencies:
_fe_analyzer_shared: ^14.0.0
diff --git a/pkg/analyzer_plugin/pubspec.yaml b/pkg/analyzer_plugin/pubspec.yaml
index b3ba237..b48c87b 100644
--- a/pkg/analyzer_plugin/pubspec.yaml
+++ b/pkg/analyzer_plugin/pubspec.yaml
@@ -5,7 +5,7 @@
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_plugin
environment:
- sdk: '>=2.3.0 <3.0.0'
+ sdk: '>=2.9.0 <3.0.0'
dependencies:
analyzer: '>=0.39.12 <0.41.0'
diff --git a/pkg/dartdev/benchmark/bench.dart b/pkg/dartdev/benchmark/bench.dart
index 689d437..fc62a89 100644
--- a/pkg/dartdev/benchmark/bench.dart
+++ b/pkg/dartdev/benchmark/bench.dart
@@ -105,7 +105,7 @@
class DartStartup extends Benchmark {
DartStartup()
: super(
- 'dart-startup',
+ 'script-startup',
'Benchmark the startup time of a minimal Dart script (μs).',
);
@@ -141,7 +141,7 @@
class DartRunStartup extends Benchmark {
DartRunStartup()
: super(
- 'dart-run-startup',
+ 'run-script-startup',
'Benchmark the startup time of a minimal Dart script, executed with '
'\`dart run\` (μs).',
);
diff --git a/pkg/dartdev/lib/src/commands/analyze.dart b/pkg/dartdev/lib/src/commands/analyze.dart
index 55984a9..5e533f4 100644
--- a/pkg/dartdev/lib/src/commands/analyze.dart
+++ b/pkg/dartdev/lib/src/commands/analyze.dart
@@ -24,6 +24,8 @@
/// message. The width left for the severity label plus the separator width.
static const int _bodyIndentWidth = _severityWidth + 3;
+ static final String _bodyIndent = ' ' * _bodyIndentWidth;
+
static final int _pipeCodeUnit = '|'.codeUnitAt(0);
static final int _slashCodeUnit = '\\'.codeUnitAt(0);
@@ -62,6 +64,7 @@
@override
String get invocation => '${super.invocation} [<directory>]';
+
@override
FutureOr<int> run() async {
if (argResults.rest.length > 1) {
@@ -167,6 +170,10 @@
log.stdout('');
+ final wrapWidth = dartdevUsageLineLength == null
+ ? null
+ : (dartdevUsageLineLength - _bodyIndentWidth);
+
for (final AnalysisError error in errors) {
// error • Message ... at path.dart:line:col • (code)
@@ -183,19 +190,28 @@
'(${error.code})',
);
- var padding = ' ' * _bodyIndentWidth;
if (verbose) {
for (var message in error.contextMessages) {
- log.stdout('$padding${message.message} '
- 'at ${message.filePath}:${message.line}:${message.column}');
+ // Wrap longer context messages.
+ var contextMessage = wrapText(
+ '${message.message} at '
+ '${message.filePath}:${message.line}:${message.column}',
+ width: wrapWidth);
+ log.stdout('$_bodyIndent'
+ '${contextMessage.replaceAll('\n', '\n$_bodyIndent')}');
}
}
+
if (error.correction != null) {
- log.stdout('$padding${error.correction}');
+ // Wrap longer correction messages.
+ var correction = wrapText(error.correction, width: wrapWidth);
+ log.stdout(
+ '$_bodyIndent${correction.replaceAll('\n', '\n$_bodyIndent')}');
}
+
if (verbose) {
if (error.url != null) {
- log.stdout('$padding${error.url}');
+ log.stdout('$_bodyIndent${error.url}');
}
}
}
diff --git a/pkg/dartdev/lib/src/utils.dart b/pkg/dartdev/lib/src/utils.dart
index 88b80ed..43249c3 100644
--- a/pkg/dartdev/lib/src/utils.dart
+++ b/pkg/dartdev/lib/src/utils.dart
@@ -68,3 +68,39 @@
bool get isDartFile => this is File && p.extension(path) == '.dart';
}
+
+/// Wraps [text] to the given [width], if provided.
+String wrapText(String text, {int width}) {
+ if (width == null) {
+ return text;
+ }
+
+ var buffer = StringBuffer();
+ var lineMaxEndIndex = width;
+ var lineStartIndex = 0;
+
+ while (true) {
+ if (lineMaxEndIndex >= text.length) {
+ buffer.write(text.substring(lineStartIndex, text.length));
+ break;
+ } else {
+ var lastSpaceIndex = text.lastIndexOf(' ', lineMaxEndIndex);
+ if (lastSpaceIndex == -1 || lastSpaceIndex <= lineStartIndex) {
+ // No space between [lineStartIndex] and [lineMaxEndIndex]. Get the
+ // _next_ space.
+ lastSpaceIndex = text.indexOf(' ', lineMaxEndIndex);
+ if (lastSpaceIndex == -1) {
+ // No space at all after [lineStartIndex].
+ lastSpaceIndex = text.length;
+ buffer.write(text.substring(lineStartIndex, lastSpaceIndex));
+ break;
+ }
+ }
+ buffer.write(text.substring(lineStartIndex, lastSpaceIndex));
+ buffer.writeln();
+ lineStartIndex = lastSpaceIndex + 1;
+ }
+ lineMaxEndIndex = lineStartIndex + width;
+ }
+ return buffer.toString();
+}
diff --git a/pkg/dartdev/test/utils_test.dart b/pkg/dartdev/test/utils_test.dart
index 9740dd1..51f6d5f 100644
--- a/pkg/dartdev/test/utils_test.dart
+++ b/pkg/dartdev/test/utils_test.dart
@@ -6,7 +6,7 @@
import 'dart:io';
import 'package:dartdev/src/utils.dart';
-import 'package:path/path.dart';
+import 'package:path/path.dart' as path;
import 'package:test/test.dart';
void main() {
@@ -32,7 +32,7 @@
test('nested', () {
var dir = Directory('foo');
- expect(relativePath(join(dir.absolute.path, 'path'), dir), 'path');
+ expect(relativePath(path.join(dir.absolute.path, 'path'), dir), 'path');
});
});
@@ -93,10 +93,10 @@
test('name', () {
expect(Directory('').name, '');
expect(Directory('dirName').name, 'dirName');
- expect(Directory('dirName$separator').name, 'dirName');
+ expect(Directory('dirName${path.separator}').name, 'dirName');
expect(File('').name, '');
expect(File('foo.dart').name, 'foo.dart');
- expect(File('${separator}foo.dart').name, 'foo.dart');
+ expect(File('${path.separator}foo.dart').name, 'foo.dart');
expect(File('bar.bart').name, 'bar.bart');
});
});
@@ -133,6 +133,66 @@
orderedEquals(['pub', 'publish', '--help']));
});
});
+
+ group('wrapText', () {
+ test('oneLine_wordLongerThanLine', () {
+ expect(wrapText('http://long-url', width: 10), equals('http://long-url'));
+ });
+
+ test('singleLine', () {
+ expect(wrapText('one two', width: 10), equals('one two'));
+ });
+
+ test('singleLine_exactLength', () {
+ expect(wrapText('one twoooo', width: 10), equals('one twoooo'));
+ });
+
+ test('singleLine_exactLength_minusOne', () {
+ expect(wrapText('one twooo', width: 10), equals('one twooo'));
+ });
+
+ test('singleLine_exactLength_plusOne', () {
+ expect(wrapText('one twooooo', width: 10), equals('one\ntwooooo'));
+ });
+
+ test('twoLines_exactLength', () {
+ expect(wrapText('one two three four', width: 10),
+ equals('one two\nthree four'));
+ });
+
+ test('twoLines_exactLength_minusOne', () {
+ expect(wrapText('one two three fou', width: 10),
+ equals('one two\nthree fou'));
+ });
+
+ test('twoLines_exactLength_plusOne', () {
+ expect(wrapText('one two three fourr', width: 10),
+ equals('one two\nthree\nfourr'));
+ });
+
+ test('twoLines_lastLineEndsWithSpace', () {
+ expect(wrapText('one two three ', width: 10), equals('one two\nthree '));
+ });
+
+ test('twoLines_multipleSpacesAtSplit', () {
+ expect(
+ wrapText('one two. Three', width: 10), equals('one two. \nThree'));
+ });
+
+ test('twoLines_noSpaceLastLine', () {
+ expect(wrapText('one two three', width: 10), equals('one two\nthree'));
+ });
+
+ test('twoLines_wordLongerThanLine_firstLine', () {
+ expect(wrapText('http://long-url word', width: 10),
+ equals('http://long-url\nword'));
+ });
+
+ test('twoLines_wordLongerThanLine_lastLine', () {
+ expect(wrapText('word http://long-url', width: 10),
+ equals('word\nhttp://long-url'));
+ });
+ });
}
const String _packageData = '''{
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
index a829957..eddf299 100644
--- a/runtime/lib/mirrors.cc
+++ b/runtime/lib/mirrors.cc
@@ -435,11 +435,12 @@
const LibraryPrefix& prefix,
const bool is_import,
const bool is_deferred) {
- const Library& importee = Library::Handle(ns.library());
+ const Library& importee = Library::Handle(ns.target());
const Array& show_names = Array::Handle(ns.show_names());
const Array& hide_names = Array::Handle(ns.hide_names());
- Object& metadata = Object::Handle(ns.GetMetadata());
+ const Library& owner = Library::Handle(ns.owner());
+ Object& metadata = Object::Handle(owner.GetMetadata(ns));
if (metadata.IsError()) {
Exceptions::PropagateError(Error::Cast(metadata));
UNREACHABLE();
diff --git a/runtime/vm/canonical_tables.h b/runtime/vm/canonical_tables.h
index 69b79eb..3fd3f24 100644
--- a/runtime/vm/canonical_tables.h
+++ b/runtime/vm/canonical_tables.h
@@ -254,6 +254,38 @@
typedef UnorderedHashSet<CanonicalTypeArgumentsTraits>
CanonicalTypeArgumentsSet;
+class MetadataMapTraits {
+ public:
+ static const char* Name() { return "MetadataMapTraits"; }
+ static bool ReportStats() { return false; }
+ static bool IsMatch(const Object& key, const Object& candidate) {
+ return key.raw() == candidate.raw();
+ }
+ static uword Hash(const Object& key) {
+#if !defined(DART_PRECOMPILED_RUNTIME)
+ if (key.IsLibrary()) {
+ return String::Hash(Library::Cast(key).url());
+ } else if (key.IsClass()) {
+ return String::Hash(Class::Cast(key).Name());
+ } else if (key.IsPatchClass()) {
+ return Hash(Object::Handle(PatchClass::Cast(key).patched_class()));
+ } else if (key.IsFunction()) {
+ return CombineHashes(String::Hash(Function::Cast(key).name()),
+ Hash(Object::Handle(Function::Cast(key).Owner())));
+ } else if (key.IsField()) {
+ return CombineHashes(String::Hash(Field::Cast(key).name()),
+ Hash(Object::Handle(Field::Cast(key).Owner())));
+ } else if (key.IsTypeParameter()) {
+ return TypeParameter::Cast(key).Hash();
+ } else if (key.IsNamespace()) {
+ return Hash(Library::Handle(Namespace::Cast(key).target()));
+ }
+#endif
+ UNREACHABLE();
+ }
+};
+typedef UnorderedHashMap<MetadataMapTraits> MetadataMap;
+
} // namespace dart
#endif // RUNTIME_VM_CANONICAL_TABLES_H_
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 70d7a0d..4070944 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -5836,7 +5836,12 @@
WriteUnsigned(num_objects);
WriteUnsigned(canonical_clusters.length());
WriteUnsigned(clusters.length());
- WriteUnsigned(initial_field_table_->NumFieldIds());
+ // TODO(dartbug.com/36097): Not every snapshot carries the field table.
+ if (current_loading_unit_id_ <= LoadingUnit::kRootId) {
+ WriteUnsigned(initial_field_table_->NumFieldIds());
+ } else {
+ WriteUnsigned(0);
+ }
for (SerializationCluster* cluster : canonical_clusters) {
cluster->WriteAndMeasureAlloc(this);
@@ -6572,8 +6577,8 @@
refs_ = Array::New(num_objects_ + kFirstReference, Heap::kOld);
if (initial_field_table_len > 0) {
initial_field_table_->AllocateIndex(initial_field_table_len - 1);
+ ASSERT_EQUAL(initial_field_table_->NumFieldIds(), initial_field_table_len);
}
- ASSERT_EQUAL(initial_field_table_->NumFieldIds(), initial_field_table_len);
{
NoSafepointScope no_safepoint;
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index ea2fc4a..06e7c4c 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -2117,47 +2117,9 @@
void Precompiler::DropMetadata() {
Library& lib = Library::Handle(Z);
- const GrowableObjectArray& null_growable_list =
- GrowableObjectArray::Handle(Z);
- Array& dependencies = Array::Handle(Z);
- Namespace& ns = Namespace::Handle(Z);
- const Field& null_field = Field::Handle(Z);
- GrowableObjectArray& metadata = GrowableObjectArray::Handle(Z);
- Field& metadata_field = Field::Handle(Z);
-
for (intptr_t i = 0; i < libraries_.Length(); i++) {
lib ^= libraries_.At(i);
- metadata ^= lib.metadata();
- for (intptr_t j = 0; j < metadata.Length(); j++) {
- metadata_field ^= metadata.At(j);
- if (metadata_field.is_static()) {
- // Although this field will become garbage after clearing the list
- // below, we also need to clear its value from the field table.
- // The value may be an instance of an otherwise dead class, and if
- // it remains in the field table we can get an instance on the heap
- // with a deleted class.
- metadata_field.SetStaticValue(Object::null_instance(),
- /*save_initial_value=*/true);
- }
- }
-
- lib.set_metadata(null_growable_list);
-
- dependencies = lib.imports();
- for (intptr_t j = 0; j < dependencies.Length(); j++) {
- ns ^= dependencies.At(j);
- if (!ns.IsNull()) {
- ns.set_metadata_field(null_field);
- }
- }
-
- dependencies = lib.exports();
- for (intptr_t j = 0; j < dependencies.Length(); j++) {
- ns ^= dependencies.At(j);
- if (!ns.IsNull()) {
- ns.set_metadata_field(null_field);
- }
- }
+ lib.set_metadata(Array::null_array());
}
}
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h
index 33f2627..ca9a298 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.h
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.h
@@ -364,7 +364,7 @@
LateInitializationErrorSlowPath(LoadFieldInstr* instruction,
intptr_t try_index)
: ThrowErrorSlowPathCode(instruction,
- kLateInitializationErrorRuntimeEntry,
+ kLateFieldNotInitializedErrorRuntimeEntry,
try_index) {}
virtual const char* name() { return "late initialization error"; }
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index 15d0a86..d466c551 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -2064,7 +2064,7 @@
// The variable has no initializer, so throw a LateInitializationError.
Fragment initialize(is_uninitialized);
initialize += flow_graph_builder_->ThrowLateInitializationError(
- position, variable->name());
+ position, "_throwLocalNotInitialized", variable->name());
initialize += Goto(join);
}
}
@@ -2130,7 +2130,7 @@
// Already initialized, so throw a LateInitializationError.
Fragment already_initialized(is_initialized);
already_initialized += flow_graph_builder_->ThrowLateInitializationError(
- position, variable->name());
+ position, "_throwLocalAlreadyInitialized", variable->name());
already_initialized += Goto(join);
}
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
index 175cc4e..0718d9d 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
@@ -217,8 +217,6 @@
Fragment StringInterpolate(TokenPosition position);
Fragment StringInterpolateSingle(TokenPosition position);
Fragment ThrowTypeError();
- Fragment ThrowLateInitializationError(TokenPosition position,
- const String& name);
Fragment LoadInstantiatorTypeArguments();
Fragment LoadFunctionTypeArguments();
Fragment InstantiateType(const AbstractType& type);
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 105feaa..e84cc87 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -440,22 +440,24 @@
}
}
-Fragment FlowGraphBuilder::ThrowLateInitializationError(TokenPosition position,
- const String& name) {
- const Class& klass = Class::ZoneHandle(
- Z, Library::LookupCoreClass(Symbols::LateInitializationError()));
+Fragment FlowGraphBuilder::ThrowLateInitializationError(
+ TokenPosition position,
+ const char* throw_method_name,
+ const String& name) {
+ const Class& klass =
+ Class::ZoneHandle(Z, Library::LookupCoreClass(Symbols::LateError()));
ASSERT(!klass.IsNull());
const auto& error = klass.EnsureIsFinalized(thread_);
ASSERT(error == Error::null());
const Function& throw_new =
Function::ZoneHandle(Z, klass.LookupStaticFunctionAllowPrivate(
- H.DartSymbolObfuscate("_throwNew")));
+ H.DartSymbolObfuscate(throw_method_name)));
ASSERT(!throw_new.IsNull());
Fragment instructions;
- // Call _LateInitializationError._throwNew.
+ // Call LateError._throwFoo.
instructions += Constant(name);
instructions += StaticCall(position, throw_new,
/* argument_count = */ 1, ICData::kStatic);
@@ -495,7 +497,8 @@
// If the field is already initialized, throw a LateInitializationError.
Fragment already_initialized(is_initialized);
already_initialized += ThrowLateInitializationError(
- position, String::ZoneHandle(Z, field.name()));
+ position, "_throwFieldAlreadyInitialized",
+ String::ZoneHandle(Z, field.name()));
already_initialized += Goto(join);
}
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.h b/runtime/vm/compiler/frontend/kernel_to_il.h
index 6d4eaa8..1041f9c 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.h
+++ b/runtime/vm/compiler/frontend/kernel_to_il.h
@@ -224,6 +224,7 @@
Fragment ThrowTypeError();
Fragment ThrowNoSuchMethodError(const Function& target);
Fragment ThrowLateInitializationError(TokenPosition position,
+ const char* throw_method_name,
const String& name);
Fragment BuildImplicitClosureCreation(const Function& target);
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index e4dae18..2a76c83 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -221,9 +221,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 368;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 688;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
692;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 696;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 120;
static constexpr dart::compiler::target::word
@@ -248,7 +248,7 @@
Thread_allocate_object_slow_entry_point_offset = 288;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 724;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 728;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 332;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -259,7 +259,7 @@
Thread_call_to_runtime_entry_point_offset = 268;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 732;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 736;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 48;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -277,7 +277,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 708;
+ 712;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
@@ -297,11 +297,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 364;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 696;
+ 700;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 132;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 720;
+ 724;
static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
68;
@@ -344,11 +344,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 700;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 704;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 704;
+ Thread_saved_shadow_call_stack_offset = 708;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 712;
+ 716;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 240;
static constexpr dart::compiler::target::word
@@ -381,7 +381,7 @@
Thread_write_barrier_entry_point_offset = 260;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 716;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 720;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -433,7 +433,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 656, 660, 664, 668, 672, -1, 676, -1, 680, 684, -1, -1, -1, -1, -1, -1};
+ 660, 664, 668, 672, 676, -1, 680, -1, 684, 688, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word Array_InstanceSize = 12;
static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -738,9 +738,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1392;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
1400;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 1408;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -766,7 +766,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1464;
+ 1472;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -777,7 +777,7 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1480;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1488;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -795,7 +795,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1432;
+ 1440;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -815,11 +815,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1408;
+ 1416;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1456;
+ 1464;
static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
136;
@@ -862,11 +862,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1416;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1424;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1424;
+ Thread_saved_shadow_call_stack_offset = 1432;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1440;
+ 1448;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -900,7 +900,7 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
80;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1448;
+ 1456;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
16;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -953,8 +953,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, -1, -1, 1336, 1344,
- 1352, 1360, 1368, -1, 1376, 1384, -1, -1};
+ 1312, 1320, 1328, 1336, -1, -1, 1344, 1352,
+ 1360, 1368, 1376, -1, 1384, 1392, -1, -1};
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_InstanceSize = 24;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -1257,9 +1257,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 368;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 656;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
660;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 664;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 120;
static constexpr dart::compiler::target::word
@@ -1284,7 +1284,7 @@
Thread_allocate_object_slow_entry_point_offset = 288;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 692;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 696;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 332;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -1295,7 +1295,7 @@
Thread_call_to_runtime_entry_point_offset = 268;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 700;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 704;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 48;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -1313,7 +1313,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 676;
+ 680;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
@@ -1333,11 +1333,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 364;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 664;
+ 668;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 132;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 688;
+ 692;
static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
68;
@@ -1380,11 +1380,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 668;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 672;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 672;
+ Thread_saved_shadow_call_stack_offset = 676;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 680;
+ 684;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 240;
static constexpr dart::compiler::target::word
@@ -1417,7 +1417,7 @@
Thread_write_barrier_entry_point_offset = 260;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 684;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 688;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -1771,9 +1771,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1464;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
1472;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 1480;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -1799,7 +1799,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1536;
+ 1544;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -1810,7 +1810,7 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1552;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1560;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -1828,7 +1828,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1504;
+ 1512;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -1848,11 +1848,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1480;
+ 1488;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1528;
+ 1536;
static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
136;
@@ -1895,11 +1895,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1488;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1496;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1496;
+ Thread_saved_shadow_call_stack_offset = 1504;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1512;
+ 1520;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -1933,7 +1933,7 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
80;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1520;
+ 1528;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
16;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -1986,9 +1986,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384,
- 1392, 1400, 1408, 1416, -1, -1, -1, -1, 1424, 1432, -1,
- -1, 1440, 1448, 1456, -1, -1, -1, -1, -1, -1};
+ 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392,
+ 1400, 1408, 1416, 1424, -1, -1, -1, -1, 1432, 1440, -1,
+ -1, 1448, 1456, 1464, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_InstanceSize = 24;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -2290,9 +2290,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 368;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 688;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
692;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 696;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 120;
static constexpr dart::compiler::target::word
@@ -2317,7 +2317,7 @@
Thread_allocate_object_slow_entry_point_offset = 288;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 724;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 728;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 332;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -2328,7 +2328,7 @@
Thread_call_to_runtime_entry_point_offset = 268;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 732;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 736;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 48;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -2346,7 +2346,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 708;
+ 712;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
@@ -2366,11 +2366,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 364;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 696;
+ 700;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 132;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 720;
+ 724;
static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
68;
@@ -2413,11 +2413,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 700;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 704;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 704;
+ Thread_saved_shadow_call_stack_offset = 708;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 712;
+ 716;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 240;
static constexpr dart::compiler::target::word
@@ -2450,7 +2450,7 @@
Thread_write_barrier_entry_point_offset = 260;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 716;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 720;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -2499,7 +2499,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 656, 660, 664, 668, 672, -1, 676, -1, 680, 684, -1, -1, -1, -1, -1, -1};
+ 660, 664, 668, 672, 676, -1, 680, -1, 684, 688, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word Array_InstanceSize = 12;
static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -2801,9 +2801,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1392;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
1400;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 1408;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -2829,7 +2829,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1464;
+ 1472;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2840,7 +2840,7 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1480;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1488;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -2858,7 +2858,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1432;
+ 1440;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -2878,11 +2878,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1408;
+ 1416;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1456;
+ 1464;
static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
136;
@@ -2925,11 +2925,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1416;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1424;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1424;
+ Thread_saved_shadow_call_stack_offset = 1432;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1440;
+ 1448;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -2963,7 +2963,7 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
80;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1448;
+ 1456;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
16;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -3013,8 +3013,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, -1, -1, 1336, 1344,
- 1352, 1360, 1368, -1, 1376, 1384, -1, -1};
+ 1312, 1320, 1328, 1336, -1, -1, 1344, 1352,
+ 1360, 1368, 1376, -1, 1384, 1392, -1, -1};
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_InstanceSize = 24;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -3314,9 +3314,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 368;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 656;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
660;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 664;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 120;
static constexpr dart::compiler::target::word
@@ -3341,7 +3341,7 @@
Thread_allocate_object_slow_entry_point_offset = 288;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 692;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 696;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 332;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -3352,7 +3352,7 @@
Thread_call_to_runtime_entry_point_offset = 268;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 700;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 704;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 48;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -3370,7 +3370,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 676;
+ 680;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
@@ -3390,11 +3390,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 364;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 664;
+ 668;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 132;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 688;
+ 692;
static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
68;
@@ -3437,11 +3437,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 668;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 672;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 672;
+ Thread_saved_shadow_call_stack_offset = 676;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 680;
+ 684;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 240;
static constexpr dart::compiler::target::word
@@ -3474,7 +3474,7 @@
Thread_write_barrier_entry_point_offset = 260;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 684;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 688;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -3822,9 +3822,9 @@
static constexpr dart::compiler::target::word
Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1464;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
1472;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+ 1480;
static constexpr dart::compiler::target::word
Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -3850,7 +3850,7 @@
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1536;
+ 1544;
static constexpr dart::compiler::target::word
Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -3861,7 +3861,7 @@
Thread_call_to_runtime_entry_point_offset = 528;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1552;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1560;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -3879,7 +3879,7 @@
static constexpr dart::compiler::target::word
Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1504;
+ 1512;
static constexpr dart::compiler::target::word
Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -3899,11 +3899,11 @@
static constexpr dart::compiler::target::word
Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1480;
+ 1488;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1528;
+ 1536;
static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
136;
@@ -3946,11 +3946,11 @@
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1488;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1496;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1496;
+ Thread_saved_shadow_call_stack_offset = 1504;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1512;
+ 1520;
static constexpr dart::compiler::target::word
Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -3984,7 +3984,7 @@
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
80;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1520;
+ 1528;
static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
16;
static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -4034,9 +4034,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384,
- 1392, 1400, 1408, 1416, -1, -1, -1, -1, 1424, 1432, -1,
- -1, 1440, 1448, 1456, -1, -1, -1, -1, -1, -1};
+ 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392,
+ 1400, 1408, 1416, 1424, -1, -1, -1, -1, 1432, 1440, -1,
+ -1, 1448, 1456, 1464, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_InstanceSize = 24;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -4361,9 +4361,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 688;
+ AOT_Thread_active_exception_offset = 692;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 692;
+ AOT_Thread_active_stacktrace_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_code_offset = 120;
static constexpr dart::compiler::target::word
@@ -4389,7 +4389,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 196;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 724;
+ 728;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 332;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -4402,7 +4402,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 136;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 732;
+ 736;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 48;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -4421,7 +4421,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 708;
+ AOT_Thread_execution_state_offset = 712;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
@@ -4441,11 +4441,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 364;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 696;
+ AOT_Thread_global_object_pool_offset = 700;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 132;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 720;
+ AOT_Thread_exit_through_ffi_offset = 724;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 44;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 68;
@@ -4490,11 +4490,11 @@
104;
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 700;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 704;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 704;
+ AOT_Thread_saved_shadow_call_stack_offset = 708;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 712;
+ AOT_Thread_safepoint_state_offset = 716;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 240;
static constexpr dart::compiler::target::word
@@ -4530,7 +4530,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 716;
+ 720;
static constexpr dart::compiler::target::word
AOT_TimelineStream_enabled_offset = 8;
static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -4595,7 +4595,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 656, 660, 664, 668, 672, -1, 676, -1, 680, 684, -1, -1, -1, -1, -1, -1};
+ 660, 664, 668, 672, 676, -1, 680, -1, 684, 688, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word AOT_Array_InstanceSize = 12;
static constexpr dart::compiler::target::word AOT_Array_header_size = 12;
@@ -4933,9 +4933,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1392;
+ AOT_Thread_active_exception_offset = 1400;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1400;
+ AOT_Thread_active_stacktrace_offset = 1408;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -4961,7 +4961,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1464;
+ 1472;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -4974,7 +4974,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 264;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1480;
+ 1488;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -4993,7 +4993,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1432;
+ AOT_Thread_execution_state_offset = 1440;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -5013,11 +5013,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1408;
+ AOT_Thread_global_object_pool_offset = 1416;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1456;
+ AOT_Thread_exit_through_ffi_offset = 1464;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 136;
@@ -5063,11 +5063,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1416;
+ 1424;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1424;
+ AOT_Thread_saved_shadow_call_stack_offset = 1432;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1440;
+ AOT_Thread_safepoint_state_offset = 1448;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -5103,7 +5103,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1448;
+ 1456;
static constexpr dart::compiler::target::word
AOT_TimelineStream_enabled_offset = 16;
static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -5168,8 +5168,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, -1, -1, 1336, 1344,
- 1352, 1360, 1368, -1, 1376, 1384, -1, -1};
+ 1312, 1320, 1328, 1336, -1, -1, 1344, 1352,
+ 1360, 1368, 1376, -1, 1384, 1392, -1, -1};
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word AOT_Array_InstanceSize = 24;
static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
@@ -5510,9 +5510,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1464;
+ AOT_Thread_active_exception_offset = 1472;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1472;
+ AOT_Thread_active_stacktrace_offset = 1480;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -5538,7 +5538,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1536;
+ 1544;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -5551,7 +5551,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 264;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1552;
+ 1560;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -5570,7 +5570,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1504;
+ AOT_Thread_execution_state_offset = 1512;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -5590,11 +5590,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1480;
+ AOT_Thread_global_object_pool_offset = 1488;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1528;
+ AOT_Thread_exit_through_ffi_offset = 1536;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 136;
@@ -5640,11 +5640,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1488;
+ 1496;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1496;
+ AOT_Thread_saved_shadow_call_stack_offset = 1504;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1512;
+ AOT_Thread_safepoint_state_offset = 1520;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -5680,7 +5680,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1520;
+ 1528;
static constexpr dart::compiler::target::word
AOT_TimelineStream_enabled_offset = 16;
static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -5745,9 +5745,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384,
- 1392, 1400, 1408, 1416, -1, -1, -1, -1, 1424, 1432, -1,
- -1, 1440, 1448, 1456, -1, -1, -1, -1, -1, -1};
+ 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392,
+ 1400, 1408, 1416, 1424, -1, -1, -1, -1, 1432, 1440, -1,
+ -1, 1448, 1456, 1464, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word AOT_Array_InstanceSize = 24;
static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
@@ -6082,9 +6082,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 688;
+ AOT_Thread_active_exception_offset = 692;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 692;
+ AOT_Thread_active_stacktrace_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_code_offset = 120;
static constexpr dart::compiler::target::word
@@ -6110,7 +6110,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 196;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 724;
+ 728;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 332;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -6123,7 +6123,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 136;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 732;
+ 736;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 48;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -6142,7 +6142,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 708;
+ AOT_Thread_execution_state_offset = 712;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 252;
static constexpr dart::compiler::target::word
@@ -6162,11 +6162,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 364;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 696;
+ AOT_Thread_global_object_pool_offset = 700;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 132;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 720;
+ AOT_Thread_exit_through_ffi_offset = 724;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 44;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 68;
@@ -6211,11 +6211,11 @@
104;
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 700;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 704;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 704;
+ AOT_Thread_saved_shadow_call_stack_offset = 708;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 712;
+ AOT_Thread_safepoint_state_offset = 716;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 240;
static constexpr dart::compiler::target::word
@@ -6251,7 +6251,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 716;
+ 720;
static constexpr dart::compiler::target::word
AOT_TimelineStream_enabled_offset = 8;
static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -6313,7 +6313,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 656, 660, 664, 668, 672, -1, 676, -1, 680, 684, -1, -1, -1, -1, -1, -1};
+ 660, 664, 668, 672, 676, -1, 680, -1, 684, 688, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word AOT_Array_InstanceSize = 12;
static constexpr dart::compiler::target::word AOT_Array_header_size = 12;
@@ -6647,9 +6647,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1392;
+ AOT_Thread_active_exception_offset = 1400;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1400;
+ AOT_Thread_active_stacktrace_offset = 1408;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -6675,7 +6675,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1464;
+ 1472;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -6688,7 +6688,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 264;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1480;
+ 1488;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -6707,7 +6707,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1432;
+ AOT_Thread_execution_state_offset = 1440;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -6727,11 +6727,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1408;
+ AOT_Thread_global_object_pool_offset = 1416;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1456;
+ AOT_Thread_exit_through_ffi_offset = 1464;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 136;
@@ -6777,11 +6777,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1416;
+ 1424;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1424;
+ AOT_Thread_saved_shadow_call_stack_offset = 1432;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1440;
+ AOT_Thread_safepoint_state_offset = 1448;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -6817,7 +6817,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1448;
+ 1456;
static constexpr dart::compiler::target::word
AOT_TimelineStream_enabled_offset = 16;
static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -6879,8 +6879,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, -1, -1, 1336, 1344,
- 1352, 1360, 1368, -1, 1376, 1384, -1, -1};
+ 1312, 1320, 1328, 1336, -1, -1, 1344, 1352,
+ 1360, 1368, 1376, -1, 1384, 1392, -1, -1};
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word AOT_Array_InstanceSize = 24;
static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
@@ -7217,9 +7217,9 @@
static constexpr dart::compiler::target::word
AOT_Thread_AllocateArray_entry_point_offset = 728;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1464;
+ AOT_Thread_active_exception_offset = 1472;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1472;
+ AOT_Thread_active_stacktrace_offset = 1480;
static constexpr dart::compiler::target::word
AOT_Thread_array_write_barrier_code_offset = 232;
static constexpr dart::compiler::target::word
@@ -7245,7 +7245,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 384;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1536;
+ 1544;
static constexpr dart::compiler::target::word
AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -7258,7 +7258,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 264;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1552;
+ 1560;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 96;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -7277,7 +7277,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_enter_safepoint_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1504;
+ AOT_Thread_execution_state_offset = 1512;
static constexpr dart::compiler::target::word
AOT_Thread_exit_safepoint_stub_offset = 496;
static constexpr dart::compiler::target::word
@@ -7297,11 +7297,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_float_zerow_address_offset = 720;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1480;
+ AOT_Thread_global_object_pool_offset = 1488;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1528;
+ AOT_Thread_exit_through_ffi_offset = 1536;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 136;
@@ -7347,11 +7347,11 @@
static constexpr dart::compiler::target::word
AOT_Thread_predefined_symbols_address_offset = 664;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1488;
+ 1496;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1496;
+ AOT_Thread_saved_shadow_call_stack_offset = 1504;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1512;
+ AOT_Thread_safepoint_state_offset = 1520;
static constexpr dart::compiler::target::word
AOT_Thread_slow_type_test_stub_offset = 472;
static constexpr dart::compiler::target::word
@@ -7387,7 +7387,7 @@
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1520;
+ 1528;
static constexpr dart::compiler::target::word
AOT_TimelineStream_enabled_offset = 16;
static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -7449,9 +7449,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1304, 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384,
- 1392, 1400, 1408, 1416, -1, -1, -1, -1, 1424, 1432, -1,
- -1, 1440, 1448, 1456, -1, -1, -1, -1, -1, -1};
+ 1312, 1320, 1328, 1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392,
+ 1400, 1408, 1416, 1424, -1, -1, -1, -1, 1432, 1440, -1,
+ -1, 1448, 1456, 1464, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word AOT_Array_InstanceSize = 24;
static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index 5456c29..8295e00 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -121,7 +121,7 @@
__ Bind(&throw_exception);
__ PushObject(NullObject()); // Make room for (unused) result.
__ PushRegister(kFieldReg);
- __ CallRuntime(kLateInitializationErrorRuntimeEntry,
+ __ CallRuntime(kLateFieldAssignedDuringInitializationErrorRuntimeEntry,
/*argument_count=*/1);
__ Breakpoint();
}
@@ -692,7 +692,8 @@
bool with_fpu_regs) {
auto perform_runtime_call = [&]() {
__ PushRegister(LateInitializationErrorABI::kFieldReg);
- __ CallRuntime(kLateInitializationErrorRuntimeEntry, /*argument_count=*/1);
+ __ CallRuntime(kLateFieldNotInitializedErrorRuntimeEntry,
+ /*argument_count=*/1);
};
GenerateSharedStubGeneric(
assembler, /*save_fpu_registers=*/with_fpu_regs,
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 6f83c62..f8c16ec 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -6007,7 +6007,7 @@
for (intptr_t j = 0; j < imports.Length(); j++) {
ns ^= imports.At(j);
if (ns.IsNull()) continue;
- importee = ns.library();
+ importee = ns.target();
importee_uri = importee.url();
if (importee_uri.StartsWith(scheme_vm)) {
result.Add(importer);
diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc
index d67906f..6cc253e 100644
--- a/runtime/vm/exceptions.cc
+++ b/runtime/vm/exceptions.cc
@@ -1104,10 +1104,18 @@
Exceptions::ThrowByType(Exceptions::kCompileTimeError, args);
}
-void Exceptions::ThrowLateInitializationError(const String& name) {
+void Exceptions::ThrowLateFieldNotInitialized(const String& name) {
const Array& args = Array::Handle(Array::New(1));
args.SetAt(0, name);
- Exceptions::ThrowByType(Exceptions::kLateInitializationError, args);
+ Exceptions::ThrowByType(Exceptions::kLateFieldNotInitialized, args);
+}
+
+void Exceptions::ThrowLateFieldAssignedDuringInitialization(
+ const String& name) {
+ const Array& args = Array::Handle(Array::New(1));
+ args.SetAt(0, name);
+ Exceptions::ThrowByType(Exceptions::kLateFieldAssignedDuringInitialization,
+ args);
}
ObjectPtr Exceptions::Create(ExceptionType type, const Array& arguments) {
@@ -1197,9 +1205,15 @@
library = Library::CoreLibrary();
class_name = &Symbols::_CompileTimeError();
break;
- case kLateInitializationError:
- library = Library::CoreLibrary();
- class_name = &Symbols::LateInitializationError();
+ case kLateFieldAssignedDuringInitialization:
+ library = Library::InternalLibrary();
+ class_name = &Symbols::LateError();
+ constructor_name = &Symbols::DotFieldADI();
+ break;
+ case kLateFieldNotInitialized:
+ library = Library::InternalLibrary();
+ class_name = &Symbols::LateError();
+ constructor_name = &Symbols::DotFieldNI();
break;
}
diff --git a/runtime/vm/exceptions.h b/runtime/vm/exceptions.h
index e7b52e5..20aef13 100644
--- a/runtime/vm/exceptions.h
+++ b/runtime/vm/exceptions.h
@@ -67,7 +67,8 @@
kAbstractClassInstantiation,
kCyclicInitializationError,
kCompileTimeError,
- kLateInitializationError,
+ kLateFieldAssignedDuringInitialization,
+ kLateFieldNotInitialized,
};
DART_NORETURN static void ThrowByType(ExceptionType type,
@@ -83,7 +84,9 @@
intptr_t expected_to);
DART_NORETURN static void ThrowUnsupportedError(const char* msg);
DART_NORETURN static void ThrowCompileTimeError(const LanguageError& error);
- DART_NORETURN static void ThrowLateInitializationError(const String& name);
+ DART_NORETURN static void ThrowLateFieldAssignedDuringInitialization(
+ const String& name);
+ DART_NORETURN static void ThrowLateFieldNotInitialized(const String& name);
// Returns a RawInstance if the exception is successfully created,
// otherwise returns a RawError.
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index a9e660f..8e586b3 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -961,7 +961,7 @@
for (intptr_t import_idx = 0; import_idx < ports.Length(); import_idx++) {
ns ^= ports.At(import_idx);
if (!ns.IsNull()) {
- target = ns.library();
+ target = ns.target();
target_url = target.url();
if (!target_url.StartsWith(Symbols::DartExtensionScheme())) {
(*imported_by)[target.index()]->Add(lib.index());
@@ -974,7 +974,7 @@
for (intptr_t export_idx = 0; export_idx < ports.Length(); export_idx++) {
ns ^= ports.At(export_idx);
if (!ns.IsNull()) {
- target = ns.library();
+ target = ns.target();
(*imported_by)[target.index()]->Add(lib.index());
}
}
@@ -992,7 +992,7 @@
import_idx++) {
ns ^= ports.At(import_idx);
if (!ns.IsNull()) {
- target = ns.library();
+ target = ns.target();
(*imported_by)[target.index()]->Add(lib.index());
}
}
diff --git a/runtime/vm/kernel.cc b/runtime/vm/kernel.cc
index 7c53e72..952e41a 100644
--- a/runtime/vm/kernel.cc
+++ b/runtime/vm/kernel.cc
@@ -430,26 +430,28 @@
DISALLOW_COPY_AND_ASSIGN(MetadataEvaluator);
};
-ObjectPtr EvaluateMetadata(const Field& metadata_field,
+ObjectPtr EvaluateMetadata(const Library& library,
+ intptr_t kernel_offset,
bool is_annotations_offset) {
LongJumpScope jump;
if (setjmp(*jump.Set()) == 0) {
Thread* thread = Thread::Current();
Zone* zone = thread->zone();
TranslationHelper helper(thread);
- Script& script = Script::Handle(zone, metadata_field.Script());
+ Script& script = Script::Handle(
+ zone, Class::Handle(zone, library.toplevel_class()).script());
helper.InitFromScript(script);
- const Class& owner_class = Class::Handle(zone, metadata_field.Owner());
+ const Class& owner_class = Class::Handle(zone, library.toplevel_class());
ActiveClass active_class;
ActiveClassScope active_class_scope(&active_class, &owner_class);
MetadataEvaluator metadata_evaluator(
zone, &helper, script,
- ExternalTypedData::Handle(zone, metadata_field.KernelData()),
- metadata_field.KernelDataProgramOffset(), &active_class);
+ ExternalTypedData::Handle(zone, library.kernel_data()),
+ library.kernel_offset(), &active_class);
- return metadata_evaluator.EvaluateMetadata(metadata_field.kernel_offset(),
+ return metadata_evaluator.EvaluateMetadata(kernel_offset,
is_annotations_offset);
} else {
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h
index 9b0d8de..ed66e25 100644
--- a/runtime/vm/kernel.h
+++ b/runtime/vm/kernel.h
@@ -196,7 +196,8 @@
void CollectTokenPositionsFor(const Script& script);
ObjectPtr EvaluateStaticConstFieldInitializer(const Field& field);
-ObjectPtr EvaluateMetadata(const Field& metadata_field,
+ObjectPtr EvaluateMetadata(const Library& library,
+ intptr_t kernel_offset,
bool is_annotations_offset);
ObjectPtr BuildParameterDescriptor(const Function& function);
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index e37f325..4dbcfb6 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -694,7 +694,7 @@
// Dart_GetImportsOfScheme('dart-ext').
const auto& native_library = Library::Handle(Library::New(uri_path));
library.AddImport(Namespace::Handle(Namespace::New(
- native_library, Array::null_array(), Array::null_array())));
+ native_library, Array::null_array(), Array::null_array(), library)));
}
}
}
@@ -1122,8 +1122,7 @@
if (FLAG_enable_mirrors && annotation_count > 0) {
ASSERT(annotations_kernel_offset > 0);
- library.AddLibraryMetadata(toplevel_class, TokenPosition::kNoSource,
- annotations_kernel_offset);
+ library.AddMetadata(library, annotations_kernel_offset);
}
if (register_class) {
@@ -1248,7 +1247,7 @@
if ((FLAG_enable_mirrors || has_pragma_annotation) &&
annotation_count > 0) {
- library.AddFieldMetadata(field, TokenPosition::kNoSource, field_offset);
+ library.AddMetadata(field, field_offset);
}
fields_.Add(&field);
}
@@ -1366,7 +1365,7 @@
"import of dart:ffi is not supported in the current Dart runtime");
}
String& prefix = H.DartSymbolPlain(dependency_helper.name_index_);
- ns = Namespace::New(target_library, show_names, hide_names);
+ ns = Namespace::New(target_library, show_names, hide_names, *library);
if ((dependency_helper.flags_ & LibraryDependencyHelper::Export) != 0) {
library->AddExport(ns);
} else {
@@ -1389,8 +1388,7 @@
if (FLAG_enable_mirrors && dependency_helper.annotation_count_ > 0) {
ASSERT(annotations_kernel_offset > 0);
- ns.AddMetadata(toplevel_class, TokenPosition::kNoSource,
- annotations_kernel_offset);
+ library->AddMetadata(ns, annotations_kernel_offset);
}
if (prefix.IsNull()) {
@@ -1511,9 +1509,7 @@
}
if ((FLAG_enable_mirrors || has_pragma_annotation) && annotation_count > 0) {
- library.AddClassMetadata(*out_class, toplevel_class,
- TokenPosition::kNoSource,
- class_offset - correction_offset_);
+ library.AddMetadata(*out_class, class_offset - correction_offset_);
}
// We do not register expression evaluation classes with the VM:
@@ -1625,7 +1621,7 @@
}
if ((FLAG_enable_mirrors || has_pragma_annotation) &&
annotation_count > 0) {
- library.AddFieldMetadata(field, TokenPosition::kNoSource, field_offset);
+ library.AddMetadata(field, field_offset);
}
fields_.Add(&field);
}
@@ -1724,8 +1720,7 @@
if ((FLAG_enable_mirrors || has_pragma_annotation) &&
annotation_count > 0) {
- library.AddFunctionMetadata(function, TokenPosition::kNoSource,
- constructor_offset);
+ library.AddMetadata(function, constructor_offset);
}
}
@@ -2049,8 +2044,7 @@
helper_.SetOffset(procedure_end);
if (annotation_count > 0) {
- library.AddFunctionMetadata(function, TokenPosition::kNoSource,
- procedure_offset);
+ library.AddMetadata(function, procedure_offset);
}
if (has_pragma_annotation) {
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index fe94596..5fa7d0e 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -10453,7 +10453,7 @@
}
} else {
if (is_late() && !has_initializer()) {
- Exceptions::ThrowLateInitializationError(String::Handle(name()));
+ Exceptions::ThrowLateFieldNotInitialized(String::Handle(name()));
UNREACHABLE();
}
#if defined(DART_PRECOMPILED_RUNTIME)
@@ -10467,7 +10467,8 @@
ASSERT(value.IsNull() || value.IsInstance());
if (is_late() && is_final() &&
(instance.GetField(*this) != Object::sentinel().raw())) {
- Exceptions::ThrowLateInitializationError(String::Handle(name()));
+ Exceptions::ThrowLateFieldAssignedDuringInitialization(
+ String::Handle(name()));
UNREACHABLE();
}
instance.SetField(*this, value);
@@ -10481,7 +10482,7 @@
auto& value = Object::Handle();
if (is_late()) {
if (!has_initializer()) {
- Exceptions::ThrowLateInitializationError(String::Handle(name()));
+ Exceptions::ThrowLateFieldNotInitialized(String::Handle(name()));
UNREACHABLE();
}
value = EvaluateInitializer();
@@ -10489,7 +10490,8 @@
return Error::Cast(value).raw();
}
if (is_final() && (StaticValue() != Object::sentinel().raw())) {
- Exceptions::ThrowLateInitializationError(String::Handle(name()));
+ Exceptions::ThrowLateFieldAssignedDuringInitialization(
+ String::Handle(name()));
UNREACHABLE();
}
} else {
@@ -11584,175 +11586,25 @@
StoreNonPointer(&raw_ptr()->load_state_, LibraryLayout::kLoaded);
}
-static StringPtr MakeClassMetaName(Thread* thread,
- Zone* zone,
- const Class& cls) {
- return Symbols::FromConcat(thread, Symbols::At(),
- String::Handle(zone, cls.Name()));
-}
-
-static StringPtr MakeFieldMetaName(Thread* thread,
- Zone* zone,
- const Field& field) {
- const String& cname = String::Handle(
- zone,
- MakeClassMetaName(thread, zone, Class::Handle(zone, field.Origin())));
- GrowableHandlePtrArray<const String> pieces(zone, 3);
- pieces.Add(cname);
- pieces.Add(Symbols::At());
- pieces.Add(String::Handle(zone, field.name()));
- return Symbols::FromConcatAll(thread, pieces);
-}
-
-static StringPtr MakeFunctionMetaName(Thread* thread,
- Zone* zone,
- const Function& func) {
- const String& cname = String::Handle(
- zone,
- MakeClassMetaName(thread, zone, Class::Handle(zone, func.origin())));
- GrowableHandlePtrArray<const String> pieces(zone, 3);
- pieces.Add(cname);
- pieces.Add(Symbols::At());
- pieces.Add(String::Handle(zone, func.name()));
- return Symbols::FromConcatAll(thread, pieces);
-}
-
-static StringPtr MakeTypeParameterMetaName(Thread* thread,
- Zone* zone,
- const TypeParameter& param) {
- const String& cname = String::Handle(
- zone,
- MakeClassMetaName(thread, zone,
- Class::Handle(zone, param.parameterized_class())));
- GrowableHandlePtrArray<const String> pieces(zone, 3);
- pieces.Add(cname);
- pieces.Add(Symbols::At());
- pieces.Add(String::Handle(zone, param.name()));
- return Symbols::FromConcatAll(thread, pieces);
-}
-
-void Library::AddMetadata(const Object& owner,
- const String& name,
- TokenPosition token_pos,
+void Library::AddMetadata(const Object& declaration,
intptr_t kernel_offset) const {
#if defined(DART_PRECOMPILED_RUNTIME)
UNREACHABLE();
#else
- Thread* thread = Thread::Current();
- ASSERT(thread->IsMutatorThread());
- Zone* zone = thread->zone();
- const String& metaname = String::Handle(zone, Symbols::New(thread, name));
- const Field& field =
- Field::Handle(zone, Field::NewTopLevel(metaname,
- false, // is_final
- false, // is_const
- false, // is_late
- owner, token_pos, token_pos));
- field.SetFieldType(Object::dynamic_type());
- field.set_is_reflectable(false);
- field.set_kernel_offset(kernel_offset);
- thread->isolate_group()->RegisterStaticField(field, Array::empty_array());
-
- GrowableObjectArray& metadata =
- GrowableObjectArray::Handle(zone, this->metadata());
- metadata.Add(field, Heap::kOld);
+ MetadataMap map(metadata());
+ map.UpdateOrInsert(declaration, Smi::Handle(Smi::New(kernel_offset)));
+ set_metadata(map.Release());
#endif // defined(DART_PRECOMPILED_RUNTIME)
}
-void Library::AddClassMetadata(const Class& cls,
- const Object& tl_owner,
- TokenPosition token_pos,
- intptr_t kernel_offset) const {
- Thread* thread = Thread::Current();
- Zone* zone = thread->zone();
- // We use the toplevel class as the owner of a class's metadata field because
- // a class's metadata is in scope of the library, not the class.
- AddMetadata(tl_owner,
- String::Handle(zone, MakeClassMetaName(thread, zone, cls)),
- token_pos, kernel_offset);
-}
-
-void Library::AddFieldMetadata(const Field& field,
- TokenPosition token_pos,
- intptr_t kernel_offset) const {
- Thread* thread = Thread::Current();
- Zone* zone = thread->zone();
- const auto& owner = Object::Handle(zone, field.RawOwner());
- const auto& name =
- String::Handle(zone, MakeFieldMetaName(thread, zone, field));
- AddMetadata(owner, name, token_pos, kernel_offset);
-}
-
-void Library::AddFunctionMetadata(const Function& func,
- TokenPosition token_pos,
- intptr_t kernel_offset) const {
- Thread* thread = Thread::Current();
- Zone* zone = thread->zone();
- const auto& owner = Object::Handle(zone, func.RawOwner());
- const auto& name =
- String::Handle(zone, MakeFunctionMetaName(thread, zone, func));
- AddMetadata(owner, name, token_pos, kernel_offset);
-}
-
-void Library::AddTypeParameterMetadata(const TypeParameter& param,
- TokenPosition token_pos) const {
- Thread* thread = Thread::Current();
- Zone* zone = thread->zone();
- const auto& owner = Class::Handle(zone, param.parameterized_class());
- const auto& name =
- String::Handle(zone, MakeTypeParameterMetaName(thread, zone, param));
- AddMetadata(owner, name, token_pos, 0);
-}
-
-void Library::AddLibraryMetadata(const Object& tl_owner,
- TokenPosition token_pos,
- intptr_t kernel_offset) const {
- AddMetadata(tl_owner, Symbols::TopLevel(), token_pos, kernel_offset);
-}
-
-StringPtr Library::MakeMetadataName(const Object& obj) const {
- Thread* thread = Thread::Current();
- Zone* zone = thread->zone();
- if (obj.IsClass()) {
- return MakeClassMetaName(thread, zone, Class::Cast(obj));
- } else if (obj.IsField()) {
- return MakeFieldMetaName(thread, zone, Field::Cast(obj));
- } else if (obj.IsFunction()) {
- return MakeFunctionMetaName(thread, zone, Function::Cast(obj));
- } else if (obj.IsLibrary()) {
- return Symbols::TopLevel().raw();
- } else if (obj.IsTypeParameter()) {
- return MakeTypeParameterMetaName(thread, zone, TypeParameter::Cast(obj));
- }
- UNIMPLEMENTED();
- return String::null();
-}
-
-FieldPtr Library::GetMetadataField(const String& metaname) const {
- const GrowableObjectArray& metadata =
- GrowableObjectArray::Handle(this->metadata());
- Field& entry = Field::Handle();
- String& entryname = String::Handle();
- intptr_t num_entries = metadata.Length();
- for (intptr_t i = 0; i < num_entries; i++) {
- entry ^= metadata.At(i);
- entryname = entry.name();
- if (entryname.Equals(metaname)) {
- return entry.raw();
- }
- }
- return Field::null();
-}
-
-ObjectPtr Library::GetMetadata(const Object& obj) const {
+ObjectPtr Library::GetMetadata(const Object& declaration) const {
#if defined(DART_PRECOMPILED_RUNTIME)
return Object::empty_array().raw();
#else
- if (!obj.IsClass() && !obj.IsField() && !obj.IsFunction() &&
- !obj.IsLibrary() && !obj.IsTypeParameter()) {
- UNREACHABLE();
- }
- if (obj.IsLibrary()) {
+ RELEASE_ASSERT(declaration.IsClass() || declaration.IsField() ||
+ declaration.IsFunction() || declaration.IsLibrary() ||
+ declaration.IsTypeParameter() || declaration.IsNamespace());
+ if (declaration.IsLibrary()) {
// Ensure top-level class is loaded as it may contain annotations of
// a library.
const auto& cls = Class::Handle(toplevel_class());
@@ -11760,31 +11612,36 @@
cls.EnsureDeclarationLoaded();
}
}
- const String& metaname = String::Handle(MakeMetadataName(obj));
- Field& field = Field::Handle(GetMetadataField(metaname));
- if (field.IsNull()) {
+ Object& value = Object::Handle();
+ {
+ MetadataMap map(metadata());
+ value = map.GetOrNull(declaration);
+ set_metadata(map.Release());
+ }
+ if (value.IsNull()) {
// There is no metadata for this object.
return Object::empty_array().raw();
}
- Object& metadata = Object::Handle(field.StaticValue());
- if (metadata.raw() == Object::empty_array().raw()) {
- ASSERT(field.kernel_offset() > 0);
- metadata = kernel::EvaluateMetadata(
- field, /* is_annotations_offset = */ obj.IsLibrary());
- if (metadata.IsArray() || metadata.IsNull()) {
- ASSERT(metadata.raw() != Object::empty_array().raw());
- if (!Compiler::IsBackgroundCompilation()) {
- field.SetStaticValue(
- metadata.IsNull() ? Object::null_array() : Array::Cast(metadata),
- true);
- }
+ if (!value.IsSmi()) {
+ // Metadata is already evaluated.
+ ASSERT(value.IsArray());
+ return value.raw();
+ }
+ intptr_t kernel_offset = Smi::Cast(value).Value();
+ ASSERT(kernel_offset > 0);
+ value = kernel::EvaluateMetadata(
+ *this, kernel_offset,
+ /* is_annotations_offset = */ declaration.IsLibrary() ||
+ declaration.IsNamespace());
+ if (value.IsArray() || value.IsNull()) {
+ ASSERT(value.raw() != Object::empty_array().raw());
+ if (!Compiler::IsBackgroundCompilation()) {
+ MetadataMap map(metadata());
+ map.UpdateOrInsert(declaration, value);
+ set_metadata(map.Release());
}
}
- if (metadata.IsNull()) {
- // Metadata field exists in order to reference extended metadata.
- return Object::empty_array().raw();
- }
- return metadata.raw();
+ return value.raw();
#endif // defined(DART_PRECOMPILED_RUNTIME)
}
@@ -12331,7 +12188,7 @@
import = ImportAt(i);
obj = import.Lookup(name);
if (!obj.IsNull()) {
- import_lib = import.library();
+ import_lib = import.target();
import_lib_url = import_lib.url();
if (found_obj.raw() != obj.raw()) {
if (first_import_lib_url.IsNull() ||
@@ -12455,7 +12312,7 @@
raw_ptr()->set_dependencies(deps.raw());
}
-void Library::set_metadata(const GrowableObjectArray& value) const {
+void Library::set_metadata(const Array& value) const {
raw_ptr()->set_metadata(value.raw());
}
@@ -12464,7 +12321,7 @@
if (import.IsNull()) {
return Library::null();
}
- return import.library();
+ return import.target();
}
NamespacePtr Library::ImportAt(intptr_t index) const {
@@ -12486,7 +12343,7 @@
for (int i = 0; i < imports.Length(); ++i) {
ns = Namespace::RawCast(imports.At(i));
if (ns.IsNull()) continue;
- lib = ns.library();
+ lib = ns.target();
url = lib.url();
if (url.StartsWith(Symbols::DartExtensionScheme())) {
native_import_count++;
@@ -12497,7 +12354,7 @@
for (int i = 0, j = 0; i < imports.Length(); ++i) {
ns = Namespace::RawCast(imports.At(i));
if (ns.IsNull()) continue;
- lib = ns.library();
+ lib = ns.target();
url = lib.url();
if (url.StartsWith(Symbols::DartExtensionScheme())) {
new_imports.SetAt(j++, ns);
@@ -12615,10 +12472,11 @@
result.raw_ptr()->set_resolved_names(Array::null());
result.raw_ptr()->set_exported_names(Array::null());
result.raw_ptr()->set_dictionary(Object::empty_array().raw());
- GrowableObjectArray& list = GrowableObjectArray::Handle(zone);
- list = GrowableObjectArray::New(4, Heap::kOld);
- result.raw_ptr()->set_metadata(list.raw());
+ Array& array = Array::Handle(zone);
+ array = HashTables::New<MetadataMap>(4, Heap::kOld);
+ result.raw_ptr()->set_metadata(array.raw());
result.raw_ptr()->set_toplevel_class(Class::null());
+ GrowableObjectArray& list = GrowableObjectArray::Handle(zone);
list = GrowableObjectArray::New(Object::empty_array(), Heap::kOld);
result.raw_ptr()->set_used_scripts(list.raw());
result.raw_ptr()->set_imports(Object::empty_array().raw());
@@ -12648,9 +12506,9 @@
if (import_core_lib) {
const Library& core_lib = Library::Handle(zone, Library::CoreLibrary());
ASSERT(!core_lib.IsNull());
- const Namespace& ns = Namespace::Handle(
- zone,
- Namespace::New(core_lib, Object::null_array(), Object::null_array()));
+ const Namespace& ns =
+ Namespace::Handle(zone, Namespace::New(core_lib, Object::null_array(),
+ Object::null_array(), result));
result.AddImport(ns);
}
return result.raw();
@@ -13275,7 +13133,7 @@
const Array& imports = Array::Handle(this->imports());
Namespace& import = Namespace::Handle();
import ^= imports.At(index);
- return import.library();
+ return import.target();
}
return Library::null();
}
@@ -13345,59 +13203,8 @@
return prefix.ToCString();
}
-void Namespace::set_metadata_field(const Field& value) const {
- raw_ptr()->set_metadata_field(value.raw());
-}
-
-void Namespace::AddMetadata(const Object& owner,
- TokenPosition token_pos,
- intptr_t kernel_offset) {
- auto thread = Thread::Current();
- auto zone = thread->zone();
- auto isolate_group = thread->isolate_group();
- ASSERT(Field::Handle(zone, metadata_field()).IsNull());
- Field& field =
- Field::Handle(zone, Field::NewTopLevel(Symbols::TopLevel(),
- false, // is_final
- false, // is_const
- false, // is_late
- owner, token_pos, token_pos));
- field.set_is_reflectable(false);
- field.SetFieldType(Object::dynamic_type());
- field.set_kernel_offset(kernel_offset);
- isolate_group->RegisterStaticField(field, Array::empty_array());
- set_metadata_field(field);
-}
-
-ObjectPtr Namespace::GetMetadata() const {
-#if defined(DART_PRECOMPILED_RUNTIME)
- return Object::empty_array().raw();
-#else
- Field& field = Field::Handle(metadata_field());
- if (field.IsNull()) {
- // There is no metadata for this object.
- return Object::empty_array().raw();
- }
- Object& metadata = Object::Handle();
- metadata = field.StaticValue();
- if (field.StaticValue() == Object::empty_array().raw()) {
- if (field.kernel_offset() > 0) {
- metadata =
- kernel::EvaluateMetadata(field, /* is_annotations_offset = */ true);
- } else {
- UNREACHABLE();
- }
- if (metadata.IsArray()) {
- ASSERT(Array::Cast(metadata).raw() != Object::empty_array().raw());
- field.SetStaticValue(Array::Cast(metadata), true);
- }
- }
- return metadata.raw();
-#endif // defined(DART_PRECOMPILED_RUNTIME)
-}
-
const char* Namespace::ToCString() const {
- const Library& lib = Library::Handle(library());
+ const Library& lib = Library::Handle(target());
return OS::SCreate(Thread::Current()->zone(), "Namespace for library '%s'",
lib.ToCString());
}
@@ -13451,7 +13258,7 @@
ObjectPtr Namespace::Lookup(const String& name,
ZoneGrowableArray<intptr_t>* trail) const {
Zone* zone = Thread::Current()->zone();
- const Library& lib = Library::Handle(zone, library());
+ const Library& lib = Library::Handle(zone, target());
if (trail != NULL) {
// Look for cycle in reexport graph.
@@ -13512,15 +13319,17 @@
return static_cast<NamespacePtr>(raw);
}
-NamespacePtr Namespace::New(const Library& library,
+NamespacePtr Namespace::New(const Library& target,
const Array& show_names,
- const Array& hide_names) {
+ const Array& hide_names,
+ const Library& owner) {
ASSERT(show_names.IsNull() || (show_names.Length() > 0));
ASSERT(hide_names.IsNull() || (hide_names.Length() > 0));
const Namespace& result = Namespace::Handle(Namespace::New());
- result.raw_ptr()->set_library(library.raw());
+ result.raw_ptr()->set_target(target.raw());
result.raw_ptr()->set_show_names(show_names.raw());
result.raw_ptr()->set_hide_names(hide_names.raw());
+ result.raw_ptr()->set_owner(owner.raw());
return result.raw();
}
@@ -25066,9 +24875,13 @@
const Library& lib = Library::Handle(cls.library());
switch (kind()) {
case FunctionLayout::kRegularFunction:
- case FunctionLayout::kImplicitClosureFunction:
return dart::VerifyEntryPoint(lib, *this, *this,
{EntryPointPragma::kGetterOnly});
+ case FunctionLayout::kImplicitClosureFunction: {
+ const Function& parent = Function::Handle(parent_function());
+ return dart::VerifyEntryPoint(lib, parent, parent,
+ {EntryPointPragma::kGetterOnly});
+ }
default:
UNREACHABLE();
}
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 59377eb..ac00550 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -4738,22 +4738,8 @@
void AddExport(const Namespace& ns) const;
- void AddClassMetadata(const Class& cls,
- const Object& tl_owner,
- TokenPosition token_pos,
- intptr_t kernel_offset) const;
- void AddFieldMetadata(const Field& field,
- TokenPosition token_pos,
- intptr_t kernel_offset) const;
- void AddFunctionMetadata(const Function& func,
- TokenPosition token_pos,
- intptr_t kernel_offset) const;
- void AddLibraryMetadata(const Object& tl_owner,
- TokenPosition token_pos,
- intptr_t kernel_offset) const;
- void AddTypeParameterMetadata(const TypeParameter& param,
- TokenPosition token_pos) const;
- ObjectPtr GetMetadata(const Object& obj) const;
+ void AddMetadata(const Object& declaration, intptr_t kernel_offset) const;
+ ObjectPtr GetMetadata(const Object& declaration) const;
// Tries to finds a @pragma annotation on [object].
//
@@ -4978,8 +4964,8 @@
void set_flags(uint8_t flags) const;
bool HasExports() const;
ArrayPtr loaded_scripts() const { return raw_ptr()->loaded_scripts(); }
- GrowableObjectArrayPtr metadata() const { return raw_ptr()->metadata(); }
- void set_metadata(const GrowableObjectArray& value) const;
+ ArrayPtr metadata() const { return raw_ptr()->metadata(); }
+ void set_metadata(const Array& value) const;
ArrayPtr dictionary() const { return raw_ptr()->dictionary(); }
void InitClassDictionary() const;
@@ -5007,13 +4993,6 @@
void AllocatePrivateKey() const;
- StringPtr MakeMetadataName(const Object& obj) const;
- FieldPtr GetMetadataField(const String& metaname) const;
- void AddMetadata(const Object& owner,
- const String& name,
- TokenPosition token_pos,
- intptr_t kernel_offset) const;
-
FINAL_HEAP_OBJECT_IMPLEMENTATION(Library, Object);
friend class Bootstrap;
@@ -5031,14 +5010,10 @@
// the show/hide combinators.
class Namespace : public Object {
public:
- LibraryPtr library() const { return raw_ptr()->library(); }
+ LibraryPtr target() const { return raw_ptr()->target(); }
ArrayPtr show_names() const { return raw_ptr()->show_names(); }
ArrayPtr hide_names() const { return raw_ptr()->hide_names(); }
-
- void AddMetadata(const Object& owner,
- TokenPosition token_pos,
- intptr_t kernel_offset = 0);
- ObjectPtr GetMetadata() const;
+ LibraryPtr owner() const { return raw_ptr()->owner(); }
static intptr_t InstanceSize() {
return RoundedAllocationSize(sizeof(NamespaceLayout));
@@ -5050,14 +5025,12 @@
static NamespacePtr New(const Library& library,
const Array& show_names,
- const Array& hide_names);
+ const Array& hide_names,
+ const Library& owner);
private:
static NamespacePtr New();
- FieldPtr metadata_field() const { return raw_ptr()->metadata_field(); }
- void set_metadata_field(const Field& value) const;
-
FINAL_HEAP_OBJECT_IMPLEMENTATION(Namespace, Object);
friend class Class;
friend class Precompiler;
diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
index 08bfa23..1dfe634 100644
--- a/runtime/vm/object_service.cc
+++ b/runtime/vm/object_service.cc
@@ -519,7 +519,7 @@
jsdep.AddProperty("isDeferred", false);
jsdep.AddProperty("isExport", false);
jsdep.AddProperty("isImport", true);
- target = ns.library();
+ target = ns.target();
jsdep.AddProperty("target", target);
}
@@ -533,7 +533,7 @@
jsdep.AddProperty("isDeferred", false);
jsdep.AddProperty("isExport", true);
jsdep.AddProperty("isImport", false);
- target = ns.library();
+ target = ns.target();
jsdep.AddProperty("target", target);
}
@@ -559,7 +559,7 @@
prefix_name = prefix.name();
ASSERT(!prefix_name.IsNull());
jsdep.AddProperty("prefix", prefix_name.ToCString());
- target = ns.library();
+ target = ns.target();
jsdep.AddProperty("target", target);
}
}
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 0f9c283..f5ff206 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1409,8 +1409,7 @@
POINTER_FIELD(StringPtr, url)
POINTER_FIELD(StringPtr, private_key)
POINTER_FIELD(ArrayPtr, dictionary) // Top-level names in this library.
- POINTER_FIELD(GrowableObjectArrayPtr,
- metadata) // Metadata on classes, methods etc.
+ POINTER_FIELD(ArrayPtr, metadata) // Metadata on classes, methods etc.
POINTER_FIELD(ClassPtr,
toplevel_class) // Class containing top-level elements.
POINTER_FIELD(GrowableObjectArrayPtr, used_scripts)
@@ -1462,14 +1461,12 @@
class NamespaceLayout : public ObjectLayout {
RAW_HEAP_OBJECT_IMPLEMENTATION(Namespace);
- VISIT_FROM(ObjectPtr, library)
- POINTER_FIELD(LibraryPtr, library) // library with name dictionary.
+ VISIT_FROM(ObjectPtr, target)
+ POINTER_FIELD(LibraryPtr, target) // library with name dictionary.
POINTER_FIELD(ArrayPtr, show_names) // list of names that are exported.
POINTER_FIELD(ArrayPtr, hide_names) // list of names that are hidden.
- POINTER_FIELD(FieldPtr,
- metadata_field) // remembers the token pos of metadata if any,
- // and the metadata values if computed.
- VISIT_TO(ObjectPtr, metadata_field)
+ POINTER_FIELD(LibraryPtr, owner)
+ VISIT_TO(ObjectPtr, owner)
ObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
};
diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc
index cf5625b..103611e 100644
--- a/runtime/vm/raw_object_fields.cc
+++ b/runtime/vm/raw_object_fields.cc
@@ -75,10 +75,10 @@
F(Library, resolved_names_) \
F(Library, exported_names_) \
F(Library, loaded_scripts_) \
- F(Namespace, library_) \
+ F(Namespace, target_) \
F(Namespace, show_names_) \
F(Namespace, hide_names_) \
- F(Namespace, metadata_field_) \
+ F(Namespace, owner_) \
F(KernelProgramInfo, string_offsets_) \
F(KernelProgramInfo, string_data_) \
F(KernelProgramInfo, canonical_names_) \
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index baf79d3..0a13543 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -3161,9 +3161,15 @@
arguments.SetReturn(result);
}
-DEFINE_RUNTIME_ENTRY(LateInitializationError, 1) {
+DEFINE_RUNTIME_ENTRY(LateFieldAssignedDuringInitializationError, 1) {
const Field& field = Field::CheckedHandle(zone, arguments.ArgAt(0));
- Exceptions::ThrowLateInitializationError(String::Handle(field.name()));
+ Exceptions::ThrowLateFieldAssignedDuringInitialization(
+ String::Handle(field.name()));
+}
+
+DEFINE_RUNTIME_ENTRY(LateFieldNotInitializedError, 1) {
+ const Field& field = Field::CheckedHandle(zone, arguments.ArgAt(0));
+ Exceptions::ThrowLateFieldNotInitialized(String::Handle(field.name()));
}
DEFINE_RUNTIME_ENTRY(NotLoaded, 0) {
diff --git a/runtime/vm/runtime_entry_list.h b/runtime/vm/runtime_entry_list.h
index 40f5bd8..34ac296 100644
--- a/runtime/vm/runtime_entry_list.h
+++ b/runtime/vm/runtime_entry_list.h
@@ -50,7 +50,8 @@
V(UpdateFieldCid) \
V(InitInstanceField) \
V(InitStaticField) \
- V(LateInitializationError) \
+ V(LateFieldAssignedDuringInitializationError) \
+ V(LateFieldNotInitializedError) \
V(CompileFunction) \
V(SwitchableCallMiss) \
V(NotLoaded)
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 4ea837a..1e408f1 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -64,7 +64,6 @@
V(Current, "current") \
V(CurrentContextVar, ":current_context_var") \
V(CyclicInitializationError, "CyclicInitializationError") \
- V(LateInitializationError, "_LateInitializationError") \
V(DartAsync, "dart:async") \
V(DartCollection, "dart:collection") \
V(DartCore, "dart:core") \
@@ -94,6 +93,8 @@
V(Default, "Default") \
V(DefaultLabel, ":L") \
V(DotCreate, "._create") \
+ V(DotFieldNI, ".fieldNI") \
+ V(DotFieldADI, ".fieldADI") \
V(DotRange, ".range") \
V(DotUnder, "._") \
V(DotValue, ".value") \
@@ -196,6 +197,7 @@
V(IteratorParameter, ":iterator") \
V(KernelProgramInfo, "KernelProgramInfo") \
V(LanguageError, "LanguageError") \
+ V(LateError, "LateError") \
V(LeftShiftOperator, "<<") \
V(Length, "length") \
V(LessEqualOperator, "<=") \
diff --git a/sdk/lib/_internal/vm/lib/errors_patch.dart b/sdk/lib/_internal/vm/lib/errors_patch.dart
index 75776ec..a33b803 100644
--- a/sdk/lib/_internal/vm/lib/errors_patch.dart
+++ b/sdk/lib/_internal/vm/lib/errors_patch.dart
@@ -44,8 +44,8 @@
static _doThrowNew(int assertionStart, int assertionEnd, Object? message)
native "AssertionError_throwNew";
- static _doThrowNewSource(String failedAssertion, int line, int column, Object? message)
- native "AssertionError_throwNewSource";
+ static _doThrowNewSource(String failedAssertion, int line, int column,
+ Object? message) native "AssertionError_throwNewSource";
@pragma("vm:entry-point", "call")
static _evaluateAssertion(condition) {
@@ -494,18 +494,3 @@
toString() => "Error: field '$_name' is already initialized.";
}
-
-class _LateInitializationError extends Error
- implements LateInitializationError {
- @pragma("vm:entry-point")
- _LateInitializationError(this._name);
-
- @pragma("vm:entry-point")
- static void _throwNew(String name) {
- throw _LateInitializationError(name);
- }
-
- String toString() => "LateInitializationError: $_name";
-
- final String _name;
-}
diff --git a/sdk/lib/_internal/vm/lib/internal_patch.dart b/sdk/lib/_internal/vm/lib/internal_patch.dart
index 1566701..24f9461 100644
--- a/sdk/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk/lib/_internal/vm/lib/internal_patch.dart
@@ -195,3 +195,21 @@
@patch
bool isSentinel(dynamic value) => throw UnsupportedError('isSentinel');
+
+@patch
+class LateError {
+ @pragma("vm:entry-point")
+ static _throwFieldAlreadyInitialized(String fieldName) {
+ throw new LateError.fieldAI(fieldName);
+ }
+
+ @pragma("vm:entry-point")
+ static _throwLocalNotInitialized(String localName) {
+ throw new LateError.localNI(localName);
+ }
+
+ @pragma("vm:entry-point")
+ static _throwLocalAlreadyInitialized(String localName) {
+ throw new LateError.localAI(localName);
+ }
+}
diff --git a/sdk/lib/core/uri.dart b/sdk/lib/core/uri.dart
index 998cb83..143ad63 100644
--- a/sdk/lib/core/uri.dart
+++ b/sdk/lib/core/uri.dart
@@ -609,7 +609,8 @@
/// Returns a hash code computed as `toString().hashCode`.
///
- /// This guarantees that URIs with the same normalized
+ /// This guarantees that URIs with the same normalized string representation
+ /// have the same hash code.
int get hashCode;
/// A URI is equal to another URI with the same normalized representation.
diff --git a/sdk/lib/internal/errors.dart b/sdk/lib/internal/errors.dart
index 5f8ca81..3fe6e40 100644
--- a/sdk/lib/internal/errors.dart
+++ b/sdk/lib/internal/errors.dart
@@ -12,10 +12,12 @@
// The constructor names have been deliberately shortened to reduce the size
// of unminified code as used by DDC.
+ @pragma("vm:entry-point")
LateError.fieldADI(String fieldName)
: _message =
"Field '$fieldName' has been assigned during initialization.";
+ @pragma("vm:entry-point")
LateError.fieldNI(String fieldName)
: _message = "Field '${fieldName}' has not been initialized.";
diff --git a/tests/language/language.status b/tests/language/language.status
index b8da9a3..5739de1 100644
--- a/tests/language/language.status
+++ b/tests/language/language.status
@@ -2,6 +2,9 @@
# 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.
+[ $builder_tag == obfuscated ]
+nnbd/syntax/late_modifier_runtime_error_test: SkipByDesign # Names are obfuscated in error messages
+
[ $compiler != dart2analyzer ]
switch/case_warn_test: Skip # Analyzer only, see language_analyzer2.status
diff --git a/tests/language/nnbd/syntax/late_modifier_runtime_error_test.dart b/tests/language/nnbd/syntax/late_modifier_runtime_error_test.dart
new file mode 100644
index 0000000..851d225
--- /dev/null
+++ b/tests/language/nnbd/syntax/late_modifier_runtime_error_test.dart
@@ -0,0 +1,112 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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:expect/expect.dart';
+
+class A {
+ static late int sf1;
+ static late final int sf2;
+ static late final int sf3 = recursiveInitSf3();
+
+ static bool doRecursiveInitSf3 = true;
+ static int recursiveInitSf3() {
+ if (doRecursiveInitSf3) {
+ doRecursiveInitSf3 = false;
+ return sf3; // Trigger initialization recursively.
+ }
+ return 3;
+ }
+
+ late int f1;
+ late final int f2;
+ late final int f3 = recursiveInitF3();
+
+ bool doRecursiveInitF3 = true;
+ int recursiveInitF3() {
+ if (doRecursiveInitF3) {
+ doRecursiveInitF3 = false;
+ return f3; // Trigger initialization recursively.
+ }
+ return 3;
+ }
+}
+
+bool isValidError(error, String message) {
+ if (error is LateInitializationError) {
+ Expect.equals('LateInitializationError: $message', error.toString());
+ return true;
+ }
+ return false;
+}
+
+main() {
+ // Static fields.
+
+ Expect.throws(() => A.sf1,
+ (e) => isValidError(e, "Field 'sf1' has not been initialized."));
+ Expect.throws(() => A.sf2,
+ (e) => isValidError(e, "Field 'sf2' has not been initialized."));
+ A.sf2 = 42;
+ Expect.throws(() {
+ A.sf2 = 2;
+ }, (e) => isValidError(e, "Field 'sf2' has already been initialized."));
+ Expect.throws(
+ () => A.sf3,
+ (e) => isValidError(
+ e, "Field 'sf3' has been assigned during initialization."));
+
+ // Instance fields.
+
+ A obj = A();
+ Expect.throws(() => obj.f1,
+ (e) => isValidError(e, "Field 'f1' has not been initialized."));
+ Expect.throws(() => obj.f2,
+ (e) => isValidError(e, "Field 'f2' has not been initialized."));
+ obj.f2 = 42;
+ Expect.throws(() {
+ obj.f2 = 2;
+ }, (e) => isValidError(e, "Field 'f2' has already been initialized."));
+ Expect.throws(
+ () => obj.f3,
+ (e) => isValidError(
+ e, "Field 'f3' has been assigned during initialization."));
+
+ // Local variables.
+ late int local1;
+ late final int local2;
+
+ late int Function() recursiveInitLocal3;
+ late final int local3 = recursiveInitLocal3();
+
+ bool doRecursiveInitLocal3 = true;
+ recursiveInitLocal3 = () {
+ if (doRecursiveInitLocal3) {
+ doRecursiveInitLocal3 = false;
+ return local3; // Trigger initialization recursively.
+ }
+ return 3;
+ };
+
+ // Avoid compile-time error "Late variable 'local1' without initializer is
+ // definitely unassigned."
+ if (int.parse('1') == 2) {
+ local1 = -1;
+ }
+
+ Expect.throws(() => local1,
+ (e) => isValidError(e, "Local 'local1' has not been initialized."));
+ Expect.throws(() => local2,
+ (e) => isValidError(e, "Local 'local2' has not been initialized."));
+ // Assignment is conditional to avoid compile-time error "Late final variable
+ // 'local2' definitely assigned."
+ if (int.parse('1') == 1) {
+ local2 = 42;
+ }
+ Expect.throws(() {
+ local2 = 2;
+ }, (e) => isValidError(e, "Local 'local2' has already been initialized."));
+ // Uncomment after https://github.com/dart-lang/sdk/issues/44372 is fixed.
+ // Expect.throws(() => local3,
+ // (e) => isValidError(e, "Local 'local3' has already been initialized."));
+}
diff --git a/tools/VERSION b/tools/VERSION
index d8d0e65..1fe6ee9 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 108
+PRERELEASE 109
PRERELEASE_PATCH 0
\ No newline at end of file