[dart2js] Don't store collection of noInline/tryInline methods
Not storing a collection of methods is a step towards processing
annotations more 'online'.
Change-Id: I378ec4db9526004a1f1dc56886bbc91a7acde7f0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/251322
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
diff --git a/pkg/compiler/lib/src/js_backend/annotations.dart b/pkg/compiler/lib/src/js_backend/annotations.dart
index 8460a64..677a87e 100644
--- a/pkg/compiler/lib/src/js_backend/annotations.dart
+++ b/pkg/compiler/lib/src/js_backend/annotations.dart
@@ -317,14 +317,6 @@
/// annotation.
bool hasNoSideEffects(MemberEntity member);
- /// Calls [f] for all functions with a `@pragma('dart2js:noInline')`
- /// annotation.
- void forEachNoInline(void f(FunctionEntity function));
-
- /// Calls [f] for all functions with a `@pragma('dart2js:tryInline')`
- /// annotation.
- void forEachTryInline(void f(FunctionEntity function));
-
/// Calls [f] for all functions with a `@pragma('dart2js:noThrows')`
/// annotation.
void forEachNoThrows(void f(FunctionEntity function));
@@ -451,26 +443,6 @@
_hasPragma(member, PragmaAnnotation.noSideEffects);
@override
- void forEachNoInline(void f(FunctionEntity function)) {
- pragmaAnnotations
- .forEach((MemberEntity member, EnumSet<PragmaAnnotation> set) {
- if (set.contains(PragmaAnnotation.noInline)) {
- f(member as FunctionEntity);
- }
- });
- }
-
- @override
- void forEachTryInline(void f(FunctionEntity function)) {
- pragmaAnnotations
- .forEach((MemberEntity member, EnumSet<PragmaAnnotation> set) {
- if (set.contains(PragmaAnnotation.tryInline)) {
- f(member as FunctionEntity);
- }
- });
- }
-
- @override
void forEachNoThrows(void f(FunctionEntity function)) {
pragmaAnnotations
.forEach((MemberEntity member, EnumSet<PragmaAnnotation> set) {
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index b8f099c..fc21a9c 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -46,19 +46,11 @@
static const int _canInlineInLoopMayInlineOutside = 3;
static const int _canInline = 4;
+ final AnnotationsData _annotationsData;
+
final Map<FunctionEntity, int> _cachedDecisions = {};
- final Set<FunctionEntity> _noInlineFunctions = {};
- final Set<FunctionEntity> _tryInlineFunctions = {};
-
- FunctionInlineCache(AnnotationsData annotationsData) {
- annotationsData.forEachNoInline((FunctionEntity function) {
- markAsNoInline(function);
- });
- annotationsData.forEachTryInline((FunctionEntity function) {
- markAsTryInline(function);
- });
- }
+ FunctionInlineCache(this._annotationsData) {}
/// Checks that [method] is the canonical representative for this method.
///
@@ -237,24 +229,14 @@
}
}
- void markAsNoInline(FunctionEntity element) {
- assert(checkFunction(element), failedAt(element));
- _noInlineFunctions.add(element);
- }
-
bool markedAsNoInline(FunctionEntity element) {
assert(checkFunction(element), failedAt(element));
- return _noInlineFunctions.contains(element);
- }
-
- void markAsTryInline(FunctionEntity element) {
- assert(checkFunction(element), failedAt(element));
- _tryInlineFunctions.add(element);
+ return _annotationsData.hasNoInline(element);
}
bool markedAsTryInline(FunctionEntity element) {
assert(checkFunction(element), failedAt(element));
- return _tryInlineFunctions.contains(element);
+ return _annotationsData.hasTryInline(element);
}
}