Skip to content

Commit 549639d

Browse files
fishythefishCommit Queue
authored andcommitted
[dart2js, ddc] Remove LEGACY support from rti.
- Remove support for `JS_GET_FLAG('LEGACY')` from backends - Remove `kindStar` Rtis - Remove `Recipe.wrapStar` Bug: #60327 Change-Id: I2ec9b0afc9f3cd99fc6167600e6d908c9771af1d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/416101 Reviewed-by: Nicholas Shahan <[email protected]> Reviewed-by: Stephen Adams <[email protected]> Reviewed-by: Nate Biggs <[email protected]>
1 parent 6a2e567 commit 549639d

File tree

11 files changed

+136
-432
lines changed

11 files changed

+136
-432
lines changed

pkg/compiler/lib/src/kernel/transformations/global/js_get_flag_lowering.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ class JsGetFlagLowering {
5858
'USE_CONTENT_SECURITY_POLICY' =>
5959
_options.features.useContentSecurityPolicy.isEnabled,
6060
'VARIANCE' => _options.enableVariance,
61-
'LEGACY' => _options.useLegacySubtyping,
6261
_ => null,
6362
};
6463

pkg/dev_compiler/lib/src/kernel/compiler.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
776776
if (_isBuildingSdk) {
777777
var prerequisiteRtiTypes = [
778778
_coreTypes.objectNullableRawType,
779-
NeverType.legacy()
780779
];
781780
prerequisiteRtiTypes.forEach((type) {
782781
var recipe = _typeRecipeGenerator
@@ -6152,9 +6151,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
61526151
var value = flag.value;
61536152
return switch (value) {
61546153
'DEV_COMPILER' => js.boolean(true),
6155-
// TODO(nshahan): Delete 'LEGACY' after uses are deleted from
6156-
// dart:_rti.
6157-
'LEGACY' => js.boolean(false),
61586154
'MINIFIED' => js.boolean(false),
61596155
'VARIANCE' =>
61606156
// Variance is turned on by default, but only interfaces that have

pkg/dev_compiler/lib/src/kernel/compiler_new.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,6 @@ class LibraryCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
953953
if (_isSdkInternalRuntime(_currentLibrary!)) {
954954
var prerequisiteRtiTypes = [
955955
_coreTypes.objectNullableRawType,
956-
NeverType.legacy()
957956
];
958957
prerequisiteRtiTypes.forEach((type) {
959958
var recipe = _typeRecipeGenerator
@@ -6600,9 +6599,6 @@ class LibraryCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
66006599
var value = flag.value;
66016600
return switch (value) {
66026601
'DEV_COMPILER' => js.boolean(true),
6603-
// TODO(nshahan): Delete 'LEGACY' after uses are deleted from
6604-
// dart:_rti.
6605-
'LEGACY' => js.boolean(false),
66066602
'MINIFIED' => js.boolean(false),
66076603
'VARIANCE' =>
66086604
// Variance is turned on by default, but only interfaces that have

pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ class _TypeRecipeVisitor extends DartTypeVisitor<String> {
565565
case Nullability.nonNullable:
566566
return '';
567567
case Nullability.legacy:
568-
return Recipe.wrapStarString;
568+
throw UnsupportedError('Legacy nullability.');
569569
}
570570
}
571571

pkg/js_shared/lib/synced/recipe_syntax.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ abstract class Recipe {
2828
static const int pushVoid = _tilde;
2929
static const String pushVoidString = _tildeString;
3030

31-
static const int wrapStar = _asterisk;
32-
static const String wrapStarString = _asteriskString;
3331
static const int wrapQuestion = _question;
3432
static const String wrapQuestionString = _questionString;
3533
static const int wrapFutureOr = _slash;
@@ -187,7 +185,6 @@ abstract class Recipe {
187185
test("pushErased", pushErased, pushErasedString);
188186
test("pushDynamic", pushDynamic, pushDynamicString);
189187
test("pushVoid", pushVoid, pushVoidString);
190-
test("wrapStar", wrapStar, wrapStarString);
191188
test("wrapQuestion", wrapQuestion, wrapQuestionString);
192189
test("wrapFutureOr", wrapFutureOr, wrapFutureOrString);
193190
test("startTypeArguments", startTypeArguments, startTypeArgumentsString);

sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ _checkAndCall(f, ftype, obj, typeArgs, args, named, displayName) {
604604
for (var i = 0; i < typeParameterCount; i++) {
605605
var bound = JS<rti.Rti>('!', '#[#]', typeParameterBounds, i);
606606
var typeArg = JS<rti.Rti>('!', '#[#]', typeArgs, i);
607-
if (bound != typeArg && !rti.isSoundTopType(bound)) {
607+
if (bound != typeArg && !rti.isTopType(bound)) {
608608
var instantiatedBound = rti.substitute(bound, typeArgs);
609609
var validSubtype = rti.isSubtype(
610610
JS_EMBEDDED_GLOBAL('', RTI_UNIVERSE),

sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ import 'dart:_rti'
6666
interfaceTypeRecipePropertyName,
6767
isGenericFunctionType,
6868
isRecordType,
69-
isSoundTopType,
7069
isSubtype,
70+
isTopType,
7171
Rti,
7272
rtiToString,
7373
substitute;

sdk/lib/_internal/js_runtime/lib/internal_patch.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ import 'dart:typed_data' show Uint8List;
1313

1414
@patch
1515
@pragma('dart2js:tryInline')
16-
bool typeAcceptsNull<T>() {
17-
bool isLegacySubtyping = JS_GET_FLAG('LEGACY');
18-
return isLegacySubtyping || null is T;
19-
}
16+
bool typeAcceptsNull<T>() => null is T;
2017

2118
@patch
2219
class Symbol implements core.Symbol {

sdk/lib/_internal/js_runtime/lib/js_array.dart

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,19 @@ class JSArray<E> extends JavaScriptObject implements List<E>, JSIndexable<E> {
121121
@pragma('dart2js:prefer-inline')
122122
static List<T> markFixedList<T>(List<T> list) {
123123
return JS(
124-
'JSFixedArray', '#', HArrayFlagsSet(list, ArrayFlags.fixedLength));
124+
'JSFixedArray',
125+
'#',
126+
HArrayFlagsSet(list, ArrayFlags.fixedLength),
127+
);
125128
}
126129

127130
@pragma('dart2js:prefer-inline')
128131
static List<T> markUnmodifiableList<T>(List list) {
129-
return JS('JSUnmodifiableArray', '#',
130-
HArrayFlagsSet(list, ArrayFlags.unmodifiable));
132+
return JS(
133+
'JSUnmodifiableArray',
134+
'#',
135+
HArrayFlagsSet(list, ArrayFlags.unmodifiable),
136+
);
131137
}
132138

133139
static bool isFixedLength(JSArray a) {
@@ -149,7 +155,12 @@ class JSArray<E> extends JavaScriptObject implements List<E>, JSIndexable<E> {
149155
checkMutable(String operation, String verb) {
150156
final int flags = HArrayFlagsGet(this);
151157
HArrayFlagsCheck(
152-
this, flags, ArrayFlags.unmodifiableCheck, operation, verb);
158+
this,
159+
flags,
160+
ArrayFlags.unmodifiableCheck,
161+
operation,
162+
verb,
163+
);
153164
}
154165

155166
checkGrowable(String operation, String verb) {
@@ -623,9 +634,8 @@ class JSArray<E> extends JavaScriptObject implements List<E>, JSIndexable<E> {
623634
// with an assignment like `a[i] = a[j]`.
624635

625636
int undefineds = 0;
626-
// The element type might exclude the possibility of there being `null`s,
627-
// but only in sound null safety mode.
628-
if (JS_GET_FLAG('LEGACY') || null is E) {
637+
// The element type might exclude the possibility of there being `null`s.
638+
if (null is E) {
629639
for (int i = 0; i < length; i++) {
630640
final E element = JS('', '#[#]', this, i);
631641
if (JS('', '# === void 0', element)) {
@@ -726,9 +736,10 @@ class JSArray<E> extends JavaScriptObject implements List<E>, JSIndexable<E> {
726736
List<E> toList({bool growable = true}) =>
727737
growable ? _toListGrowable() : _toListFixed();
728738

729-
List<E> _toListGrowable() =>
730-
// slice(0) is slightly faster than slice()
731-
JSArray<E>.markGrowable(JS('', '#.slice(0)', this));
739+
List<E> _toListGrowable() {
740+
// slice(0) is slightly faster than slice()
741+
return JSArray<E>.markGrowable(JS('', '#.slice(0)', this));
742+
}
732743

733744
List<E> _toListFixed() => JSArray<E>.markFixed(JS('', '#.slice(0)', this));
734745

@@ -768,8 +779,10 @@ class JSArray<E> extends JavaScriptObject implements List<E>, JSIndexable<E> {
768779
void _setLengthUnsafe(int newLength) {
769780
assert(newLength is int, throw ArgumentError.value(newLength, 'newLength'));
770781

771-
assert(newLength >= 0,
772-
throw RangeError.range(newLength, 0, null, 'newLength'));
782+
assert(
783+
newLength >= 0,
784+
throw RangeError.range(newLength, 0, null, 'newLength'),
785+
);
773786

774787
// JavaScript with throw a RangeError for numbers that are too big. The
775788
// message does not contain the value.
@@ -785,8 +798,12 @@ class JSArray<E> extends JavaScriptObject implements List<E>, JSIndexable<E> {
785798

786799
void operator []=(int index, E value) {
787800
final int flags = HArrayFlagsGet(this);
788-
final checked =
789-
HArrayFlagsCheck(this, flags, ArrayFlags.unmodifiableCheck, '[]=');
801+
final checked = HArrayFlagsCheck(
802+
this,
803+
flags,
804+
ArrayFlags.unmodifiableCheck,
805+
'[]=',
806+
);
790807

791808
if (index is! int) throw diagnoseIndexError(this, index);
792809
// This form of the range test correctly rejects NaN.
@@ -864,9 +881,9 @@ class ArrayIterator<E> implements Iterator<E> {
864881
E? _current;
865882

866883
ArrayIterator(JSArray<E> iterable)
867-
: _iterable = iterable,
868-
_length = iterable.length,
869-
_index = 0;
884+
: _iterable = iterable,
885+
_length = iterable.length,
886+
_index = 0;
870887

871888
E get current => _current as E;
872889

0 commit comments

Comments
 (0)