)]}'
{
  "commit": "9da4d05b62d7d3cb48ccd03de7b4ad676e2318bd",
  "tree": "d5c034772419292b34f58bbd65a81e5eb3e47323",
  "parents": [
    "16bc8388ca4d4a303d500dd6a2f64ec68ac31bae"
  ],
  "author": {
    "name": "John Stalcup",
    "email": "stalcup@google.com",
    "time": "Tue Sep 02 18:41:30 2014 -0700"
  },
  "committer": {
    "name": "John Stalcup",
    "email": "stalcup@google.com",
    "time": "Tue Sep 02 18:41:30 2014 -0700"
  },
  "message": "Makes SDM+perFileCompile correctly handle switching browsers.\n\nPreviously the MinimalRebuildCache stored some cache information on a\nper-permutation basis using permutation ID. But since SDM always\ncompiled just 1 permutation (even when switching browsers) the compile\nprocess always ended up (improperly) using the same cache info.\n\nGot rid of the nested MinimalRebuildCache.PermutationRebuildCache class.\n\nSwitched to SDM managing a map of BindingPropertySet \u003c-\u003e\nMinimalRebuildCache pairs.\n\nPreviously the \"unit cache miss\" process was being reused to mark \"known\nmodified types\" in the MinimalRebuildCache, but this was insufficient\nwhen switching between browsers since it would notice just the types\nchanged since the last compile as opposed to the types changed since the\nlast compile specifically for this set of binding properties. This was\ncorrected by changing to have each MinimalRebuildCache instance\ninternally track it\u0027s own view of disk type modification times and\ngenerated type content hashes.\n\nAs a side effect this changed modified type detection from being a side\neffect of CompilationStateBuilder.doBuildFrom() to a side effect of\nPrecompile.precompile(), which created a need to move a lot of test\nassertions from modified/stale types from CompilationStateBuilderTest to\nCompilerTest. The assertions are much more detailed.\n\nAdded a noop subclass of MinimalRebuildCache to save time in regular\nmonolithic compiles.\n\nChange-Id: I73001450d96749380e553cd70579ee9828e9620d\nReview-Link: https://gwt-review.googlesource.com/#/c/8983/\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "44b019f3c9a15222bc4e38e126c15c69344da0b3",
      "old_mode": 33188,
      "old_path": "dev/BUILD",
      "new_id": "64c0709cbc7b1db2fd58c6d38098ec2056f99264",
      "new_mode": 33188,
      "new_path": "dev/BUILD"
    },
    {
      "type": "modify",
      "old_id": "93c91d4e4b34325e17592536f87565835beecc17",
      "old_mode": 33188,
      "old_path": "dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java",
      "new_id": "07230f104a9da880ee0071f477bed8a3a2acca71",
      "new_mode": 33188,
      "new_path": "dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java"
    },
    {
      "type": "modify",
      "old_id": "dd2759bd08acad409b4e0fc570a47f70b9ce5485",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/Compiler.java",
      "new_id": "2141d6d2e52053a11b3472b943471e7ba0e47800",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/Compiler.java"
    },
    {
      "type": "modify",
      "old_id": "4cdb863cd42c3d86d4f6093fc603724149c0ad16",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/MinimalRebuildCache.java",
      "new_id": "2fae39205576468503d1e6e8cab7fb154f6a87f4",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/MinimalRebuildCache.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c35f7b1ed85f971d8a89c10a11c270a87cc8875f",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/NullRebuildCache.java"
    },
    {
      "type": "modify",
      "old_id": "b5e98466ca5b0ad9a5f637e6fb160a380dafb951",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/Precompile.java",
      "new_id": "5d3d3aba59531d900b2f00468fd07954d91a3e41",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/Precompile.java"
    },
    {
      "type": "modify",
      "old_id": "9bd7dec6ab764146ff163ee331c1167609f05825",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java",
      "new_id": "ccd08aa3164cee9c044a269e3ed6d535a7cce5aa",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "b18ffb9dc8dee57bee6c2f09643bb0fd2878de82",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/AstConstructor.java",
      "new_id": "c4dc3e44315057c67f7f4920744e4d1285bb61bd",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/AstConstructor.java"
    },
    {
      "type": "modify",
      "old_id": "156ab9f7a916652bf56b4c66cd431506f70bec39",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java",
      "new_id": "252f1835e8026bd996e2846e01d5fe7a4723a847",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java"
    },
    {
      "type": "modify",
      "old_id": "381c58c5e13c0d3a4ac389878b039b6de13146c2",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/MonolithicJavaToJavaScriptCompiler.java",
      "new_id": "1e8fcec6a00e3a45bbd5ddde8457ade37dafd1a6",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/MonolithicJavaToJavaScriptCompiler.java"
    },
    {
      "type": "modify",
      "old_id": "bd9bbf871105838e5065f36ddce2b7a0bfc2170b",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java",
      "new_id": "6a4d3d18d3187e242f7ff6ecb45d7a2979754875",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java"
    },
    {
      "type": "modify",
      "old_id": "b8b02b526a29a1f4d4a13f88a25188c9526493a2",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/JsTypeLinker.java",
      "new_id": "a639adcb3aec8c799f7759883ce4ef2e1539421a",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/JsTypeLinker.java"
    },
    {
      "type": "modify",
      "old_id": "9f7254ebbf37ab8e95e80fb83ead2b96c8b24237",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/TypeReferencesRecorder.java",
      "new_id": "80e3c49320c44346c17a148000f0f27ff231f6e1",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/TypeReferencesRecorder.java"
    },
    {
      "type": "modify",
      "old_id": "5483c478e2a950b634ea5346b44e8fe058fbd22f",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java",
      "new_id": "e7ebb942d7017a21452e6d43df53ed6b407577a4",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java"
    },
    {
      "type": "modify",
      "old_id": "ba3654ff814c5880beaa25410f877c631b30f772",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/CompilerTest.java",
      "new_id": "3ed8650a49e0a30a5adcc844fbc2c6ba6174ae3e",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/CompilerTest.java"
    },
    {
      "type": "modify",
      "old_id": "d5ae46b235efcd8d661155890c4051d92ae2566f",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/MinimalRebuildCacheTest.java",
      "new_id": "65a50fb2c69bded3e7107aa251611a2c9feab00b",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/MinimalRebuildCacheTest.java"
    },
    {
      "type": "modify",
      "old_id": "a7465f0ffc47405237a1f7763713b34848f399da",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/javac/CompilationStateTest.java",
      "new_id": "481c8c308132e4093c17f9148781543327e5f293",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/javac/CompilationStateTest.java"
    },
    {
      "type": "modify",
      "old_id": "dec40bff2ffde9f579447e3616945db1000eb1ae",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/jjs/impl/JsTypeLinkerTest.java",
      "new_id": "286e1b40edaf83e7a6a693bda70b6fdba88beefc",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/jjs/impl/JsTypeLinkerTest.java"
    },
    {
      "type": "modify",
      "old_id": "1397e4585bd1ebb363f0a9e1bc4e2a77bf2225cc",
      "old_mode": 33188,
      "old_path": "user/test/com/google/gwt/core/ext/SingleScriptLinkerTest.gwt.xml",
      "new_id": "fb9c51982ea9f2470a7ebbbeb3cc39f0261a0259",
      "new_mode": 33188,
      "new_path": "user/test/com/google/gwt/core/ext/SingleScriptLinkerTest.gwt.xml"
    },
    {
      "type": "modify",
      "old_id": "4c7dc732eb5d9b3d76420c45b7ab2cc96025c9e1",
      "old_mode": 33188,
      "old_path": "user/test/com/google/gwt/dev/jjs/CodeSplitterCollapsedPropertiesTest.gwt.xml",
      "new_id": "bb900ccd1c017917adad519acd0b393de4fe612d",
      "new_mode": 33188,
      "new_path": "user/test/com/google/gwt/dev/jjs/CodeSplitterCollapsedPropertiesTest.gwt.xml"
    }
  ]
}
