Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Unified Diff: pkg/compiler/lib/src/ssa/builder.dart

Issue 912223003: Support @NoInlining in the ssa-builder. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: move TODO Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/ssa/builder.dart
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index 404ac8d0ee7e51974e1109818e29c17abc66ff63..40d87d147970ad8e7a8aaaf8fd493c7e93319a76 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -1337,7 +1337,7 @@ class SsaBuilder extends ResolvedVisitor {
// The call is on a path which is executed rarely, so inline only if it
// does not make the program larger.
if (isCalledOnce(element)) {
- return InlineWeeder.canBeInlined(function.node, -1, false);
+ return InlineWeeder.canBeInlined(function, -1, false);
}
// TODO(sra): Measure if inlining would 'reduce' the size. One desirable
// case we miss my doing nothing is inlining very simple constructors
@@ -1364,7 +1364,7 @@ class SsaBuilder extends ResolvedVisitor {
if (backend.functionsToAlwaysInline.contains(function)) {
// Inline this function regardless of it's size.
- assert(InlineWeeder.canBeInlined(function.node, -1, false,
+ assert(InlineWeeder.canBeInlined(function, -1, false,
allowLoops: true));
return true;
}
@@ -1387,9 +1387,8 @@ class SsaBuilder extends ResolvedVisitor {
useMaxInliningNodes = false;
}
bool canInline;
- ast.FunctionExpression functionNode = function.node;
canInline = InlineWeeder.canBeInlined(
- functionNode, maxInliningNodes, useMaxInliningNodes);
+ function, maxInliningNodes, useMaxInliningNodes);
if (canInline) {
backend.inlineCache.markAsInlinable(element, insideLoop: insideLoop);
} else {
@@ -6451,12 +6450,13 @@ class InlineWeeder extends ast.Visitor {
this.useMaxInliningNodes,
this.allowLoops);
- static bool canBeInlined(ast.FunctionExpression functionExpression,
+ static bool canBeInlined(FunctionElement function,
int maxInliningNodes,
bool useMaxInliningNodes,
{bool allowLoops: false}) {
InlineWeeder weeder =
new InlineWeeder(maxInliningNodes, useMaxInliningNodes, allowLoops);
+ ast.FunctionExpression functionExpression = function.node;
weeder.visit(functionExpression.initializers);
weeder.visit(functionExpression.body);
weeder.visit(functionExpression.asyncModifier);

Powered by Google App Engine
This is Rietveld 408576698