)]}'
{
  "commit": "bbca754a63fb1e80b4d0f034aa26538f3a8a2a26",
  "tree": "39cdbbe77f9a3b3f012609d2036b7fc6c45bf312",
  "parents": [
    "6ca7d2b6bfa9e4bca707240208bba6612d58719d"
  ],
  "author": {
    "name": "Jim Stichnoth",
    "email": "stichnot@chromium.org",
    "time": "Wed Feb 11 16:08:31 2015 -0800"
  },
  "committer": {
    "name": "Jim Stichnoth",
    "email": "stichnot@chromium.org",
    "time": "Wed Feb 11 16:08:31 2015 -0800"
  },
  "message": "Subzero: Emit functions and global initializers in a separate thread.\n\n(This is a continuation of https://codereview.chromium.org/876083007/ .)\n\nEmission is done in a separate thread when -threads\u003dN with N\u003e0 is specified.  This includes both functions and global initializers.\n\nEmission is deterministic.  The parser assigns sequence numbers, and the emitter thread reassembles work units into their original order, regardless of the number of threads.\n\nDump output, however, is not intended to be in deterministic, reassembled order.  As such, lit tests that test dump output (i.e., \u0027-verbose inst\u0027) are explicitly run with -threads\u003d0.\n\nFor -elf-writer and -ias\u003d1, the translator thread invokes Cfg::emitIAS() and the assembler buffer is passed to the emitter thread.  For -ias\u003d0, the translator thread passed the Cfg to the emitter thread which then invokes Cfg::emit() to produce the textual asm.\n\nMinor cleanup along the way:\n  * Removed Flags from the Ice::Translator object and ctor, since it was redundant with Ctx-\u003egetFlags().\n  * Cfg::getAssembler\u003c\u003e is the same as Cfg::getAssembler\u003cAssembler\u003e and is useful for just passing the assembler around.\n  * Removed the redundant Ctx argument from TargetDataLowering::lowerConstants() .\n\nBUG\u003d https://code.google.com/p/nativeclient/issues/detail?id\u003d4075\nR\u003djvoung@chromium.org\n\nReview URL: https://codereview.chromium.org/916653004\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8f42561ec9b45c86a40c1437a04020fe58d0024a",
      "old_mode": 33188,
      "old_path": "Makefile.standalone",
      "new_id": "060a014877870c8c0ec8a8acdfd8a98cc00b7e13",
      "new_mode": 33188,
      "new_path": "Makefile.standalone"
    },
    {
      "type": "modify",
      "old_id": "72925ccc3380eba744c3fa53babb56b7ca9d545d",
      "old_mode": 33261,
      "old_path": "pydir/run-llvm2ice.py",
      "new_id": "3be4e0512ae979b53dd8eaf1ca76b8d9562787d8",
      "new_mode": 33261,
      "new_path": "pydir/run-llvm2ice.py"
    },
    {
      "type": "modify",
      "old_id": "6526da21c65d2ae39d6d5d28990ead98c633e714",
      "old_mode": 33188,
      "old_path": "src/IceCfg.cpp",
      "new_id": "bae6c7752942bccf939a7ecaf7edce19355fe0de",
      "new_mode": 33188,
      "new_path": "src/IceCfg.cpp"
    },
    {
      "type": "modify",
      "old_id": "605dcf71304f39a1d62c1e5e1512c77321933088",
      "old_mode": 33188,
      "old_path": "src/IceCfg.h",
      "new_id": "737bb64fa283d421e16041cb53a817327896c5d7",
      "new_mode": 33188,
      "new_path": "src/IceCfg.h"
    },
    {
      "type": "modify",
      "old_id": "077866b0388d6550f6002160cf88246eae3b331b",
      "old_mode": 33188,
      "old_path": "src/IceCfgNode.cpp",
      "new_id": "d269ee2e1423cdfe4b642558d427bd1e9e4a8207",
      "new_mode": 33188,
      "new_path": "src/IceCfgNode.cpp"
    },
    {
      "type": "modify",
      "old_id": "774a40f9d74af6a8867e617ba495bd67dfd8f988",
      "old_mode": 33188,
      "old_path": "src/IceClFlags.h",
      "new_id": "43527b80d7bae930aa4a2a4daf6a106a05e9aaa6",
      "new_mode": 33188,
      "new_path": "src/IceClFlags.h"
    },
    {
      "type": "modify",
      "old_id": "7cc8d5adc464ea07b59ffcc27f0a297aeb940be7",
      "old_mode": 33188,
      "old_path": "src/IceConverter.cpp",
      "new_id": "cc523fa541b0a2d185765cc0e3924107354df6b4",
      "new_mode": 33188,
      "new_path": "src/IceConverter.cpp"
    },
    {
      "type": "modify",
      "old_id": "623a4f047a0d47020960a246517672b2a91f7f5b",
      "old_mode": 33188,
      "old_path": "src/IceConverter.h",
      "new_id": "26b647ce263fcef27e42c87dfd9d636d6ec1eba8",
      "new_mode": 33188,
      "new_path": "src/IceConverter.h"
    },
    {
      "type": "modify",
      "old_id": "3ca8524bb0d7338d6f5e91e37c3cc971eae67627",
      "old_mode": 33188,
      "old_path": "src/IceGlobalContext.cpp",
      "new_id": "d0f84d0665208f57e46eaf025997f381c47a191d",
      "new_mode": 33188,
      "new_path": "src/IceGlobalContext.cpp"
    },
    {
      "type": "modify",
      "old_id": "280bbd0e399e7ea15965ed4074fbd98e38bac500",
      "old_mode": 33188,
      "old_path": "src/IceGlobalContext.h",
      "new_id": "f7f5a5afe6168c469f788091feb094d4a5de01c1",
      "new_mode": 33188,
      "new_path": "src/IceGlobalContext.h"
    },
    {
      "type": "modify",
      "old_id": "8b7c2577875c16b8b5e454191a6ee5e261d85968",
      "old_mode": 33188,
      "old_path": "src/IceTargetLowering.cpp",
      "new_id": "8169ae1f1a5fc71299659c3270bde8e6a558d7e2",
      "new_mode": 33188,
      "new_path": "src/IceTargetLowering.cpp"
    },
    {
      "type": "modify",
      "old_id": "2dda5c5126311ece3edf2416a43aded20ebdeee9",
      "old_mode": 33188,
      "old_path": "src/IceTargetLowering.h",
      "new_id": "92eed51197efe6a96f1c9e3251be0e82c60c3875",
      "new_mode": 33188,
      "new_path": "src/IceTargetLowering.h"
    },
    {
      "type": "modify",
      "old_id": "9fd0106a39cbbbb1530d85bd0d5153ab0d764ee7",
      "old_mode": 33188,
      "old_path": "src/IceTargetLoweringX8632.cpp",
      "new_id": "51f1f3b81bfd14a680d953be8630589cd28a25ce",
      "new_mode": 33188,
      "new_path": "src/IceTargetLoweringX8632.cpp"
    },
    {
      "type": "modify",
      "old_id": "fca29c43d7f4eb65f20f1cc842a26aea0ffeeb9a",
      "old_mode": 33188,
      "old_path": "src/IceTargetLoweringX8632.h",
      "new_id": "543183ed1139aeadfab9a975dda8b8bca53ba592",
      "new_mode": 33188,
      "new_path": "src/IceTargetLoweringX8632.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5576abb2ded87b45f432e446ca5703b6ce7fdafc",
      "new_mode": 33188,
      "new_path": "src/IceThreading.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9ae3b670328525aebef538fe24cf87511b03dd43",
      "new_mode": 33188,
      "new_path": "src/IceThreading.h"
    },
    {
      "type": "modify",
      "old_id": "c47769d0a4293410755831965e3c8eacb5c40350",
      "old_mode": 33188,
      "old_path": "src/IceTranslator.cpp",
      "new_id": "c78bbcb02563e0ac890a825827871c1aabe13515",
      "new_mode": 33188,
      "new_path": "src/IceTranslator.cpp"
    },
    {
      "type": "modify",
      "old_id": "6b35b25f97ae43167f18ed773227e2cb57c352f5",
      "old_mode": 33188,
      "old_path": "src/IceTranslator.h",
      "new_id": "bc9a933dd22b7063bd19a9698d2fa5368e01d8e0",
      "new_mode": 33188,
      "new_path": "src/IceTranslator.h"
    },
    {
      "type": "modify",
      "old_id": "dc3a5ff1d77ef160d2b321038f17db3ed64cdbde",
      "old_mode": 33188,
      "old_path": "src/IceUtils.h",
      "new_id": "7b1ab81bd08b5b6f6a724ff8ea63276829b4097f",
      "new_mode": 33188,
      "new_path": "src/IceUtils.h"
    },
    {
      "type": "modify",
      "old_id": "48f47a95b4b0197f889d588e93107667fee8b885",
      "old_mode": 33188,
      "old_path": "src/PNaClTranslator.cpp",
      "new_id": "a0ce417058f1b20826dfff16db73be629698a98c",
      "new_mode": 33188,
      "new_path": "src/PNaClTranslator.cpp"
    },
    {
      "type": "modify",
      "old_id": "e818aaf56a5dc31abc20cfc0055331d546fc7c24",
      "old_mode": 33188,
      "old_path": "src/PNaClTranslator.h",
      "new_id": "1bd4d5b97c175275c01b0ff6ab9747a304a7b841",
      "new_mode": 33188,
      "new_path": "src/PNaClTranslator.h"
    },
    {
      "type": "modify",
      "old_id": "40f50fd5b1a11f3d0d79dffc40926124a98f200c",
      "old_mode": 33188,
      "old_path": "src/assembler.h",
      "new_id": "dfd8cd123bfdc09418d095c80666b1be53c322f8",
      "new_mode": 33188,
      "new_path": "src/assembler.h"
    },
    {
      "type": "modify",
      "old_id": "f83b253c30c1f5b06a39685a83892ed25a9f9447",
      "old_mode": 33188,
      "old_path": "src/llvm2ice.cpp",
      "new_id": "935cb640aac642d280839d79a4f519d97cbadc58",
      "new_mode": 33188,
      "new_path": "src/llvm2ice.cpp"
    },
    {
      "type": "modify",
      "old_id": "16069167c4b6064e5a80e6103debeb96b42f1bd5",
      "old_mode": 33188,
      "old_path": "tests_lit/llvm2ice_tests/arith-opt.ll",
      "new_id": "5ec805df3ce93bef0597075da1355a5ed25baaab",
      "new_mode": 33188,
      "new_path": "tests_lit/llvm2ice_tests/arith-opt.ll"
    },
    {
      "type": "modify",
      "old_id": "3e763e5249331c9ed6b46536e5661b42287fb578",
      "old_mode": 33188,
      "old_path": "tests_lit/llvm2ice_tests/branch-simple.ll",
      "new_id": "5f821d8202eb40621d8fa71977a0f84940df0424",
      "new_mode": 33188,
      "new_path": "tests_lit/llvm2ice_tests/branch-simple.ll"
    },
    {
      "type": "modify",
      "old_id": "318402252845e360c14af98ff1da3faefe65767a",
      "old_mode": 33188,
      "old_path": "tests_lit/llvm2ice_tests/globalrelocs.ll",
      "new_id": "41fa66df85fd86cb69e52ba4a4f13bcdaf5dcbe5",
      "new_mode": 33188,
      "new_path": "tests_lit/llvm2ice_tests/globalrelocs.ll"
    },
    {
      "type": "modify",
      "old_id": "a8be9f3e45938e90ed419c491ded7f9318c87dfc",
      "old_mode": 33188,
      "old_path": "tests_lit/llvm2ice_tests/load.ll",
      "new_id": "caf99e314e908331557f84d2fdff46413b824fe3",
      "new_mode": 33188,
      "new_path": "tests_lit/llvm2ice_tests/load.ll"
    },
    {
      "type": "modify",
      "old_id": "ea38e3d0715b1bb04543af9338f1983a69dcaafe",
      "old_mode": 33188,
      "old_path": "tests_lit/llvm2ice_tests/nacl-atomic-errors.ll",
      "new_id": "92de7aac5fa8c50cabbdfa0259c88221fe5562e0",
      "new_mode": 33188,
      "new_path": "tests_lit/llvm2ice_tests/nacl-atomic-errors.ll"
    },
    {
      "type": "modify",
      "old_id": "ae65a59bc7b0123299177b8f947a9a7daec7c7b4",
      "old_mode": 33188,
      "old_path": "tests_lit/llvm2ice_tests/store.ll",
      "new_id": "ec85020742667cabb1418bb04c33ad6c55316210",
      "new_mode": 33188,
      "new_path": "tests_lit/llvm2ice_tests/store.ll"
    },
    {
      "type": "modify",
      "old_id": "5ad603eedadddea96df4c56c45178e1376603e79",
      "old_mode": 33188,
      "old_path": "tests_lit/llvm2ice_tests/struct-arith.pnacl.ll",
      "new_id": "b3e4e360181abe175ed11fdae8a9d4d0ad237457",
      "new_mode": 33188,
      "new_path": "tests_lit/llvm2ice_tests/struct-arith.pnacl.ll"
    },
    {
      "type": "modify",
      "old_id": "623e3be5567fc41c5c3a4b33fa41cd9738004f4e",
      "old_mode": 33188,
      "old_path": "unittest/BitcodeMunge.cpp",
      "new_id": "650e8f17e32bae5f44dad13272ff792e5e765eec",
      "new_mode": 33188,
      "new_path": "unittest/BitcodeMunge.cpp"
    }
  ]
}
