)]}'
{
  "commit": "15f67570ced896f2eade9afac0cc8bfc755fe941",
  "tree": "3b27da4febd3e70230969c4be3204dec10ed3927",
  "parents": [
    "b071a2127e2384ff72eb470e50c65424b3b1bae3"
  ],
  "author": {
    "name": "cromwellian@google.com",
    "email": "cromwellian@google.com@8db76d5a-ed1c-0410-87a9-c151d255dfc7",
    "time": "Mon Mar 14 17:45:50 2011 +0000"
  },
  "committer": {
    "name": "cromwellian@google.com",
    "email": "cromwellian@google.com@8db76d5a-ed1c-0410-87a9-c151d255dfc7",
    "time": "Mon Mar 14 17:45:50 2011 +0000"
  },
  "message": "Overhaul overlay types.\n\nIn general, JSOs now treated like other Java types, except for cast/instanceof\nand instantiability.\n\n1) Eliminate JavaScriptObjectNormalizer. JSO subtypes are no longer rewritten as\nJSO, and trampoline functions not installed until after optimizations\n\n2) No longer copy every Single JSO interface onto JSO itself\n\n3) Teach TypeOracle about cross-cast JSO semantics\n\n4) Each compiler pass recomputes whether a JSO interface is dually implemented\n\n5) ControlFlowAnalyzer treats implicit casts to JSO as instantiations\n\n6) JsoDevirtualizer now devirtualizes any JSO subtype method (not just\njava.lang.Object)\n\n7) CastNormalizer treats non-dual Single JSO Interfaces as casts/instanceof\nagainst the concrete implementor.\n\nThis patch allows the compiler to effectively remove trampoline functions from\nsinglely implemented interface dispatches. It also rationalizes the way JSOs are\ntreated to bring them more in line with regular Java types by preserving their\ntype hierarchy in the AST.\n\nReview by: scottb@google.com\n\ngit-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9853 8db76d5a-ed1c-0410-87a9-c151d255dfc7\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "19bbba7a5f0a6833c21327a2166e1ca557dfe354",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java",
      "new_id": "cfc2998bff03306057d21ff872fac79650e97e13",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java"
    },
    {
      "type": "modify",
      "old_id": "09291fb6a3ce8e6d7ca89ab6455ac07337a2de06",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java",
      "new_id": "6be467b7f87607a7a58fc19256690e2b298dfcb0",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java"
    },
    {
      "type": "modify",
      "old_id": "9cbbf1a57c24eb6fa42474ecff0f9bd06a4fb1e2",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java",
      "new_id": "be297b452e96db194c4236924d789774262c010f",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java"
    },
    {
      "type": "modify",
      "old_id": "1ebe42e4a77c7d323d54bce21898f2b7cf709805",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java",
      "new_id": "d66ca40f5d0eb8d993fcfed00f245b034826bf12",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java"
    },
    {
      "type": "modify",
      "old_id": "017e69b17a41d40f213f7824ba214fc64d04e7d7",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/ImplementClassLiteralsAsFields.java",
      "new_id": "a02032cdd28d2016a8f8e2561e5b078d1c105f1e",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/ImplementClassLiteralsAsFields.java"
    },
    {
      "type": "delete",
      "old_id": "743b6b9c918524265fc80c49c04bb602d16e738e",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/JavaScriptObjectNormalizer.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "84cc483edddde2d01c603a4e104e4a67bb525997",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java",
      "new_id": "c39957923030bafdd1947a69666250879f620870",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java"
    },
    {
      "type": "modify",
      "old_id": "f96623d787feba718b1aa9436118417345fc920c",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/jjs/JavaAstConstructor.java",
      "new_id": "10db7b3692d703ece20d9b48cc90802ba0f55cc5",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/jjs/JavaAstConstructor.java"
    },
    {
      "type": "modify",
      "old_id": "03d746074c9de07930990d7054d68e3348516781",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/jjs/JjsTypeTest.java",
      "new_id": "21f979d6cef37d48bc105f1da17ec0f3ea035239",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/jjs/JjsTypeTest.java"
    },
    {
      "type": "modify",
      "old_id": "15406c0268c403182b882afe7015f7a46687f8e9",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzerTest.java",
      "new_id": "629139827fa02edc8075ef9d9ef51094eeb3c8bf",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzerTest.java"
    },
    {
      "type": "modify",
      "old_id": "ce1328b7a402b0c067a7286d71134ca320361ec5",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/jjs/impl/JJSTestBase.java",
      "new_id": "82f673f3681d9961dfb6a4314872b1542154ae63",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/jjs/impl/JJSTestBase.java"
    }
  ]
}
