Skip to content

Commit e0ee7cb

Browse files
rakudramacommit-bot@chromium.org
authored andcommitted
[dart2js] new-rti: Add 'minified:' tag to minified names
Change-Id: I9ea58068bdc3bea74244c31d7c60a59e7ea08b9d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108208 Reviewed-by: Mayank Patke <[email protected]> Commit-Queue: Stephen Adams <[email protected]>
1 parent 3c05b81 commit e0ee7cb

File tree

6 files changed

+74
-38
lines changed

6 files changed

+74
-38
lines changed

sdk/lib/_internal/js_runtime/lib/js_names.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ List extractKeys(victim) {
150150
/// example).
151151
String unmangleGlobalNameIfPreservedAnyways(String name) {
152152
var names = JS_EMBEDDED_GLOBAL('', MANGLED_GLOBAL_NAMES);
153-
return JsCache.fetch(names, name);
153+
return JS('String|Null', '#', JsCache.fetch(names, name));
154154
}
155155

156156
String unmangleAllIdentifiersIfPreservedAnyways(String str) {

sdk/lib/_internal/js_runtime/lib/rti.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@ import 'dart:_foreign_helper'
1212
JS,
1313
JS_BUILTIN,
1414
JS_EMBEDDED_GLOBAL,
15+
JS_GET_FLAG,
1516
JS_GET_NAME,
17+
JS_STRING_CONCAT,
1618
RAW_DART_FUNCTION_REF;
1719

1820
import 'dart:_interceptors' show JSArray, JSUnmodifiableArray;
1921

22+
import 'dart:_js_names' show unmangleGlobalNameIfPreservedAnyways;
23+
2024
import 'dart:_js_embedded_names'
2125
show JsBuiltin, JsGetName, RtiUniverseFieldNames, RTI_UNIVERSE, TYPES;
2226

@@ -482,6 +486,7 @@ String _rtiToString(Rti rti, List<String> genericContext) {
482486

483487
if (kind == Rti.kindInterface) {
484488
String name = Rti._getInterfaceName(rti);
489+
name = _unminifyOrTag(name);
485490
var arguments = Rti._getInterfaceTypeArguments(rti);
486491
if (arguments.length != 0) {
487492
name += '<';
@@ -533,6 +538,12 @@ String _rtiToString(Rti rti, List<String> genericContext) {
533538
return '?';
534539
}
535540

541+
String _unminifyOrTag(String rawClassName) {
542+
String preserved = unmangleGlobalNameIfPreservedAnyways(rawClassName);
543+
if (preserved != null) return preserved;
544+
return JS_GET_FLAG('MINIFIED') ? 'minified:$rawClassName' : rawClassName;
545+
}
546+
536547
String _rtiToDebugString(Rti rti) {
537548
String arrayToString(Object array) {
538549
String s = '[', sep = '';

tests/compiler/dart2js_extra/rti/bind_test.dart

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,41 @@ void checkRtiIdentical(Object rti1, Object rti2) {
1111
identical(rti1, rti2), 'identical(${format(rti1)}, ${format(rti2)}');
1212
}
1313

14+
void checkToString(String expected, Object rti1) {
15+
String result = rti.testingRtiToString(rti1);
16+
if (expected == result) return;
17+
Expect.equals(expected, result.replaceAll('minified:', ''));
18+
}
19+
1420
test1() {
1521
var universe = rti.testingCreateUniverse();
1622

1723
// Extend environment in one step
1824
var env1a = rti.testingUniverseEval(universe, 'Foo');
19-
var args1 = rti.testingUniverseEval(universe, '@<aa,bb>');
25+
var args1 = rti.testingUniverseEval(universe, '@<aaa,bbb>');
2026
var env1b = rti.testingEnvironmentBind(universe, env1a, args1);
2127

22-
var rti1 = rti.testingEnvironmentEval(universe, env1b, 'A<0,1,2>');
23-
Expect.equals('A<Foo, aa, bb>', rti.testingRtiToString(rti1));
28+
var rti1 = rti.testingEnvironmentEval(universe, env1b, 'AAA<0,1,2>');
29+
checkToString('AAA<Foo, aaa, bbb>', rti1);
2430

25-
Expect.equals('binding(interface("Foo"), [interface("aa"), interface("bb")])',
31+
Expect.equals(
32+
'binding(interface("Foo"), [interface("aaa"), interface("bbb")])',
2633
rti.testingRtiToDebugString(env1b));
2734

2835
// Extend environment in two steps
2936
var env2a = rti.testingUniverseEval(universe, 'Foo');
30-
var args2a = rti.testingUniverseEval(universe, 'aa');
37+
var args2a = rti.testingUniverseEval(universe, 'aaa');
3138
var env2b = rti.testingEnvironmentBind(universe, env2a, args2a);
32-
var args2b = rti.testingUniverseEval(universe, 'bb');
39+
var args2b = rti.testingUniverseEval(universe, 'bbb');
3340
var env2c = rti.testingEnvironmentBind(universe, env2b, args2b);
3441

35-
var rti2 = rti.testingEnvironmentEval(universe, env2c, 'A<0,1,2>');
36-
Expect.equals('A<Foo, aa, bb>', rti.testingRtiToString(rti2));
42+
var rti2 = rti.testingEnvironmentEval(universe, env2c, 'AAA<0,1,2>');
43+
checkToString('AAA<Foo, aaa, bbb>', rti2);
3744

38-
Expect.equals('binding(interface("Foo"), [interface("aa")])',
45+
Expect.equals('binding(interface("Foo"), [interface("aaa")])',
3946
rti.testingRtiToDebugString(env2b));
40-
Expect.equals('binding(interface("Foo"), [interface("aa"), interface("bb")])',
47+
Expect.equals(
48+
'binding(interface("Foo"), [interface("aaa"), interface("bbb")])',
4149
rti.testingRtiToDebugString(env2c));
4250

4351
checkRtiIdentical(env1b, env2c);

tests/compiler/dart2js_extra/rti/bound_environment_test.dart

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,25 @@ void checkRtiIdentical(Object rti1, Object rti2) {
1111
identical(rti1, rti2), 'identical(${format(rti1)}, ${format(rti2)}');
1212
}
1313

14+
void checkToString(String expected, Object rti1) {
15+
String result = rti.testingRtiToString(rti1);
16+
if (expected == result) return;
17+
Expect.equals(expected, result.replaceAll('minified:', ''));
18+
}
19+
1420
test1() {
1521
var universe = rti.testingCreateUniverse();
1622

1723
var env = rti.testingUniverseEval(universe, 'Foo<bool><int>');
1824
var rti1 = rti.testingUniverseEval(universe, 'int');
1925
var rti2 = rti.testingEnvironmentEval(universe, env, '1');
2026

21-
Expect.equals('int', rti.testingRtiToString(rti1));
22-
Expect.equals('int', rti.testingRtiToString(rti2));
27+
checkToString('int', rti1);
28+
checkToString('int', rti2);
2329
checkRtiIdentical(rti1, rti2);
2430

2531
var rti3 = rti.testingEnvironmentEval(universe, env, 'A<0,1,2>');
26-
Expect.equals('A<Foo<bool>, int, bool>', rti.testingRtiToString(rti3));
32+
checkToString('A<Foo<bool>, int, bool>', rti3);
2733
}
2834

2935
test2() {
@@ -37,32 +43,31 @@ test2() {
3743

3844
var rti1 = rti.testingEnvironmentEval(universe, env1, 'A<0,1,2>');
3945
var rti2 = rti.testingEnvironmentEval(universe, env2, 'A<0,1,2>');
40-
Expect.equals('A<Foo<bool>, int, bool>', rti.testingRtiToString(rti1));
41-
Expect.equals('A<Foo, bool, int>', rti.testingRtiToString(rti2));
46+
checkToString('A<Foo<bool>, int, bool>', rti1);
47+
checkToString('A<Foo, bool, int>', rti2);
4248
}
4349

4450
test3() {
4551
var universe = rti.testingCreateUniverse();
46-
var env = rti.testingUniverseEval(universe, 'C<aa,bb><cc,@>');
52+
var env = rti.testingUniverseEval(universe, 'C<aaa,bbb><ccc,@>');
4753
var rti1 = rti.testingEnvironmentEval(universe, env, 'A<0,1,2,3,4>');
48-
Expect.equals(
49-
'A<C<aa, bb>, cc, dynamic, aa, bb>', rti.testingRtiToString(rti1));
54+
checkToString('A<C<aaa, bbb>, ccc, dynamic, aaa, bbb>', rti1);
5055
}
5156

5257
test4() {
5358
var universe = rti.testingCreateUniverse();
54-
var env = rti.testingUniverseEval(universe, '@<aa,bb>');
59+
var env = rti.testingUniverseEval(universe, '@<aaa,bbb>');
5560
var rti1 = rti.testingEnvironmentEval(universe, env, 'A<0,1,2>');
56-
Expect.equals('A<dynamic, aa, bb>', rti.testingRtiToString(rti1));
61+
checkToString('A<dynamic, aaa, bbb>', rti1);
5762
}
5863

5964
test5() {
6065
var universe = rti.testingCreateUniverse();
61-
var env1 = rti.testingUniverseEval(universe, '@<aa><bb><cc>');
62-
var env2 = rti.testingUniverseEval(universe, '@;<aa><bb><cc>');
66+
var env1 = rti.testingUniverseEval(universe, '@<aaa><bbb><ccc>');
67+
var env2 = rti.testingUniverseEval(universe, '@;<aaa><bbb><ccc>');
6368
var rti1 = rti.testingEnvironmentEval(universe, env1, 'A<0,1,2,3>');
6469
var rti2 = rti.testingEnvironmentEval(universe, env2, 'A<0,1,2,3>');
65-
Expect.equals('A<dynamic, aa, bb, cc>', rti.testingRtiToString(rti1));
70+
checkToString('A<dynamic, aaa, bbb, ccc>', rti1);
6671
checkRtiIdentical(rti1, rti2);
6772
}
6873

tests/compiler/dart2js_extra/rti/class_environment_test.dart

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,21 @@ void checkRtiIdentical(Object rti1, Object rti2) {
1111
identical(rti1, rti2), 'identical(${format(rti1)}, ${format(rti2)}');
1212
}
1313

14+
void checkToString(String expected, Object rti1) {
15+
String result = rti.testingRtiToString(rti1);
16+
if (expected == result) return;
17+
Expect.equals(expected, result.replaceAll('minified:', ''));
18+
}
19+
1420
testInterface1() {
1521
var universe = rti.testingCreateUniverse();
1622

1723
var env = rti.testingUniverseEval(universe, 'Foo<int>');
1824
var rti1 = rti.testingUniverseEval(universe, 'int');
1925
var rti2 = rti.testingEnvironmentEval(universe, env, '1');
2026

21-
Expect.equals('int', rti.testingRtiToString(rti1));
22-
Expect.equals('int', rti.testingRtiToString(rti2));
27+
checkToString('int', rti1);
28+
checkToString('int', rti2);
2329
checkRtiIdentical(rti1, rti2);
2430
}
2531

@@ -31,9 +37,9 @@ testInterface2() {
3137
var rti2 = rti.testingEnvironmentEval(universe, env, '2');
3238
var rti3 = rti.testingEnvironmentEval(universe, env, 'List<1>');
3339

34-
Expect.equals('List<int>', rti.testingRtiToString(rti1));
35-
Expect.equals('List<int>', rti.testingRtiToString(rti2));
36-
Expect.equals('List<int>', rti.testingRtiToString(rti3));
40+
checkToString('List<int>', rti1);
41+
checkToString('List<int>', rti2);
42+
checkToString('List<int>', rti3);
3743
checkRtiIdentical(rti1, rti2);
3844
checkRtiIdentical(rti1, rti3);
3945
}

tests/compiler/dart2js_extra/rti/simple_2_test.dart

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
import 'dart:_rti' as rti;
66
import "package:expect/expect.dart";
77

8+
void checkToString(String expected, Object rti1) {
9+
String result = rti.testingRtiToString(rti1);
10+
if (expected == result) return;
11+
Expect.equals(expected, result.replaceAll('minified:', ''));
12+
}
13+
814
testDynamic1() {
915
var universe = rti.testingCreateUniverse();
1016

@@ -13,7 +19,7 @@ testDynamic1() {
1319

1420
Expect.isTrue(identical(rti1, rti2), 'dynamic should be identical');
1521
Expect.isFalse(rti1 is String);
16-
Expect.equals('dynamic', rti.testingRtiToString(rti1));
22+
checkToString('dynamic', rti1);
1723
}
1824

1925
testDynamic2() {
@@ -24,7 +30,7 @@ testDynamic2() {
2430

2531
Expect.isTrue(identical(rti1, rti2), 'dynamic should be identical');
2632
Expect.isFalse(rti1 is String);
27-
Expect.equals('dynamic', rti.testingRtiToString(rti1));
33+
checkToString('dynamic', rti1);
2834
}
2935

3036
testVoid() {
@@ -35,7 +41,7 @@ testVoid() {
3541

3642
Expect.isTrue(identical(rti1, rti2), 'void should be identical');
3743
Expect.isFalse(rti1 is String);
38-
Expect.equals('void', rti.testingRtiToString(rti1));
44+
checkToString('void', rti1);
3945
}
4046

4147
testNever() {
@@ -46,7 +52,7 @@ testNever() {
4652

4753
Expect.isTrue(identical(rti1, rti2), 'Never should be identical');
4854
Expect.isFalse(rti1 is String);
49-
Expect.equals('Never', rti.testingRtiToString(rti1));
55+
checkToString('Never', rti1);
5056
}
5157

5258
testAny() {
@@ -57,7 +63,7 @@ testAny() {
5763

5864
Expect.isTrue(identical(rti1, rti2), "'any' should be identical");
5965
Expect.isFalse(rti1 is String);
60-
Expect.equals('any', rti.testingRtiToString(rti1));
66+
checkToString('any', rti1);
6167
}
6268

6369
testTerminal() {
@@ -84,7 +90,7 @@ testInterface1() {
8490

8591
Expect.isTrue(identical(rti1, rti2));
8692
Expect.isFalse(rti1 is String);
87-
Expect.equals('int', rti.testingRtiToString(rti1));
93+
checkToString('int', rti1);
8894
}
8995

9096
testInterface2() {
@@ -95,7 +101,7 @@ testInterface2() {
95101

96102
Expect.isTrue(identical(rti1, rti2));
97103
Expect.isFalse(rti1 is String);
98-
Expect.equals('Foo<int, bool>', rti.testingRtiToString(rti1));
104+
checkToString('Foo<int, bool>', rti1);
99105
}
100106

101107
testInterface3() {
@@ -106,7 +112,7 @@ testInterface3() {
106112

107113
Expect.isTrue(identical(rti1, rti2));
108114
Expect.isFalse(rti1 is String);
109-
Expect.equals('Foo<Bar<int>, Bar<bool>>', rti.testingRtiToString(rti1));
115+
checkToString('Foo<Bar<int>, Bar<bool>>', rti1);
110116
}
111117

112118
testInterface4() {
@@ -117,7 +123,7 @@ testInterface4() {
117123

118124
Expect.isTrue(identical(rti1, rti2));
119125
Expect.isFalse(rti1 is String);
120-
Expect.equals('Foo<Foo<Foo<Foo<int>>>>', rti.testingRtiToString(rti1));
126+
checkToString('Foo<Foo<Foo<Foo<int>>>>', rti1);
121127
}
122128

123129
main() {

0 commit comments

Comments
 (0)