Version 2.14.0-377.0.dev
Merge commit '0edf000b87cd5a7fdc7aec8ddec28f6b1414d0a7' into 'dev'
diff --git a/runtime/platform/globals.h b/runtime/platform/globals.h
index 42edc70..ed20219 100644
--- a/runtime/platform/globals.h
+++ b/runtime/platform/globals.h
@@ -334,6 +334,10 @@
#error Automatic target architecture detection failed.
#endif
+#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#define HAS_SMI_63_BITS 1
+#endif
+
// Verify that host and target architectures match, we cannot
// have a 64 bit Dart VM generating 32 bit code or vice-versa.
#if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_ARM64)
diff --git a/runtime/vm/compiler/assembler/assembler_base.h b/runtime/vm/compiler/assembler/assembler_base.h
index 55258dc..1f22998 100644
--- a/runtime/vm/compiler/assembler/assembler_base.h
+++ b/runtime/vm/compiler/assembler/assembler_base.h
@@ -193,7 +193,7 @@
// 64-bit ARM specific constants.
kQWord,
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
kObjectBytes = kEightBytes,
#else
kObjectBytes = kFourBytes,
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 129f0e7..527fa42 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -3736,7 +3736,7 @@
switch (from) {
case kUnboxedUint8:
case kUnboxedUint16:
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
case kUnboxedInt32:
case kUnboxedUint32:
#endif
diff --git a/runtime/vm/compiler/backend/type_propagator.cc b/runtime/vm/compiler/backend/type_propagator.cc
index 9aecb2c..06edf78 100644
--- a/runtime/vm/compiler/backend/type_propagator.cc
+++ b/runtime/vm/compiler/backend/type_propagator.cc
@@ -699,7 +699,7 @@
}
CompileType CompileType::Int32() {
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
return FromCid(kSmiCid);
#else
return Int();
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 06b2e7e..68cdb57 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -1486,7 +1486,7 @@
body += Box(kUnboxedFfiIntPtr);
} break;
case MethodRecognizer::kHas63BitSmis: {
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
body += Constant(Bool::True());
#else
body += Constant(Bool::False());
diff --git a/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart b/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
index 968ae22..5813d60 100644
--- a/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
+++ b/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
@@ -68,7 +68,8 @@
Expect.identical(staticMethod<int, String>, staticTearOff);
- Expect.equals(
+ // Extension instance methods are not equal unless identical.
+ Expect.notEquals(
extInstanceMethod<int, String>, this.extInstanceMethod<int, String>);
}
}
@@ -132,7 +133,9 @@
o.instanceMethod<int, String>, o.instanceMethod<int, String>);
Expect.equals(
o.mixinInstanceMethod<int, String>, o.mixinInstanceMethod<int, String>);
- Expect.equals(
+
+ // Instantiated extension methods are not equal unless they are identical.
+ Expect.notEquals(
o.extInstanceMethod<int, String>, o.extInstanceMethod<int, String>);
// And not canonicalized where they shouldn't (different types).
diff --git a/tools/VERSION b/tools/VERSION
index a209f12..42c0eae 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 14
PATCH 0
-PRERELEASE 376
+PRERELEASE 377
PRERELEASE_PATCH 0
\ No newline at end of file