)]}'
{
  "commit": "d55fe87e7e958e069704f4b9d65da3cc1aec97c7",
  "tree": "f6ff02138940b68082c56c419851ee7ceb91bc9c",
  "parents": [
    "1ab69cc23debc7a576b83e7f8fc964e230b36a31"
  ],
  "author": {
    "name": "scottb@google.com",
    "email": "scottb@google.com@8db76d5a-ed1c-0410-87a9-c151d255dfc7",
    "time": "Tue Apr 22 21:15:13 2008 +0000"
  },
  "committer": {
    "name": "scottb@google.com",
    "email": "scottb@google.com@8db76d5a-ed1c-0410-87a9-c151d255dfc7",
    "time": "Tue Apr 22 21:15:13 2008 +0000"
  },
  "message": "Lots of static evaluation rules, mostly on the Java trees.\n\nJsStaticEval: changes !!x to x within any boolean context\n\nGenerateJavaAST: change if (x \u003d\u003d null) to if (!x), if (x !\u003d null) to if (!!x) (except where x can be String)\n\nDeadCodeElimination:\n- constant fold all operations on all types of literals\n- !\u003d and \u003d\u003d where on argument is true or false\n- +/- 0\n- * or / on 1, -1\n- x*0 -\u003e 0\n- 0-x -\u003e -x\n- if (!x) foo; else bar;  -\u003e  if (x) bar; else foo;\n- (!x) ? foo : bar;  -\u003e  x ? bar : foo\n- ^ with a literal true or false\n- \"- -x\"  -\u003e  \"x\"\n- \u003c\u003c/\u003e\u003e/\u003e\u003e\u003e with an argument of 0\n\nIssue: 1511\nPatch by: spoon (w/ minor mods me JsStaticEval)\nReview by: me\n\n\ngit-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2515 8db76d5a-ed1c-0410-87a9-c151d255dfc7\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c5cfc9a14d932c2d323e371ac19d098b05ba42e8",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java",
      "new_id": "1f1b0194e346fdce3aa4f5ce2235e661b55f358a",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java"
    },
    {
      "type": "modify",
      "old_id": "6fb3a68783c998ca2ce37333190515d670eda3fb",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java",
      "new_id": "f027b4debb421d540d2df250f87c3589eb30aabf",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java"
    },
    {
      "type": "modify",
      "old_id": "daaa3b309bb072ddf8dbdb43af53747ccc6fd39d",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/js/JsStaticEval.java",
      "new_id": "79f6f085d00ceea6e877c9d396ec643513f3865d",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/js/JsStaticEval.java"
    },
    {
      "type": "modify",
      "old_id": "123d6aeb0d88d16fcdf881d8c3dd1ad6c02e3e44",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/js/ast/JsIf.java",
      "new_id": "fccefaec079be34c0466dc51c4f4d0e47b18a8ec",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/js/ast/JsIf.java"
    },
    {
      "type": "modify",
      "old_id": "9f4519f322ba0d8b287013606c61e16166b4e651",
      "old_mode": 33188,
      "old_path": "user/test/com/google/gwt/dev/jjs/CompilerSuite.java",
      "new_id": "9cec9d4416475c2050532dbc95b734a17d5214e7",
      "new_mode": 33188,
      "new_path": "user/test/com/google/gwt/dev/jjs/CompilerSuite.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e1d360354e39157c6667eaa04dd04290b5069da",
      "new_mode": 33188,
      "new_path": "user/test/com/google/gwt/dev/jjs/test/JStaticEvalTest.java"
    },
    {
      "type": "modify",
      "old_id": "a4e5ac26a526fe0a50d721944b4e2aa7727045ea",
      "old_mode": 33188,
      "old_path": "user/test/com/google/gwt/dev/jjs/test/JsStaticEvalTest.java",
      "new_id": "1f58ab56d9e853f784025662aecbcfea350fac59",
      "new_mode": 33188,
      "new_path": "user/test/com/google/gwt/dev/jjs/test/JsStaticEvalTest.java"
    }
  ]
}
