)]}'
{
  "log": [
    {
      "commit": "306057fd278d75bf3794bd5243a3b6652c487d18",
      "tree": "62652a97caace11e50408d15688ced3514039219",
      "parents": [
        "2d76b041be770102fc912effc398e629a18180d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 26 12:45:53 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 02 11:15:42 2013 -0800"
      },
      "message": "Support for deoptimization needed for debugging.\n\nThe deoptimization code is untested, and some sanity checks in the\ninstrumentation are disabled because they need debugging.\n\nChange-Id: I1b60a65a60bddc9b107ad4659da097b55ce901c3\n"
    },
    {
      "commit": "9b5aa6f2029d3dae305009ac72e44ca97ca7b638",
      "tree": "9e33e741ecd850304394b952e55e8ae809a1ba54",
      "parents": [
        "3235d00248f7b183b4f226a4f0de63673df0ac00"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 18 11:47:11 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 18 11:47:11 2012 -0800"
      },
      "message": "Locking and exception handling fixes for debugger/interpreter.\n\nChange-Id: I20223113355a2d7b5deb4658035be2f788765fc1\n"
    },
    {
      "commit": "14f0db92225d34622fa5cb1a6dc9287334aaf6c7",
      "tree": "7771b1fa7b9a3553d3ad220e45bea926819ab33c",
      "parents": [
        "4c5b265e66bebf890b6f9e53cddeb512774b1613"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 14 17:50:42 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 17 13:49:12 2012 -0800"
      },
      "message": "Fixes to interpreter and debugger for JDWP.\n\n- Fixed off-by-one error for MethodEndCodeIndex.\n- Changed first instance of dex_pc 0 in interpreter Execute to output\n  METHOD_ENTRY event.\n\nChange-Id: I4854cb7cbde0db53db23d8b1c5bb9f08bf8409f1\n"
    },
    {
      "commit": "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461",
      "tree": "2350745da33df6fcb9fb0c9059e55ea5d5ea8f67",
      "parents": [
        "76b6167407c2b6f5d40ad895b2793a6b037f54b2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:34:25 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:35:05 2012 -0800"
      },
      "message": "Move logging.h into base/logging.h.\n\nChange-Id: Id68f85f7c3a71b156cb40dec63f94d4fb827f279\n"
    },
    {
      "commit": "262e251e56d66bd309c6165964ac0a0be24447fe",
      "tree": "89453b090d7213e21d6c79ad731511bd8d1094af",
      "parents": [
        "4f3d94b4e3b40fa7aa2bb5007fa4bb5703189b61"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 11 09:46:43 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 11 10:05:24 2012 -0800"
      },
      "message": "Fixed slow path for invoke-direct with null this pointer.\n\nMoved the null pointer check until after the class linker tries to\nresolve the method on the slow path.\n\nChange-Id: Ie0f9e279a98a7e3a40899fee92337ef454c9a468\n"
    },
    {
      "commit": "42b4dc4280c25a624bf38e19da70be39d2676232",
      "tree": "3913e3e9a1e69436344ff820fbffe76b97fdb24e",
      "parents": [
        "a77f0f68a59870ff027dad654fe31eb3fdaf3d5d"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 10 10:25:43 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 10 10:25:43 2012 -0800"
      },
      "message": "Interpreter fixes.\n\n- Fixed filled_new_array to handle negative array size and wrong types.\n  Also added support for objects.\n- Fixed not_int/long and neg_int/long.\n- Masked shift amounts.\n- Disabled return type check to allow exceptions to be thrown when type\n  doesn\u0027t match the method prototype.\n\nChange-Id: I68162a121f3ba53fd6c40a31f0b6aa9ba925ea2d\n"
    },
    {
      "commit": "ce4cc0d1818e872c1c7f3c3519a82259afd5c288",
      "tree": "308f2c30e5a842a5e459d96e730ca4432a020f4f",
      "parents": [
        "823b8acdf2c8274ff93b685e50a93ab9afc6af8b"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Nov 18 16:59:53 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Dec 04 11:07:34 2012 -0800"
      },
      "message": "Using gcmap instead of shadow frame.\n\nFix misuse of TBAAJRuntime \u0026 TBAARuntimeInfo. Now, the TBAAJRuntime is\nonly for runtime support function.\n\nUpdate DexPC before lock object and suspend.\n\nChange-Id: I40fa37f4863fe6e127328a8413285ee3c62e8505\n"
    },
    {
      "commit": "94d6df471a406a03bb1afba8ca3ae9c0fbf366b5",
      "tree": "f89af30dbe4a23dc6f62bb17c3b0a36b778ade33",
      "parents": [
        "5bc252873e6e50f8257e33ca158d0e350413fcbf"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 16:02:12 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 16:02:12 2012 -0800"
      },
      "message": "Fixes to make all run-tests except 051-thread work.\n\n- Moved exception delivery into common method DeliverException\n- Renamed old DeliverException to QuickDeliverException since it is only\n  used by quick\n- Fixed null checks for arrays returned by GetReference\n- Standardized ArrayStoreException error message\n- Added additional sleeps to ensure threads stay alive long enough in\n  051-thread, and that \u003cclinit\u003e is complete for 084-class-init\n\nChange-Id: I9ca306896a4bd10f453150fcf3965d9750fa0cbd\n"
    },
    {
      "commit": "0a9bb73c70298922ad33d67c209a4e440b216fa2",
      "tree": "b9c0597fb54ac4329ef3f6ffeb09531b53efb73c",
      "parents": [
        "449a49bedfb72f0d5643977a99346935f1b33c55"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 12:28:49 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 12:28:49 2012 -0800"
      },
      "message": "Fixed access checks on class resolution in interpreter.\n\nAlso made interpreter throw AbstractMethodError when interpreting\nabstract methods.\n\nChange-Id: Id6396fd31e500613150407d0281383b556de9605\n"
    },
    {
      "commit": "d752132c73072084a3def9257cca4fcee76047b6",
      "tree": "92c7bc15db2328db7c14c31f77504a7e879e8467",
      "parents": [
        "278b0db1ee55106486a7aecf39a581aac09fb619"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 21 15:38:24 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 21 15:38:24 2012 -0800"
      },
      "message": "Various fixes to the interpreter. First 23 run-test tests pass.\n\n- Factored out code to throw stack overflow error into its own method.\n- Increased kStackOverflowReservedBytes to 10kB to support interpreter.\n- Reordered return type checks to prevent type resolution with an\n  exception pending.\n- Fixed field checks so they pass if the field is static or the object\n  is the declaring class.\n- Suppressed using the interpreter for proxy methods.\n\nChange-Id: Ide73ec928ab0aa7b31229c4e69679a35dd948e43\n"
    },
    {
      "commit": "87a6edd81227a60b3651f9d8e11bdabb793a535f",
      "tree": "38786dfdec8a5e23e79eed525468db095c8014ae",
      "parents": [
        "d91398cc7ed6ea8acf251bf1aa525df46d914044"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 20 18:05:18 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 20 18:05:18 2012 -0800"
      },
      "message": "Fixes to interpreter, now passes 003-omnibus-opcodes.\n\n- NPE checks on monitor-enter/exit\n- Check for unresolvable classes in check_cast/instance_of\n- Fix float/double to int/long\n\nChange-Id: I61d72411bc3ee360c5261016c87ca6cfe077cf21\n"
    },
    {
      "commit": "d91398cc7ed6ea8acf251bf1aa525df46d914044",
      "tree": "a5f643b43509cb3f87506794dbc734523f87c8f2",
      "parents": [
        "689d9f0cee08a3baaa85a85fb365c7b99f503617"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 20 17:17:33 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 20 17:17:33 2012 -0800"
      },
      "message": "Fix interpreter int/long div/rem.\n\nIt didn\u0027t handle dividing by zero or dividing min int/long by -1.\n\nChange-Id: Id1d7ea5b05a95f655bd7017ba9e331b2a577e8fa\n"
    },
    {
      "commit": "689d9f0cee08a3baaa85a85fb365c7b99f503617",
      "tree": "2c684c3da51864c2855cdff642ad3393ae37c483",
      "parents": [
        "58bf0c6d756ff59d3b50d3e90bcdada92b2c933f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 16:30:29 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 16:30:29 2012 -0800"
      },
      "message": "Missing return for interpreter iput/get NPE.\n\nChange-Id: I50f9fa5f6fd38af59a8fb8e8ad266f753f677a0c\n"
    },
    {
      "commit": "58bf0c6d756ff59d3b50d3e90bcdada92b2c933f",
      "tree": "d64178bcf00a41290968665941599552f524de72",
      "parents": [
        "c0a61fc79e5070f2a16e7dbb7ecf451d13405b45"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 16:24:12 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 16:25:09 2012 -0800"
      },
      "message": "Fix interpreter cmp[gl]-double.\n\nChange-Id: I332ff181db100e2fa8b663f1de84f42baba7da2f\n"
    },
    {
      "commit": "373c52fd70336531010268a2de4f7d3b0f236924",
      "tree": "782478126bd283faeaeef38e3d3be4e37bde5a2b",
      "parents": [
        "17ffcab3a9428ccdc5ae6b2b42c001fe3df1f1d6"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 20 16:11:52 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 20 16:17:38 2012 -0800"
      },
      "message": "Added CheckSuspend and UpdateDebugger to interpreter loop.\n\nMoved CheckSuspend so that the code doesn\u0027t need to be repeated in LLVM\nas well.\n\nChange-Id: I1073f82352593bf0d5f99b28d382e4687f3a0d90\n"
    },
    {
      "commit": "17ffcab3a9428ccdc5ae6b2b42c001fe3df1f1d6",
      "tree": "386b6d7620d87f30f8d45f90a274e53b9a83a1b6",
      "parents": [
        "0dff3f4d41ce8308d1973f317463941abbf79b81"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 15:27:41 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 15:27:41 2012 -0800"
      },
      "message": "Fix interpreter const-class.\n\nChange-Id: Ic0c699a961fcad2fe5d067d697d0a7469f164201\n"
    },
    {
      "commit": "556d637764b71563030c479bc35364a75188d559",
      "tree": "d5e425d376309ee47a3cfc05a4ce3484551306e0",
      "parents": [
        "50ffee20ced9c0c7ac68889c86be8844cf120cf2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 12:19:36 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 12:20:37 2012 -0800"
      },
      "message": "Implement interpreter packed-switch.\n\nDon\u0027t enter interpreter for native methods. Fix ScopedObjectAccess use\nwhen in native state.\n\nChange-Id: I7575a4f2701215009226dde05022213d044fb56d\n"
    },
    {
      "commit": "64b6d145fa53b8dfb07a8fc2426af13f155d5a4d",
      "tree": "727647da235e21508d6661c7e2a780ff8ee2003e",
      "parents": [
        "0f79d728370ab51b9b16a356b058c48330f43148"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 29 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 01 17:26:15 2012 -0700"
      },
      "message": "Interpret class initializers when building image.\n\nWe initialize all image classes with the interpreter if they have a\nclass/static initializer.\nBlack list classes whose initializers need access to on device native\ncode. If such classes are added to the image classes they will fail when\nthey attempt to enter JNI code. A number of \"intrinsic\" style JNI\nroutines are special cased to allow more than just trivial class\ninitializers to run.\nAdd a lock for initialization in the compiler to serialize the execution\nof class initializers and avoid deadlock.\nRemove InSourceSpace from image writer (cruft) and teach the image writer\nto fix up referent fields in references.\nFix bugs in the interprerter and implement filled-new-array.\nFactor some VM code to more easily share between the interpreter and\nJNI entry points.\n\nChange-Id: I6bb811dea84f1b82260b1a4e73ac7412179c0b41\n"
    },
    {
      "commit": "2fa6b2e2fc3d2a2fc27808ce518dc76b80ce369a",
      "tree": "daba5f5e64409452e31ae42e3b1b6b6491ccb007",
      "parents": [
        "6ed960d260d0ec3cbbef455c646ccd47f4e78119"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 17 00:10:17 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 16:12:59 2012 -0700"
      },
      "message": "Interpreter.\n\nThe opcodes filled-new-array and packed-switch aren\u0027t implemented but\nare trivial given that they are variants of implemented opcodes.\nRefactor Field::Get routines to take the declaring class in the case of\nstatic field accesses. This avoids a check on every use of a field.\nRefactor arg array builder to be shared by JNI invokes and invocations\ninto the interpreter.\nFix benign bug in const decoding in the verifier.\n\nChange-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8\n"
    }
  ]
}
