[vm/service] Fix tests in obfuscation

Added entry-point pragmas to prevent obfuscation of global vars.

Removed expectation checking for standard library `Expando` class name.

Closes: https://github.com/dart-lang/sdk/issues/45422

TEST=Fixes various service_2 tests in obfuscation mode.

Change-Id: I91bb856c7f1ff44afe1cceec8e94e3b97ab56e44
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-obfuscate-linux-release-x64-try
Fixed: 45422
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192681
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
This commit is contained in:
Daco Harkes
2021-03-23 13:28:36 +00:00
committed by commit-bot@chromium.org
parent 633d4ace6b
commit 043ea3b4f4
14 changed files with 142 additions and 60 deletions
@@ -10,9 +10,9 @@ import 'test_helper.dart';
class _TestClass {
_TestClass();
// Make sure these fields are not removed by the tree shaker.
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
dynamic x;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
dynamic y;
}
@@ -22,6 +22,7 @@ dynamic target3 = new _TestClass();
dynamic target4 = new _TestClass();
dynamic target5 = new _TestClass();
dynamic target6 = new _TestClass();
@pragma("vm:entry-point") // Prevent obfuscation
Expando<_TestClass> expando = Expando<_TestClass>();
@pragma("vm:entry-point") // Prevent obfuscation
dynamic globalObject = new _TestClass();
@@ -40,45 +41,45 @@ void warmup() {
globalMap2[target5] = 'value';
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getGlobalObject() => globalObject;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget1() {
var tmp = target1;
target1 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget2() {
var tmp = target2;
target2 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget3() {
var tmp = target3;
target3 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget4() {
var tmp = target4;
target4 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget5() {
var tmp = target5;
target5 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeExpandoTarget() {
var tmp = target6;
target6 = null;
@@ -87,7 +88,7 @@ takeExpandoTarget() {
return tmp2;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getTrue() => true;
invoke(Isolate isolate, String selector) async {
@@ -216,7 +217,6 @@ var tests = <IsolateTest>[
expect(result['elements'][1]['parentMapKey']['class']['name'],
equals('_TestClass'));
expect(result['elements'][2]['parentListIndex'], isNotNull);
expect(result['elements'][3]['value']['class']['name'], 'Expando');
expect(result['elements'][4]['value']['name'], 'expando');
},
@@ -13,13 +13,16 @@ class _TestClass {
var y;
}
@pragma("vm:entry-point") // Prevent obfuscation
class _TestConst {
const _TestConst();
}
_TopLevelClosure() {}
@pragma("vm:entry-point") // Prevent obfuscation
var x;
@pragma("vm:entry-point") // Prevent obfuscation
var fn;
void warmup() {
@@ -27,10 +30,10 @@ void warmup() {
fn = _TopLevelClosure;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getX() => x;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getFn() => fn;
invoke(Isolate isolate, String selector) async {
@@ -8,14 +8,16 @@ import 'package:observatory/service_io.dart';
import 'package:test/test.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
class Node {
// Make sure this field is not removed by the tree shaker.
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
var edge;
}
class Edge {}
@pragma("vm:entry-point") // Prevent obfuscation
var n, e, array;
void script() {
@@ -8,40 +8,42 @@ import 'package:test/test.dart';
import 'service_test_common.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
class Foo {}
@pragma("vm:entry-point") // Prevent obfuscation
class Bar {}
class Container1 {
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Foo foo = Foo();
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Bar bar = Bar();
}
class Container2 {
Container2(this.foo);
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Foo foo;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Bar bar = Bar();
}
class Container3 {
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
int number = 42;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
double doub = 3.14;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
String foo = 'foobar';
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
bool bar = false;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
late Map baz;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
late List list;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
late List unmodifiableList;
Container3() {
@@ -53,11 +55,11 @@ class Container3 {
}
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
late Container1 c1;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
late Container2 c2;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
late Container3 c3;
void script() {
@@ -10,13 +10,15 @@ import 'service_test_common.dart';
class Pair {
// Make sure these fields are not removed by the tree shaker.
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
dynamic x;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
dynamic y;
}
@pragma("vm:entry-point") // Prevent obfuscation
dynamic p1;
@pragma("vm:entry-point") // Prevent obfuscation
dynamic p2;
buildGraph() {
@@ -9,20 +9,35 @@ import 'package:observatory/service_io.dart';
import 'package:test/test.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
var ascii;
@pragma("vm:entry-point") // Prevent obfuscation
var latin1;
@pragma("vm:entry-point") // Prevent obfuscation
var unicode;
@pragma("vm:entry-point") // Prevent obfuscation
var hebrew;
@pragma("vm:entry-point") // Prevent obfuscation
var singleQuotes;
@pragma("vm:entry-point") // Prevent obfuscation
var doubleQuotes;
@pragma("vm:entry-point") // Prevent obfuscation
var newLines;
@pragma("vm:entry-point") // Prevent obfuscation
var tabs;
@pragma("vm:entry-point") // Prevent obfuscation
var suggrogatePairs;
@pragma("vm:entry-point") // Prevent obfuscation
var nullInTheMiddle;
@pragma("vm:entry-point") // Prevent obfuscation
var escapedUnicodeEscape;
@pragma("vm:entry-point") // Prevent obfuscation
var longStringEven;
@pragma("vm:entry-point") // Prevent obfuscation
var longStringOdd;
@pragma("vm:entry-point") // Prevent obfuscation
var malformedWithLeadSurrogate;
@pragma("vm:entry-point") // Prevent obfuscation
var malformedWithTrailSurrogate;
void script() {
@@ -9,25 +9,42 @@ import 'package:observatory/service_io.dart';
import 'package:test/test.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
var int8List;
@pragma("vm:entry-point") // Prevent obfuscation
var int16List;
@pragma("vm:entry-point") // Prevent obfuscation
var int32List;
@pragma("vm:entry-point") // Prevent obfuscation
var int64List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint8List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint16List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint32List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint64List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint8ClampedList;
@pragma("vm:entry-point") // Prevent obfuscation
var float32List;
@pragma("vm:entry-point") // Prevent obfuscation
var float64List;
@pragma("vm:entry-point") // Prevent obfuscation
var int32x4;
@pragma("vm:entry-point") // Prevent obfuscation
var float32x4;
@pragma("vm:entry-point") // Prevent obfuscation
var float64x2;
@pragma("vm:entry-point") // Prevent obfuscation
var int32x4List;
@pragma("vm:entry-point") // Prevent obfuscation
var float32x4List;
@pragma("vm:entry-point") // Prevent obfuscation
var float64x2List;
void script() {
@@ -10,9 +10,9 @@ import 'test_helper.dart';
class _TestClass {
_TestClass();
// Make sure these fields are not removed by the tree shaker.
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
var x;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
var y;
}
@@ -22,6 +22,7 @@ var target3 = new _TestClass();
var target4 = new _TestClass();
var target5 = new _TestClass();
var target6 = new _TestClass();
@pragma("vm:entry-point") // Prevent obfuscation
Expando<_TestClass> expando = Expando<_TestClass>();
@pragma("vm:entry-point") // Prevent obfuscation
var globalObject = new _TestClass();
@@ -40,45 +41,45 @@ void warmup() {
globalMap2[target5] = 'value';
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getGlobalObject() => globalObject;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget1() {
var tmp = target1;
target1 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget2() {
var tmp = target2;
target2 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget3() {
var tmp = target3;
target3 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget4() {
var tmp = target4;
target4 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeTarget5() {
var tmp = target5;
target5 = null;
return tmp;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
takeExpandoTarget() {
var tmp = target6;
target6 = null;
@@ -87,7 +88,7 @@ takeExpandoTarget() {
return tmp2;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getTrue() => true;
invoke(Isolate isolate, String selector) async {
@@ -216,7 +217,6 @@ var tests = <IsolateTest>[
expect(result['elements'][1]['parentMapKey']['class']['name'],
equals('_TestClass'));
expect(result['elements'][2]['parentListIndex'], isNotNull);
expect(result['elements'][3]['value']['class']['name'], 'Expando');
expect(result['elements'][4]['value']['name'], 'expando');
},
@@ -13,13 +13,16 @@ class _TestClass {
var y;
}
@pragma("vm:entry-point") // Prevent obfuscation
class _TestConst {
const _TestConst();
}
_TopLevelClosure() {}
@pragma("vm:entry-point") // Prevent obfuscation
var x;
@pragma("vm:entry-point") // Prevent obfuscation
var fn;
void warmup() {
@@ -27,10 +30,10 @@ void warmup() {
fn = _TopLevelClosure;
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getX() => x;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
getFn() => fn;
invoke(Isolate isolate, String selector) async {
@@ -8,14 +8,16 @@ import 'package:observatory_2/service_io.dart';
import 'package:test/test.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
class Node {
// Make sure this field is not removed by the tree shaker.
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
var edge;
}
class Edge {}
@pragma("vm:entry-point") // Prevent obfuscation
var n, e, array;
void script() {
@@ -8,40 +8,42 @@ import 'package:test/test.dart';
import 'service_test_common.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
class Foo {}
@pragma("vm:entry-point") // Prevent obfuscation
class Bar {}
class Container1 {
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Foo foo = Foo();
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Bar bar = Bar();
}
class Container2 {
Container2(this.foo);
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Foo foo;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Bar bar = Bar();
}
class Container3 {
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
int number = 42;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
double doub = 3.14;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
String foo = 'foobar';
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
bool bar = false;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Map baz;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
List list;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
List unmodifiableList;
Container3() {
@@ -53,11 +55,11 @@ class Container3 {
}
}
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Container1 c1;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Container2 c2;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
Container3 c3;
void script() {
@@ -10,13 +10,15 @@ import 'service_test_common.dart';
class Pair {
// Make sure these fields are not removed by the tree shaker.
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
var x;
@pragma("vm:entry-point")
@pragma("vm:entry-point") // Prevent obfuscation
var y;
}
@pragma("vm:entry-point") // Prevent obfuscation
var p1;
@pragma("vm:entry-point") // Prevent obfuscation
var p2;
buildGraph() {
@@ -9,20 +9,35 @@ import 'package:observatory_2/service_io.dart';
import 'package:test/test.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
var ascii;
@pragma("vm:entry-point") // Prevent obfuscation
var latin1;
@pragma("vm:entry-point") // Prevent obfuscation
var unicode;
@pragma("vm:entry-point") // Prevent obfuscation
var hebrew;
@pragma("vm:entry-point") // Prevent obfuscation
var singleQuotes;
@pragma("vm:entry-point") // Prevent obfuscation
var doubleQuotes;
@pragma("vm:entry-point") // Prevent obfuscation
var newLines;
@pragma("vm:entry-point") // Prevent obfuscation
var tabs;
@pragma("vm:entry-point") // Prevent obfuscation
var suggrogatePairs;
@pragma("vm:entry-point") // Prevent obfuscation
var nullInTheMiddle;
@pragma("vm:entry-point") // Prevent obfuscation
var escapedUnicodeEscape;
@pragma("vm:entry-point") // Prevent obfuscation
var longStringEven;
@pragma("vm:entry-point") // Prevent obfuscation
var longStringOdd;
@pragma("vm:entry-point") // Prevent obfuscation
var malformedWithLeadSurrogate;
@pragma("vm:entry-point") // Prevent obfuscation
var malformedWithTrailSurrogate;
void script() {
@@ -9,25 +9,42 @@ import 'package:observatory_2/service_io.dart';
import 'package:test/test.dart';
import 'test_helper.dart';
@pragma("vm:entry-point") // Prevent obfuscation
var int8List;
@pragma("vm:entry-point") // Prevent obfuscation
var int16List;
@pragma("vm:entry-point") // Prevent obfuscation
var int32List;
@pragma("vm:entry-point") // Prevent obfuscation
var int64List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint8List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint16List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint32List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint64List;
@pragma("vm:entry-point") // Prevent obfuscation
var uint8ClampedList;
@pragma("vm:entry-point") // Prevent obfuscation
var float32List;
@pragma("vm:entry-point") // Prevent obfuscation
var float64List;
@pragma("vm:entry-point") // Prevent obfuscation
var int32x4;
@pragma("vm:entry-point") // Prevent obfuscation
var float32x4;
@pragma("vm:entry-point") // Prevent obfuscation
var float64x2;
@pragma("vm:entry-point") // Prevent obfuscation
var int32x4List;
@pragma("vm:entry-point") // Prevent obfuscation
var float32x4List;
@pragma("vm:entry-point") // Prevent obfuscation
var float64x2List;
void script() {