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

Unified Diff: sdk/lib/_internal/compiler/implementation/ssa/builder.dart

Issue 247863005: Revert "Insert checks before deferred calls and accesses." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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: sdk/lib/_internal/compiler/implementation/ssa/builder.dart
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
index 91b0977e722bdb92b70739138ee4b321fb4c70bb..0e43ef7ecdcd2097232ccbac5545d3c703e8d34e 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
@@ -1172,8 +1172,9 @@ class SsaBuilder extends ResolvedVisitor {
bool meetsHardConstraints() {
// Don't inline from one output unit to another. If something is deferred
// it is to save space in the loading code.
- if (!compiler.deferredLoadTask
- .inSameOutputUnit(element,compiler.currentElement)) {
+ var getOutputUnit = compiler.deferredLoadTask.outputUnitForElement;
+ if (getOutputUnit(element) !=
+ getOutputUnit(compiler.currentElement)) {
return false;
}
if (compiler.disableInlining) return false;
@@ -2928,24 +2929,6 @@ class SsaBuilder extends ResolvedVisitor {
pushInvokeDynamic(send, selector, [receiver]);
}
- /// Inserts a call to checkDeferredIsLoaded if the send has a prefix that
- /// resolves to a deferred library.
- void generateIsDeferredLoadedCheckIfNeeded(ast.Send node) {
- DeferredLoadTask deferredTask = compiler.deferredLoadTask;
- PrefixElement prefixElement =
- deferredTask.deferredPrefixElement(node, elements);
- if (prefixElement != null) {
- String loadId =
- deferredTask.importDeferName[prefixElement.deferredImport];
- HInstruction loadIdConstant = addConstantString(loadId);
- String uri = prefixElement.deferredImport.uri.dartString.slowToString();
- HInstruction uriConstant = addConstantString(uri);
- Element helper = backend.getCheckDeferredIsLoaded();
- pushInvokeStatic(node, helper, [loadIdConstant, uriConstant]);
- pop();
- }
- }
-
void generateGetter(ast.Send send, Element element) {
if (element != null && element.isForeign(compiler)) {
visitForeignGetter(send);
@@ -3938,8 +3921,6 @@ class SsaBuilder extends ResolvedVisitor {
handleNewSend(ast.NewExpression node) {
ast.Send send = node.send;
- generateIsDeferredLoadedCheckIfNeeded(send);
-
bool isFixedList = false;
bool isFixedListConstructorCall =
Elements.isFixedListConstructorCall(elements[send], send, compiler);
@@ -4191,7 +4172,6 @@ class SsaBuilder extends ResolvedVisitor {
return;
}
invariant(element, !element.isGenerativeConstructor());
- generateIsDeferredLoadedCheckIfNeeded(node);
if (element.isFunction()) {
var inputs = <HInstruction>[];
// TODO(5347): Try to avoid the need for calling [implementation] before
@@ -4267,7 +4247,6 @@ class SsaBuilder extends ResolvedVisitor {
}
visitGetterSend(ast.Send node) {
- generateIsDeferredLoadedCheckIfNeeded(node);
generateGetter(node, elements[node]);
}
@@ -4536,7 +4515,6 @@ class SsaBuilder extends ResolvedVisitor {
}
visitSendSet(ast.SendSet node) {
- generateIsDeferredLoadedCheckIfNeeded(node);
Element element = elements[node];
if (!Elements.isUnresolved(element) && element.impliesType()) {
ast.Identifier selector = node.selector;

Powered by Google App Engine
This is Rietveld 408576698