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

Unified Diff: sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart

Issue 12299008: Stop resolving all of js_helper unconditionally. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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: sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
===================================================================
--- sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart (revision 18614)
+++ sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart (working copy)
@@ -69,6 +69,8 @@
// TODO(ngeoffray): remove this field.
Set<ClassElement> instantiatedClasses;
+ JavaScriptBackend get backend => compiler.backend;
+
String get _ => compiler.enableMinification ? "" : " ";
String get n => compiler.enableMinification ? "" : "\n";
String get N => compiler.enableMinification ? "\n" : ";\n";
@@ -640,8 +642,7 @@
List addLazyInitializerLogic() {
String isolate = namer.CURRENT_ISOLATE;
- JavaScriptBackend backend = compiler.backend;
- String cyclicThrow = namer.isolateAccess(backend.cyclicThrowHelper);
+ String cyclicThrow = namer.isolateAccess(backend.getCyclicThrowHelper());
return [
// var sentinelUndefined = {};
@@ -777,7 +778,6 @@
if (alreadyGenerated.contains(invocationName)) return;
alreadyGenerated.add(invocationName);
- JavaScriptBackend backend = compiler.backend;
bool isInterceptorClass =
backend.isInterceptorClass(member.getEnclosingClass());
@@ -1012,7 +1012,6 @@
|| member.isGenerativeConstructorBody()
|| member.isAccessor()) {
if (member.isAbstract(compiler)) return;
- JavaScriptBackend backend = compiler.backend;
jsAst.Expression code = backend.generatedCode[member];
if (code == null) return;
builder.addProperty(namer.getName(member), code);
@@ -1040,7 +1039,6 @@
void emitInstanceMembers(ClassElement classElement,
ClassBuilder builder) {
assert(invariant(classElement, classElement.isDeclaration));
- JavaScriptBackend backend = compiler.backend;
if (classElement == backend.objectInterceptorClass) {
emitInterceptorMethods(builder);
// The ObjectInterceptor does not have any instance methods.
@@ -1138,7 +1136,6 @@
}
void emitRuntimeClassesAndTests(CodeBuffer buffer) {
- JavaScriptBackend backend = compiler.backend;
RuntimeTypeInformation rti = backend.rti;
TypeChecks typeChecks = rti.getRequiredChecks();
@@ -1324,7 +1321,7 @@
DartType type = member.computeType(compiler);
// TODO(ahe): Generate a dynamic type error here.
if (type.element.isErroneous()) return;
- SourceString helper = compiler.backend.getCheckedModeHelper(type);
+ SourceString helper = backend.getCheckedModeHelper(type);
FunctionElement helperElement = compiler.findHelper(helper);
String helperName = namer.isolateAccess(helperElement);
List<jsAst.Expression> arguments = <jsAst.Expression>[js['v']];
@@ -1489,7 +1486,6 @@
}
void emitInterceptorMethods(ClassBuilder builder) {
- JavaScriptBackend backend = compiler.backend;
// Emit forwarders for the ObjectInterceptor class. We need to
// emit all possible sends on intercepted methods.
for (Selector selector in
@@ -1540,8 +1536,7 @@
emitSubstitution(cls);
}
- JavaScriptBackend jsBackend = compiler.backend;
- RuntimeTypeInformation rti = jsBackend.rti;
+ RuntimeTypeInformation rti = backend.rti;
ClassElement superclass = cls.superclass;
bool haveSameTypeVariables(ClassElement a, ClassElement b) {
@@ -1656,8 +1651,6 @@
// constructor that always throws. We never need to emit it.
unneededClasses.add(compiler.boolClass);
- JavaScriptBackend backend = compiler.backend;
-
// Go over specialized interceptors and then constants to know which
// interceptors are needed.
Set<ClassElement> needed = new Set<ClassElement>();
@@ -1748,7 +1741,6 @@
}
void emitStaticFunctions(CodeBuffer buffer) {
- JavaScriptBackend backend = compiler.backend;
bool isStaticFunction(Element element) =>
!element.isInstanceMember() && !element.isField();
@@ -1859,7 +1851,6 @@
String extraArg = null;
// Methods on interceptor classes take an extra parameter, which is the
// actual receiver of the call.
- JavaScriptBackend backend = compiler.backend;
bool inInterceptor = backend.isInterceptorClass(member.getEnclosingClass());
if (inInterceptor) {
cache = interceptorClosureCache;
@@ -1983,7 +1974,6 @@
DefineStubFunction defineStub) {
assert(invariant(member, member.isDeclaration));
LibraryElement memberLibrary = member.getLibrary();
- JavaScriptBackend backend = compiler.backend;
// If the class is an interceptor class, the stub gets the
// receiver explicitely and we need to pass it to the getter call.
bool isInterceptorClass =
@@ -2062,7 +2052,6 @@
ConstantHandler handler = compiler.constantHandler;
List<VariableElement> lazyFields =
handler.getLazilyInitializedFieldsForEmission();
- JavaScriptBackend backend = compiler.backend;
if (!lazyFields.isEmpty) {
needsLazyInitializer = true;
for (VariableElement element in Elements.sortedByPosition(lazyFields)) {
@@ -2388,8 +2377,6 @@
}
jsAst.VariableUse receiver = js['receiver'];
- JavaScriptBackend backend = compiler.backend;
-
/**
* Build a JavaScrit AST node for doing a type check on
* [cls]. [cls] must be an interceptor class.
@@ -2502,7 +2489,6 @@
* Emit all versions of the [:getInterceptor:] method.
*/
void emitGetInterceptorMethods(CodeBuffer buffer) {
- JavaScriptBackend backend = compiler.backend;
// If no class needs to be intercepted, just return.
if (backend.objectInterceptorClass == null) return;
String objectName = namer.isolateAccess(backend.objectInterceptorClass);
@@ -2532,7 +2518,6 @@
int comparison = _compareSelectorNames(selector1, selector2);
if (comparison != 0) return comparison;
- JavaScriptBackend backend = compiler.backend;
Set<ClassElement> classes1 = backend.getInterceptedClassesOn(selector1);
Set<ClassElement> classes2 = backend.getInterceptedClassesOn(selector2);
if (classes1.length != classes2.length) {
@@ -2546,7 +2531,6 @@
}
void emitOneShotInterceptors(CodeBuffer buffer) {
- JavaScriptBackend backend = compiler.backend;
for (Selector selector in
backend.oneShotInterceptors.toList()..sort(_compareSelectors)) {
Set<ClassElement> classes = backend.getInterceptedClassesOn(selector);

Powered by Google App Engine
This is Rietveld 408576698