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

Unified Diff: compiler/java/com/google/dart/compiler/backend/js/JsNormalizer.java

Issue 9479013: Remove backends. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: More clean up Created 8 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: compiler/java/com/google/dart/compiler/backend/js/JsNormalizer.java
diff --git a/compiler/java/com/google/dart/compiler/backend/js/JsNormalizer.java b/compiler/java/com/google/dart/compiler/backend/js/JsNormalizer.java
deleted file mode 100644
index 5eeadf69bd1a994e6723f20d259080fb05c4c03a..0000000000000000000000000000000000000000
--- a/compiler/java/com/google/dart/compiler/backend/js/JsNormalizer.java
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.google.dart.compiler.backend.js;
-
-import com.google.dart.compiler.backend.js.ast.JsBinaryOperation;
-import com.google.dart.compiler.backend.js.ast.JsBinaryOperator;
-import com.google.dart.compiler.backend.js.ast.JsContext;
-import com.google.dart.compiler.backend.js.ast.JsExpression;
-import com.google.dart.compiler.backend.js.ast.JsModVisitor;
-import com.google.dart.compiler.backend.js.ast.JsPostfixOperation;
-import com.google.dart.compiler.backend.js.ast.JsPrefixOperation;
-import com.google.dart.compiler.backend.js.ast.JsProgram;
-import com.google.dart.compiler.backend.js.ast.JsUnaryOperation;
-import com.google.dart.compiler.backend.js.ast.JsUnaryOperator;
-
-/**
- * Fixes any semantic errors introduced by JS AST gen.
- *
- * <ul>
- * <li>Creating clinit calls can put comma expressions as lvalues; the modifying
- * operation must be moved inside the comma expression to the last argument.</li>
- * </ul>
- */
-public class JsNormalizer {
-
- /**
- * Resolves any unresolved JsNameRefs.
- */
- private static class JsNormalizing extends JsModVisitor {
-
- @Override
- public void endVisit(JsBinaryOperation x, JsContext ctx) {
- maybeShuffleModifyingBinary(x, ctx);
- }
-
- @Override
- public void endVisit(JsPostfixOperation x, JsContext ctx) {
- maybeShuffleModifyingUnary(x, ctx);
- }
-
- @Override
- public void endVisit(JsPrefixOperation x, JsContext ctx) {
- maybeShuffleModifyingUnary(x, ctx);
- }
-
- /**
- * Due to the way clinits are constructed, you can end up with a comma
- * operation as the argument to a modifying operation, which is illegal.
- * Juggle things to put the operator inside of the comma expression.
- */
- private void maybeShuffleModifyingBinary(JsBinaryOperation x, JsContext ctx) {
- JsBinaryOperator myOp = x.getOperator();
- JsExpression lhs = x.getArg1();
-
- if (myOp.isAssignment() && (lhs instanceof JsBinaryOperation)) {
- // Find the rightmost comma operation
- JsBinaryOperation curLhs = (JsBinaryOperation) lhs;
- assert (curLhs.getOperator() == JsBinaryOperator.COMMA);
- while (curLhs.getArg2() instanceof JsBinaryOperation) {
- curLhs = (JsBinaryOperation) curLhs.getArg2();
- assert (curLhs.getOperator() == JsBinaryOperator.COMMA);
- }
- // curLhs is now the rightmost comma operation; slide our operation in
- x.setArg1(curLhs.getArg2());
- curLhs.setArg2(x);
- // replace myself with the comma expression
- ctx.replaceMe(lhs);
- }
- }
-
- /**
- * Due to the way clinits are constructed, you can end up with a comma
- * operation as the argument to a modifying operation, which is illegal.
- * Juggle things to put the operator inside of the comma expression.
- */
- private void maybeShuffleModifyingUnary(JsUnaryOperation x, JsContext ctx) {
- JsUnaryOperator myOp = x.getOperator();
- JsExpression arg = x.getArg();
- if (myOp.isModifying() && (arg instanceof JsBinaryOperation)) {
- // Find the rightmost comma operation
- JsBinaryOperation curArg = (JsBinaryOperation) arg;
- assert (curArg.getOperator() == JsBinaryOperator.COMMA);
- while (curArg.getArg2() instanceof JsBinaryOperation) {
- curArg = (JsBinaryOperation) curArg.getArg2();
- assert (curArg.getOperator() == JsBinaryOperator.COMMA);
- }
- // curArg is now the rightmost comma operation; slide our operation in
- x.setArg(curArg.getArg2());
- curArg.setArg2(x);
- // replace myself with the comma expression
- ctx.replaceMe(arg);
- }
- }
- }
-
- public static void exec(JsProgram program) {
- new JsNormalizer(program).execImpl();
- }
-
- private final JsProgram program;
-
- private JsNormalizer(JsProgram program) {
- this.program = program;
- }
-
- private void execImpl() {
- JsNormalizing normalizer = new JsNormalizing();
- normalizer.accept(program);
- }
-}

Powered by Google App Engine
This is Rietveld 408576698