Version 2.14.0-36.0.dev
Merge commit 'a9159afa68fa1cbe1861bdf36f2b9c1e0150a268' into 'dev'
diff --git a/runtime/vm/compiler/relocation_test.cc b/runtime/vm/compiler/relocation_test.cc
index 9e101cb..3da5aa7 100644
--- a/runtime/vm/compiler/relocation_test.cc
+++ b/runtime/vm/compiler/relocation_test.cc
@@ -67,19 +67,27 @@
EmitCodeFor(code, [&](compiler::Assembler* assembler) {
#if defined(TARGET_ARCH_ARM64)
- __ SetupDartSP();
- __ EnterFrame(0);
+ // TODO(kustermann): Remove conservative approximation in relocator and
+ // make tests precise.
+ __ mov(R0, R0);
+ __ mov(R0, R0);
+ __ mov(R0, R0);
+ SPILLS_RETURN_ADDRESS_FROM_LR_TO_REGISTER(
+ __ stp(LR, R1,
+ compiler::Address(CSP, -2 * kWordSize,
+ compiler::Address::PairPreIndex)));
#elif defined(TARGET_ARCH_ARM)
- SPILLS_RETURN_ADDRESS_FROM_LR_TO_REGISTER(
- __ EnterFrame((1 << LR), 0));
+ SPILLS_RETURN_ADDRESS_FROM_LR_TO_REGISTER(__ PushList((1 << LR)));
#endif
__ GenerateUnRelocatedPcRelativeCall();
AddPcRelativeCallTargetAt(__ CodeSize(), code, target);
#if defined(TARGET_ARCH_ARM64)
- __ LeaveFrame();
+ RESTORES_RETURN_ADDRESS_FROM_REGISTER_TO_LR(
+ __ ldp(LR, R1,
+ compiler::Address(CSP, 2 * kWordSize,
+ compiler::Address::PairPostIndex)));
#elif defined(TARGET_ARCH_ARM)
- RESTORES_RETURN_ADDRESS_FROM_REGISTER_TO_LR(
- __ LeaveFrame((1 << LR)));
+ RESTORES_RETURN_ADDRESS_FROM_REGISTER_TO_LR(__ PopList((1 << LR)));
#endif
__ Ret();
});
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 772a483..4a9f094 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -5185,16 +5185,23 @@
if (declaration_type() != Type::null()) {
return declaration_type();
}
- // For efficiency, the runtimeType intrinsic returns the type cached by
- // DeclarationType without checking its nullability. Therefore, we
- // consistently cache the kNonNullable version of the type.
- // The exception is type Null which is stored as kNullable.
- Type& type =
- Type::Handle(Type::New(*this, TypeArguments::Handle(type_parameters()),
- Nullability::kNonNullable));
- type ^= ClassFinalizer::FinalizeType(type);
- set_declaration_type(type);
- return type.ptr();
+ {
+ auto thread = Thread::Current();
+ SafepointWriteRwLocker ml(thread, thread->isolate_group()->program_lock());
+ if (declaration_type() != Type::null()) {
+ return declaration_type();
+ }
+ // For efficiency, the runtimeType intrinsic returns the type cached by
+ // DeclarationType without checking its nullability. Therefore, we
+ // consistently cache the kNonNullable version of the type.
+ // The exception is type Null which is stored as kNullable.
+ Type& type =
+ Type::Handle(Type::New(*this, TypeArguments::Handle(type_parameters()),
+ Nullability::kNonNullable));
+ type ^= ClassFinalizer::FinalizeType(type);
+ set_declaration_type(type);
+ return type.ptr();
+ }
}
#if !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/tools/VERSION b/tools/VERSION
index d059f6c..816f32a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 14
PATCH 0
-PRERELEASE 35
+PRERELEASE 36
PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 7f33648..f637f03 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -526,7 +526,10 @@
},
"dart2js-(linux|mac|win)-chrome": {
"options": {
- "use-sdk": true
+ "use-sdk": true,
+ "dart2js-options": [
+ "--no-legacy-javascript"
+ ]
}
},
"dart2js-(linux|mac|win)-chrome-unsound": {