Version 2.15.0-37.0.dev
Merge commit 'f4ca1ed08b05ef3d1af72ecf28b3a7e41ce20b86' into 'dev'
diff --git a/pkg/compiler/pubspec.yaml b/pkg/compiler/pubspec.yaml
index dbdaec6..6e63cb6 100644
--- a/pkg/compiler/pubspec.yaml
+++ b/pkg/compiler/pubspec.yaml
@@ -12,7 +12,8 @@
# Published packages - repo version ensured via dependency_overrides
collection: any
crypto: any
- dart2js_info: any
+ dart2js_info:
+ path: ../dart2js_info
front_end:
path: ../front_end
kernel:
@@ -56,8 +57,14 @@
dependency_overrides:
# Packages with source in the SDK
+ _fe_analyzer_shared:
+ path: ../_fe_analyzer_shared
+ analyzer:
+ path: ../analyzer
front_end:
path: ../front_end
+ js:
+ path: ../js
kernel:
path: ../kernel
meta:
@@ -91,9 +98,7 @@
path:
path: ../../third_party/pkg/path
protobuf:
- path: ../../third_party/pkg/protobuf
- quiver:
- path: ../../third_party/pkg/quiver
+ path: ../../third_party/pkg/protobuf/protobuf
shelf:
path: ../../third_party/pkg/shelf
shelf_static:
@@ -106,6 +111,10 @@
path: ../../third_party/pkg/stream_channel
string_scanner:
path: ../../third_party/pkg/string_scanner
+ test:
+ path: ../../third_party/pkg/test/pkgs/test
+ test_api:
+ path: ../../third_party/pkg/test/pkgs/test_api
typed_data:
path: ../../third_party/pkg/typed_data
yaml:
diff --git a/pkg/front_end/test/utils/io_utils.dart b/pkg/front_end/test/utils/io_utils.dart
index 6c22a65..8851f27 100644
--- a/pkg/front_end/test/utils/io_utils.dart
+++ b/pkg/front_end/test/utils/io_utils.dart
@@ -4,11 +4,28 @@
import 'dart:io' show Directory, File, Platform, Process, ProcessResult;
+import 'package:_fe_analyzer_shared/src/util/filenames.dart';
+
String computeRepoDir() {
+ Uri uri;
+ if (Platform.script.hasAbsolutePath) {
+ uri = Platform.script;
+ } else if (Platform.packageConfig != null) {
+ String packageConfig = Platform.packageConfig!;
+ final String prefix = "file://";
+ if (packageConfig.startsWith(prefix)) {
+ uri = Uri.parse(packageConfig);
+ } else {
+ uri = Uri.base.resolve(nativeToUriPath(packageConfig));
+ }
+ } else {
+ throw "Can't obtain the path to the SDK either via "
+ "Platform.script or Platform.packageConfig";
+ }
+ String path = new File.fromUri(uri).parent.path;
ProcessResult result = Process.runSync(
'git', ['rev-parse', '--show-toplevel'],
- runInShell: true,
- workingDirectory: new File.fromUri(Platform.script).parent.path);
+ runInShell: true, workingDirectory: path);
if (result.exitCode != 0) {
throw "Git returned non-zero error code (${result.exitCode}):\n\n"
"stdout: ${result.stdout}\n\n"
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 333b6e6..1a6db80 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -231,6 +231,7 @@
thread()->isolate_group()->program_lock());
finder.ScanImplementorClasses(dst_klass);
}
+ if (cids.is_empty()) return;
// Sort all collected cids.
intptr_t* cids_array = cids.data();
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index cfb05b7..cf52ef4 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -291,7 +291,7 @@
if (!obj->IsNewObject() || visiting_old_object_->untag()->IsRemembered()) {
return;
}
- visiting_old_object_->untag()->SetRememberedBitUnsynchronized();
+ visiting_old_object_->untag()->SetRememberedBit();
thread_->StoreBufferAddObjectGC(visiting_old_object_);
}
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 5680c3a..f99afbe 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -317,14 +317,10 @@
ASSERT(IsOldObject());
return !tags_.Read<OldAndNotRememberedBit>();
}
- bool TryAcquireRememberedBit() {
- ASSERT(!IsCardRemembered());
- return tags_.TryClear<OldAndNotRememberedBit>();
- }
- void SetRememberedBitUnsynchronized() {
+ void SetRememberedBit() {
ASSERT(!IsRemembered());
ASSERT(!IsCardRemembered());
- tags_.UpdateUnsynchronized<OldAndNotRememberedBit>(false);
+ tags_.UpdateBool<OldAndNotRememberedBit>(false);
}
void ClearRememberedBit() {
ASSERT(IsOldObject());
@@ -332,10 +328,10 @@
}
DART_FORCE_INLINE
- void EnsureInRememberedSet(Thread* thread) {
- if (TryAcquireRememberedBit()) {
- thread->StoreBufferAddObject(ObjectPtr(this));
- }
+ void AddToRememberedSet(Thread* thread) {
+ ASSERT(!this->IsRemembered());
+ this->SetRememberedBit();
+ thread->StoreBufferAddObject(ObjectPtr(this));
}
bool IsCardRemembered() const { return tags_.Read<CardRememberedBit>(); }
@@ -669,7 +665,7 @@
if (value->IsNewObject()) {
// Generational barrier: record when a store creates an
// old-and-not-remembered -> new reference.
- EnsureInRememberedSet(thread);
+ AddToRememberedSet(thread);
} else {
// Incremental barrier: record when a store creates an
// old -> old-and-not-marked reference.
@@ -699,9 +695,11 @@
if (value->IsNewObject()) {
// Generational barrier: record when a store creates an
// old-and-not-remembered -> new reference.
+ ASSERT(!this->IsRemembered());
if (this->IsCardRemembered()) {
RememberCard(addr);
- } else if (this->TryAcquireRememberedBit()) {
+ } else {
+ this->SetRememberedBit();
thread->StoreBufferAddObject(static_cast<ObjectPtr>(this));
}
} else {
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index d6c3ad6..a545c0e 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -483,7 +483,7 @@
}
if (add_to_remembered_set) {
- object->untag()->EnsureInRememberedSet(thread);
+ object->untag()->AddToRememberedSet(thread);
}
// For incremental write barrier elimination, we need to ensure that the
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc
index a9e319e..09a3b25 100644
--- a/runtime/vm/thread.cc
+++ b/runtime/vm/thread.cc
@@ -688,7 +688,9 @@
switch (op_) {
case Thread::RestoreWriteBarrierInvariantOp::kAddToRememberedSet:
- obj->untag()->EnsureInRememberedSet(current_);
+ if (!obj->untag()->IsRemembered()) {
+ obj->untag()->AddToRememberedSet(current_);
+ }
if (current_->is_marking()) {
current_->DeferredMarkingStackAddObject(obj);
}
diff --git a/tools/VERSION b/tools/VERSION
index f951325..445bc0f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 36
+PRERELEASE 37
PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 9e2fefe..5d0abed 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -3473,6 +3473,13 @@
},
"steps": [
{
+ "name": "validate pkg/ pubspec files",
+ "script": "tools/sdks/dart-sdk/bin/dart",
+ "arguments": [
+ "tools/package_deps/bin/package_deps.dart"
+ ]
+ },
+ {
"name": "validate .dart_tool/package_config.json",
"script": "tools/sdks/dart-sdk/bin/dart",
"arguments": [