)]}'
{
  "log": [
    {
      "commit": "02567379e7099682345fd59d45a23e17711c9ddd",
      "tree": "afab6024db00d1efb6236fadef9886aefe470973",
      "parents": [
        "a1e50cab308af9f9a94e8bd370111eeff5634914",
        "253fa555d9424a56c52879449eabe73d5c96cf61"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Oct 24 07:49:38 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 24 07:49:38 2014 +0000"
      },
      "message": "Merge \"Fix JDWP Virtualmachine.Resume command\""
    },
    {
      "commit": "a1e50cab308af9f9a94e8bd370111eeff5634914",
      "tree": "e72b7feea05593b8bd8c77bda7072e7bd813d891",
      "parents": [
        "6b8fbcb19f404b45ed01e9808f6d3254b13fc351",
        "e49e195c4bc2f20df0289c0bbb46f56839308dde"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Oct 24 07:49:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 24 07:49:19 2014 +0000"
      },
      "message": "Merge \"More use of WellKnownClasses for debugger\""
    },
    {
      "commit": "e49e195c4bc2f20df0289c0bbb46f56839308dde",
      "tree": "07a334d8f9369b0a72fa0f07cc00576f4f005a08",
      "parents": [
        "8fc5acfd382bdc0d7920e8a13439b64344a8988a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Oct 13 11:27:13 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Oct 23 11:43:05 2014 +0200"
      },
      "message": "More use of WellKnownClasses for debugger\n\nUses WellKnownClasses cached fields for ThreadGroupReference-related\nJDWP commands.\nAdds fields of java.lang.ThreadGroup and java.util.ArrayList used by\nthe debugger.\n\nChange-Id: I54f7ef7e44cb61bec95657a69177bba1fbb7dc75\n"
    },
    {
      "commit": "cf7f19135f0e273f7b0136315633c2abfc715343",
      "tree": "ffa4d9efd9c45f4b6789acc1f534bb9327052b7e",
      "parents": [
        "aea6888b056be21adf762e066c7f33b8939b8a06"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 22:06:39 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 22:21:57 2014 -0700"
      },
      "message": "C++11 related clean-up of DISALLOW_..\n\nMove DISALLOW_COPY_AND_ASSIGN to delete functions. By no having declarations\nwith no definitions this prompts better warning messages so deal with these\nby correcting the code.\nAdd a DISALLOW_ALLOCATION and use for ValueObject and mirror::Object.\nMake X86 assembly operand types ValueObjects to fix compilation errors.\nTidy the use of iostream and ostream.\nAvoid making cutils a dependency via mutex-inl.h for tests that link against\nlibart. Push tracing dependencies into appropriate files and mutex.cc.\nx86 32-bit host symbols size is increased for libarttest, avoid copying this\nin run-test 115 by using symlinks and remove this test\u0027s higher than normal\nulimit.\nFix the RunningOnValgrind test in RosAllocSpace to not use GetHeap as it\nreturns NULL when the heap is under construction by Runtime.\n\nChange-Id: Ia246f7ac0c11f73072b30d70566a196e9b78472b\n"
    },
    {
      "commit": "253fa555d9424a56c52879449eabe73d5c96cf61",
      "tree": "15ad96b41587b1b03aefb401da02f7c26c03ba5e",
      "parents": [
        "3f5b8a1e7dfdf010591e17396d1d126740c5706c"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Oct 14 17:27:15 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Oct 21 19:21:41 2014 +0200"
      },
      "message": "Fix JDWP Virtualmachine.Resume command\n\nWe used to call ThreadList::UndoDebuggerSuspensions but this is not\ncorrect. Indeed Virtualmachine.Resume command should be performed\nas many times as all threads have been suspended (either by the\nVirtualmachine.Suspend command or the application of suspend policy\nALL for event).\n\nThis CL fixes this issue by adding ThreadList::ResumeAllForDebugger.\nIt decrements suspend count and debug suspend count by 1 (globally\nand for each thread).\n\nIt also handles the case where Virtualmachine.Resume is called while\nthreads have not been suspended (global debug suspend count is 0). In\nthis case we just print a warning and do nothing.\n\nBug: 17974047\nChange-Id: I25af22b1936760292d2a8c286e0867f2ae864108\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "824e124cf4757720f54efbdf667c07c1db27d4a6",
      "tree": "86f64febfcf64281ae7188a1d8902d5bf7ca89b2",
      "parents": [
        "b7f1c06737c14cccca91153c714f58d99c69adcc",
        "4c69d7f4df78d20c631abc5f70b811a9944854d3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 10 22:47:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 10 22:47:08 2014 +0000"
      },
      "message": "Merge \"Hold mutator lock in DdmSendHeapSegments for all spaces\""
    },
    {
      "commit": "4c69d7f4df78d20c631abc5f70b811a9944854d3",
      "tree": "d4480e82ff05207d15a2f6af60223504ac702ed8",
      "parents": [
        "a9b097443f26a6df1a322a8fef50fdd1f26a410b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 10 12:45:50 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 10 15:45:35 2014 -0700"
      },
      "message": "Hold mutator lock in DdmSendHeapSegments for all spaces\n\nPreviously we were releasing the mutator lock in DdmSendHeapSegments\nand only reacquiring it for RosAlloc spaces. This was causing problems\nsince the HeapChunkCallback access object fields through mirror.\n\nBug: 17950534\n\n(cherry picked from commit d6527cf8e824d9057f32755f2ff4bdcf46c7095b)\n\nChange-Id: Idb307fd4c01450a07e3c9621e04d2aabf2c6a0b9\n"
    },
    {
      "commit": "fc787ecd91127b2c8458afd94e5148e2ae51a1f5",
      "tree": "ef48c0f511ee9bf4ed85607cc4d530bace7e6cae",
      "parents": [
        "8fa8c904f7c783204a1dc9438429391d256658da"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 21:56:44 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 22:22:46 2014 -0700"
      },
      "message": "Enable -Wimplicit-fallthrough.\n\nFalling through switch cases on a clang build must now annotate the fallthrough\nwith the FALLTHROUGH_INTENDED macro.\nBug: 17731372\n\nChange-Id: I836451cd5f96b01d1ababdbf9eef677fe8fa8324\n"
    },
    {
      "commit": "9ef78b59da51080882e47505896b420977fd79ae",
      "tree": "6c568756e4e16e68d5d3346261009350969d5b77",
      "parents": [
        "95f03e6a4737f90685fab86e98709f1c4393d5ef"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 25 17:03:12 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 16:04:56 2014 -0700"
      },
      "message": "Fix broken runtime SetStatsEnabled logic\n\nPreviously, Runtime::SetStatsEnabled wouldn\u0027t take stats_enabled_\ninto account when deciding whether or not to increment / decrement\nteh stats enabled counter. This resulted in counter underflows and\nother errors which caused some CTS tests to fail.\n\nAlso added some locking to prevent race conditions.\n\nBug: 17360878\n\n(cherry picked from commit a98ffd745bbecb2e84a492194950c0b94966546b)\n\nChange-Id: I21d241a58d35bd6a607aa2305c6da81720bd0886\n"
    },
    {
      "commit": "f0edfc355893d53d1104b05501c99ad5ccf305c4",
      "tree": "7e1fa49875759512f5d02b1c45435d3e3366b920",
      "parents": [
        "1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 11:46:46 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 15:53:54 2014 -0700"
      },
      "message": "Some optimizations for the array alloc path.\n\n- Force Array::Alloc() to be inlined.\n- Simplify the array size overflow check.\n- Turn fill_usable into a template parameter.\n- Remove a branch in Array::DataOffset() and avoid\n  Primitive::ComponentSize(), which has a switch, in the array alloc\n  path.\n- Strength reductions in the array size computation by using component\n  size shifts instead of component sizes. Store component size shift\n  in the upper 16 bits of primitive_type field.\n- Speedup: ~4% (3435-\u003e3284) in MemAllocTest on N4.\n\nBug: 9986565\n\nChange-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c\n"
    },
    {
      "commit": "8380c7c246337e66291a88f633dfaa250457bb0f",
      "tree": "b0e1a772012c1fefdb6550a987edcdb8387e9759",
      "parents": [
        "b36bba6d35e88687852b108c8d4b73b3ec2a9397",
        "2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 22 21:40:06 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 22 21:40:06 2014 +0000"
      },
      "message": "Merge \"Add ScopedAssertNoThreadSuspension\""
    },
    {
      "commit": "c4481dbf1052f4ed9cb88aacbe0533e110fe6c1e",
      "tree": "0d5828445b95226d62b16f94abb5d8200bc282b2",
      "parents": [
        "400376f01747427313d4acf31b5ac508a8e368f7",
        "8009f39c6d63181a6cd0e348ce732997dbdf3d20"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 22 10:30:36 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 22 10:30:36 2014 +0000"
      },
      "message": "Merge \"Optimize JDWP stack local values access\""
    },
    {
      "commit": "8009f39c6d63181a6cd0e348ce732997dbdf3d20",
      "tree": "ff02473e6b0951364234a6038ae19a0875b7bdd7",
      "parents": [
        "5cdd0734d2f79eedc530f5f1e876cd2110e29c86"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 01 17:07:11 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 22 11:29:36 2014 +0200"
      },
      "message": "Optimize JDWP stack local values access\n\nThe StackFrame.GetValues and StackFrame.SetValues JDWP commands can refer to\nmultiple variables at the same time in a given frame. However we used to walk\nthe stack until getting to the requested frame for each variable.\n\nNow, we walk the stack only once until getting to the frame so the context is\ninitialized. Then we read/write value for each variable from this context.\n\nBug: 17343501\nBug: 15680615\n\nChange-Id: I2a4128f29a3c5856b994e280037c0a09eb48c5c8\n"
    },
    {
      "commit": "400376f01747427313d4acf31b5ac508a8e368f7",
      "tree": "54b06d749425bd757fe7725e55a442a3b9c36e11",
      "parents": [
        "cff942b1f7ebb82e3d5e0a1334467544eced1575",
        "4d1e9ab57e4c822e8e678b1d0c1d6ad2abfa9b3e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 22 09:10:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 22 09:10:18 2014 +0000"
      },
      "message": "Merge \"Do not hold breakpoint lock when running the verifier\""
    },
    {
      "commit": "a9aa0ffc2cf917be05749d1b27e7994249edb6d2",
      "tree": "68ce850e78061951359e9a292ef0215e408d507c",
      "parents": [
        "5cdd0734d2f79eedc530f5f1e876cd2110e29c86"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Sep 19 12:07:51 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 22 10:06:19 2014 +0200"
      },
      "message": "Fix JDWP crash when reporting exception\n\nThe exception\u0027s throw location may be null so we need to handle that\ncase. Also fixes a memset issue.\n\nBug: 17571297\n(cherry picked from commit bbb63897d7f2d99219cb50721fe530521e08ddff)\n\nChange-Id: Iedebb58f9460c5f04913c269200e51161bda1ba9\n"
    },
    {
      "commit": "4d1e9ab57e4c822e8e678b1d0c1d6ad2abfa9b3e",
      "tree": "8b22e8904a40ace3f96982f7c39697bc25a68631",
      "parents": [
        "6aa606c9284ac31961f4c5b20c3645ac78acfaad"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 18 16:03:34 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 22 10:02:09 2014 +0200"
      },
      "message": "Do not hold breakpoint lock when running the verifier\n\nWhen setting a breakpoint, we need to know whether the method may be\ninlined. We run the method verifier but that may cause thread\nsuspension. Therefore we must not hold any lock at this time. The\nissue is we do hold the breakpoint lock so we fails a check in debug\nmode.\n\nThis CL ensures we don\u0027t hold the breakpoint lock when running the\nmethod verifier to detect inlining.\n\nBug: 17562442\nChange-Id: Ia6b128fc8917ce00025b68ae4ac62fb2a1f154e6\n"
    },
    {
      "commit": "2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893",
      "tree": "b0b9a8d4c386555f009b825bd5fbd8ab31909c3b",
      "parents": [
        "24f4b816dd50793e8456dc60fe1b50856004d708"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 19 17:52:37 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 19 18:57:47 2014 -0700"
      },
      "message": "Add ScopedAssertNoThreadSuspension\n\nAdded a new class, ScopedAssertNoThreadSuspension.\nDeleted some unnecessary ScopedAssertNoThreadSuspension since\nVisitObjects already has a ScopedAssertNoThreadSuspension.\n\nChange-Id: I29ec0006120c39a27184d30e2d1d0c179e203776\n"
    },
    {
      "commit": "6995c60cd6657c10811055c42661a55b10b47cef",
      "tree": "6fc528bca6f0c6fb989f88cb6af6c4829e1da172",
      "parents": [
        "d41491adb23764f28a80cbb7f2bd7af6491cd892"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 09 12:10:13 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 18 14:31:54 2014 +0200"
      },
      "message": "Update JDWP event filtering to avoid useless ids\n\nTo reduce the number of JDWP ids in the debugger, we update the event filtering\nsupport to work with runtime objects (Thread, Class, Object, ...) instead of\nJDWP ids (ThreadId, RefTypeId, ObjectId, ...).\n\nWe used to create useless JDWP ids for events even if they were not reported\nbecause of event filtering (thread only, class only, instance only, ...). Now\nwe only create JDWP ids when we know we\u0027re going to report an event.\n\nBug: 17343664\n(cherry picked from commit d539167b7f11136fe570a77aff2ee4935842007a)\n\nChange-Id: I8619e219733fc2fa3569f473b7bd8d9af4181f2b\n"
    },
    {
      "commit": "69dbec6d9d55eeb2867949c2791d01dc9aa916c8",
      "tree": "be4eca8161eafb4a8466f5adf28a2c8f27cd37d1",
      "parents": [
        "926d8e99aa69151a271180299df68963688010d8"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Sep 15 18:03:41 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 17 14:31:55 2014 -0700"
      },
      "message": "Avoid suspending for alloc trace enabling when already suspended.\n\nBug: 17499772\n\n(cherry picked from commit 1d6ee090fddd4bfd35c304d6ceb929d5c529dfcc)\n\nChange-Id: Id09809c476c685f0a197ee75bb08638931364efd\n"
    },
    {
      "commit": "b0b0b496125c16620e99ea4e4a05693c281eccf1",
      "tree": "a73507873a28411f843b98701bcd0535d1dc361a",
      "parents": [
        "97ca64b01e14de77ba14067b26069405d0dba0bf"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 15 11:27:27 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Sep 17 11:52:24 2014 +0200"
      },
      "message": "Avoid crash in StringReference.Value JDWP command\n\nChecks for null or invalid object id. Also checks whether the corresponding\nobject is a java.lang.String.\n\nBug: 17492221\nBug: 15005460\n\n(cherry picked from commit 29259fa6b0514866d2d4bf57d58c1557b26abbb7)\n\nChange-Id: I52673bdef6912a4cccf5a6eeecb6e1e817b9dd6b\n"
    },
    {
      "commit": "97ca64b01e14de77ba14067b26069405d0dba0bf",
      "tree": "dd39f9aff71c46dda43a00df6ce0bbc480536003",
      "parents": [
        "45ac9ff885f9fdc0eccf4080e112267c553b9281",
        "a06430c76981d545b5f2b64a7ef53c44c030cf73"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Sep 17 09:32:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 17 09:32:33 2014 +0000"
      },
      "message": "Merge \"Check for errors in ThreadGroupReference JDWP commands\""
    },
    {
      "commit": "a06430c76981d545b5f2b64a7ef53c44c030cf73",
      "tree": "731fcb8361f9a3c1a4d08362ba50cf6e8a3736db",
      "parents": [
        "0785b90a38f5f2f0d5a9e3890fd16dc63a3bca10"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 15 19:21:30 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 16 17:12:36 2014 +0200"
      },
      "message": "Check for errors in ThreadGroupReference JDWP commands\n\nReturns INVALID_OBJECT error for null or invalid object. Also returns\nINVALID_THREAD_GROUP error when the object is not a java.lang.ThreadGroup.\n\nRemoves unused Dbg::GetMainThreadGroupId method.\n\nBug: 17503230\nChange-Id: Ifae39b0280633836655b22fc212018cb06b65c6c\n"
    },
    {
      "commit": "5a4b8a236030460651a3136397d23ca6744e7eb7",
      "tree": "0e43891398e416d3fa77c7de391bf4db4408e8ee",
      "parents": [
        "19f7c95491a053b818f914137fa73df0517b8792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:30:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:50:12 2014 -0700"
      },
      "message": "ART: Rename Handle hierarchy\n\nBring the names in line with normal OO principles: ConstHandle\nbecomes Handle, and Handle becomes MutableHandle.\n\nChange-Id: I0f018eb7ba28bc422e3a23dd73a6cbe6fc2d2044\n"
    },
    {
      "commit": "844506b3f75b4643de8b326855daf03c2fbcc99c",
      "tree": "fe0804c1424e5c45314c260e019dabc592d0ba45",
      "parents": [
        "ebab3bbcaa09b644acd50ec18d79cb0d239bf347"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 19:59:33 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 19:59:33 2014 -0700"
      },
      "message": "Pass current thread as argument to alloc instrumentation.\n\nAvoids recomputation in the hot allocation path when instrumentation is\nenabled.\n\nChange-Id: Ic6e7d7d0744f4756787f75d21fddd3c50280b588\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "070f732bc270f6b9a579838d3418eb13b9cdf8ff",
      "tree": "2f9fc4e13662e5eab9352684dc8fbb7a5909aca4",
      "parents": [
        "bb2e4d7d2d863e2d10876a469642784c9aeafda6"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 09 12:08:49 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 11 11:59:12 2014 +0200"
      },
      "message": "Fix deadlock in VirtualMachine.AllThreads\n\nWe cannot add any object in the JDWP object registry while holding the\nLocks::thread_list_lock. Indeed we may need to suspend a thread and take it,\ncausing a deadlock by waiting for ourself on this lock.\n\nBug: 17343664\n\n(cherry picked from commit d35776413901a6a9d478e06dc354ea4f7d962e04)\n\nChange-Id: I07d150b95a6d2b62c913bf2ca2ac217911b2f19d\n"
    },
    {
      "commit": "4537c41b9a58c2280b3ad8bcf0130ed11c7a54f6",
      "tree": "94017c28f80cd0cbbe2d9aa61f9eabc02e6047fc",
      "parents": [
        "c7f6b86c269727fe031146b9c18652d40916d46f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Aug 28 14:41:50 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 11 11:37:43 2014 +0200"
      },
      "message": "Don\u0027t hold any lock when visiting classes from JDWP\n\nComputes reference type ids of all loaded classes without holding the class\nlinker lock. Because computing the JDWP reference type id can cause thread\nsuspension, we can\u0027t hold any lock. This is detected in debug build (using\nlibartd.so) and causes an abort.\n\nAlso adds missing thread safety annotations related to ObjectRegistry::lock_.\n\nBug: 17305632\nBug: 16720689\n\n(cherry picked from commit 95795e286145a4aece5c4a095fa2e7e88ee2115a)\n\nChange-Id: If4fb069790a0a3358ad49da8f75c62a54c0f0b56\n"
    },
    {
      "commit": "306db81aba41eb244a4e8299cf58ac18ae9999c7",
      "tree": "a069a9dda1b246466cbeee2736f46f18ef56714e",
      "parents": [
        "b14339904c9cacc4af74260c7325e4eb32947f95"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 05 13:01:41 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 05 13:24:24 2014 -0700"
      },
      "message": "Fix numerous issues with DdmVmInternal allocation tracking\n\nIssues addressed:\n- Using without JDWP attached caused native crash.\n- When buffer is full (64k entries), number of entries reported was 0.\n- Disabling tracking after disabling tracking caused native crash.\n- Asking for allocations after disabled caused native crash.\n- Lock ordering issues between mutator lock and alloc tracker lock.\n\nAdding 098-ddmc test to cover these cases.\n\nBug: 17392248\n\n(cherry picked from commit a5815065ac0877add9c0db3605d27b4d6c426e61)\n\nChange-Id: Ib0bc18dfcdafcc050ab9dceed3d167dd878d1d7a\n"
    },
    {
      "commit": "a07557ccece64fa7084bb01b9d26957bd0977c10",
      "tree": "c2864dffb3324039745112b602cae2eff699a5a4",
      "parents": [
        "2a09504334a3a3b4c47100197df0827cc6740433",
        "c0542af3e2170143ba40d89136e284997e16bf64"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 04 00:20:48 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 04 00:20:48 2014 +0000"
      },
      "message": "Merge \"Remove abuse of mirror::Object* to reference special values.\""
    },
    {
      "commit": "c0542af3e2170143ba40d89136e284997e16bf64",
      "tree": "a61e3b9cd297a4c52a0c0488a502cb77c47f0690",
      "parents": [
        "d3c9358544bbab15093614c5c2b6a9de86e11f7b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 16:16:56 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 17:15:54 2014 -0700"
      },
      "message": "Remove abuse of mirror::Object* to reference special values.\n\nRemove kInvalidIndirectRefObject, kClearedJniWeakGlobal and\nObjectRegistry::kInvalidObject. Handle error conditions by passing in or\nreturning an error value.\nGetObjectRefType is simplified to be faster and not return invalid references\nthat are not expected according to the spec. Adjust check JNI and\njni_internal_test appropriately.\nFix cases in the debugger/JDWP of out arguments being passed by reference.\nBug: 17376993\n\nChange-Id: I3ce8a28c01827e163f4dc288449959464da788b1\n"
    },
    {
      "commit": "ed2be1725fb79075892b1a9103487c9d9a95b350",
      "tree": "8adf1d95f401c2c7e7df1c659c0dfcd4dd27a68f",
      "parents": [
        "645f9871115e82ff836397f6470cca825befd245"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 19 15:33:43 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 02 19:28:34 2014 +0200"
      },
      "message": "Reduce lock contention when debugging\n\nUses a ReaderWriterMutex for the breakpoint lock to reduce contention during\ndebugging session.\n\nAlso adds missing thread safety annotations on fields and methods related to\ninstrumentation and debugging.\n\nBug: 16814665\nBug: 11667502\n\n(cherry picked from commit 59d9d668d4f4286813afe2b4e7c6db839222ce96)\n\nChange-Id: I5f1156da8c6cc8316d6db16e6cfb2470fe289ad3\n"
    },
    {
      "commit": "ba32de47e32f436d7c11cb4a2e78bdd4ad4dc5d2",
      "tree": "1b56397dfce317d2034feebfb2191bcb09b78823",
      "parents": [
        "14515d738dadf88e3e00b7dd1bd69899c4df4b91"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 27 23:43:46 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 28 15:37:27 2014 -0700"
      },
      "message": "Fix issue with Thread.setName hanging after Thread.start\n\nWhen suspending a thread by peer the invariant that only attached threads are\nsuspended must be maintained. Add a ThreadList::Contains check which requires\nmaking this method non-static.\nAdd some extra thread logging.\n\nBug: 17302037\n\n(cherry picked from commit 37c16453a92bbf1a47f042000318a1b60381017d)\n\nChange-Id: I51832785d4b4b431e035318e75635f442e89a1fb\n"
    },
    {
      "commit": "bf99f77dda749e2b653e8c45259b1fb56e7bb012",
      "tree": "98addbb3533c745781bc26e4a55cbbdd6d6e97e7",
      "parents": [
        "762f0a5bdd238458bbb463a9565388f2047a98d4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:37:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:54:24 2014 -0700"
      },
      "message": "Clean up Handle usage.\n\nPrefer using ConstHandle instead of Handle as function arguments\nsince you can\u0027t assign new references to ConstHandle which helps\nprevent bugs.\n\nChanged NullHandle to be a ConstHandle so that you can never modify\nit to be a non null reference.\n\nChange-Id: I81cb979f6f8d5b49e5614966a2caf28c3701dd4f\n"
    },
    {
      "commit": "dc3761719fb5e2d1ced5708e3c73b965f9ef0c73",
      "tree": "84d499b1be46896793bdfebe6f83bf8ca275d50b",
      "parents": [
        "a37ad7a6caad2e0a83c72c1103015202cbcaf1a4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 22 11:13:12 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 22 11:13:12 2014 -0700"
      },
      "message": "Handlerize MethodVerifier::mirror_method_.\n\nThe method (mirror_method_) wasn\u0027t handlerized across some\nallocation/GC points such as the ResolveType() call in\nScanTryCatchBlocks() and the GetReturnType() calls in\nCodeFlowVerifyInstruction().\n\nBug: 12687968\nChange-Id: I95323de14459eb5a7c4abfcf44f882f86d59be64\n"
    },
    {
      "commit": "c6345efb56f9096c4b1a1a90e1d8d847fc01d910",
      "tree": "e0be48d4d581d9a72b5cb9b45b0fed6f8b778d07",
      "parents": [
        "562f0ef60bb1498fdf3c43fe747ba067ffe6ebed"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 18 19:26:39 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 19 11:38:49 2014 +0200"
      },
      "message": "Fix JDWP event races\n\nFix a race where the JDWP connection could be closed before the VM_DEATH event\nis sent during runtime shutdown.\n\nFix potential race where we could wait forever for the JDWP thread to establish\nconnection.\n\nBug: 16720689\n\n(cherry picked from commit d8b3537b89fa68599534a65afc3b272639cd4a75)\n\nChange-Id: I4b8996ade6a38fa8f7f23c3000b7184b162907d7\n"
    },
    {
      "commit": "9ac5602c1f5829c994360674fea1055a738caa23",
      "tree": "9fa8ccecbfd12d82e1c8d681a2f0fdd0abb90fc4",
      "parents": [
        "6c6c6f6683cbbb180b8b8c8f55886b067320e1e8"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 12 09:09:37 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 13 08:36:12 2014 +0200"
      },
      "message": "Fix crash in VirtualMachine.AllThreads JDWP command\n\nWhen collecting all the started threads, we may encounter a thread in the\nprocess of being started from Java code (Thread.start) in the threads list. The\ncrash occurs when we attempt to access the java.lang.Thread peer (calling\nThread::GetPeer) but the JNI global reference to it (Thread::jpeer) has not\nbeen destroyed yet (which is verified with a check). This only happens when the\nthread is starting up.\n\nWe now check the thread finished starting up before accessing the Java peer.\nThis also prevents from returning non-started threads in the reply.\n\nBug: 16660101\n\n(cherry picked from commit a22d115711b5158cfc67b4f260a5b40f3ab303ca)\n\nChange-Id: Ib61dbd0b01f63bfdda708d3c93eac58284bbe236\n"
    },
    {
      "commit": "1ff3c98775a4577cf053dba9a0c2d5c21c07b298",
      "tree": "2d09c27c69678b53b4c9dc486024f3547efd4bca",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 02:30:58 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 16:08:05 2014 -0700"
      },
      "message": "Avoid use of std::string where we have const char*.\n\nRemoving the ClassHelper caused std::string creation for all calls to\nClass::GetDescriptor and a significant performance regression. Make the\nstd::string an out argument so the caller can maintain it and its life time\nwhile allowing GetDescriptor to return the common const char* case.\n\nDon\u0027t generate GC maps when compilation is disabled.\n\nRemove other uses of std::string that are occuring on critical paths.\nUse the cheaper SkipClass in CompileMethod in CompilerDriver.\nSpecialize the utf8 as utf16 comparison code for the common shorter byte\nencoding.\nForce a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing\ncode), add some LIKELYs.\n\nx86-64 host 1-thread interpret-only of 57 apks:\nBefore: 29.539s\nAfter: 23.467s\n\nRegular compile:\nBefore: 1m35.347s\nAfter: 1m20.056s\n\nBug: 16853450\nChange-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad\n"
    },
    {
      "commit": "36dab3607e77505ce139eacef1c62a1c4bc4affd",
      "tree": "4b8fa4da5aef0bd4f7340d33f2d6649ba2089b5a",
      "parents": [
        "01a0ebb6b96c32879dcad99d515fc0cd8de2a266"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 30 14:59:56 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 30 17:03:32 2014 -0700"
      },
      "message": "Add support for bump pointer spaces to DdmSendHeapSegments.\n\nAdded support for bump pointer spaces as well as\ndifferentiating between DlMallocSpaces and RosAllocSpaces.\nAdded logic to reset the start of next chunk to prevent\ninbetween space regions counted as free.\n\nFixed a debug build bug where we were doing an mprotect after\ncreating a rosalloc space. In debug builds, this writes a magic\nvalue in the page. This was faulting since it was set to PROT_NONE.\nThe fix moves the mprotect before the RosAlloc space creation.\n\nBug: 16408851\nChange-Id: Ibe18198d05ff353fbb57d10b2f7719fdcbf1c5f0\n"
    },
    {
      "commit": "ca928ba8b9e109ced2b9d72622dc34bda63ac211",
      "tree": "c1049dcc9e94954d1e8aa6d00303fd638fbaee3a",
      "parents": [
        "3017527bf4ceced296b8885426b86ac939ab755f",
        "c901dd7bdc80b953d04100ef2f54b8d1ca5f466b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jul 24 07:24:12 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 23 19:30:00 2014 +0000"
      },
      "message": "Merge \"Fix access to long/double stack values from debugger\""
    },
    {
      "commit": "c62944adcd427dca55489d234428da47c43a0aab",
      "tree": "ee4e849af619400e351810bb68e4e82a523e56cf",
      "parents": [
        "719ca5ade262c5ace6a2ea32a3e4e48619d8439e",
        "799eb3a5555254427db269921042419bc30d4d86"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jul 21 18:01:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 21 15:45:37 2014 +0000"
      },
      "message": "Merge \"Add read barriers for the GC roots in Instrumentation.\""
    },
    {
      "commit": "799eb3a5555254427db269921042419bc30d4d86",
      "tree": "a1b96438b3eeef3776f03f893f2f234350e694e1",
      "parents": [
        "b12d6055432f6974317ca1b5c9260db0d410df3e"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jul 18 15:38:17 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jul 21 11:00:08 2014 -0700"
      },
      "message": "Add read barriers for the GC roots in Instrumentation.\n\nBug: 12687968\nChange-Id: I324e2f950ce4500b0e00722044af3a9c82487b23\n"
    },
    {
      "commit": "f3d874c60ee3ada19ce26a5c4e532312b6f3a9e9",
      "tree": "de14ab8b610f43a2c2c4c02f4ac67d614919fde2",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:52:42 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:59:40 2014 -0700"
      },
      "message": "Avoid race in single thread suspension.\n\nDon\u0027t allow more than one concurrent single thread suspension to avoid\npotential cycles and deadlocks where threads try to suspend each other.\nBug: 16364458, 16354227\n\nChange-Id: I907f1d5591a6aa5c241d37d6b4a34f968f98df77\n"
    },
    {
      "commit": "c901dd7bdc80b953d04100ef2f54b8d1ca5f466b",
      "tree": "de52f83ac4dab4ca5b48cbc5a4701abdc762f2d1",
      "parents": [
        "81457a3cd8fca14396b5785a4e4c8070c259b07a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jul 16 11:56:07 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jul 17 20:43:37 2014 +0200"
      },
      "message": "Fix access to long/double stack values from debugger\n\nLong and double values live in a pair of DEX registers. When we compile DEX\ncode with the Quick compiler, a DEX register either lives in the stack or is\npromoted to a physical register. In the case of a pair of DEX registers, the\nQuick compiler assumes both registers live in the same \"area\": both live in\nthe stack or both are promoted to physical registers.\n\nFrom the debugger, we used to access these values by reading/writing each DEX\nregister separately. However, this does not work when only one DEX register of\na pair is promoted and the other lives in the stack. In this case, the compiled\ncode reads from/writes to the stack only.\n\nTo fix that, the debugger must follow the same rule than the Quick compiler: if\nboth DEX registers are promoted, read/write them from/to physical registers,\notherwise read/write them from/to the stack. We add StackVisitor:GetVRegPair and\nStackVisitor:SetVRegPair for this purpose.\n\nWe also follow the same rule when deoptimizing. However we need to do that only\nwhen we know two consecutive DEX registers are part of a pair (long or double).\nWe know that thanks to the verifier.\n\nBug: 15527793\nChange-Id: I04812285ff26ef0129f39792a1cf776f3591ca2d\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "0f635b103c1fff6439d47bdae363afeffe7327fd",
      "tree": "afa160b8c3b850e5189a1bfa06065faee54eccaf",
      "parents": [
        "32710dd4a0232149002a5ae7bde1c640cdffd564",
        "bae182cbc6adc8796154162a87fc54ae804e0469"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 09 18:52:43 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 09 14:50:30 2014 +0000"
      },
      "message": "Merge \"Fix method tracing from command-line\""
    },
    {
      "commit": "bae182cbc6adc8796154162a87fc54ae804e0469",
      "tree": "d5c1fdb048edab194e948e4e90bff66703c5f55e",
      "parents": [
        "0c1734665c38b3116e38a90ad06c3f152d9316c5"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Dec 17 10:42:03 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jul 09 16:10:45 2014 +0200"
      },
      "message": "Fix method tracing from command-line\n\nTransitions current thread to the new kWaitingForMethodTracingStart thread\nstate when starting method tracing.\n\nEnsures there is a current thread when method tracing is stopped due to runtime\nshutdown. If the current thread has been detached, we now re-attach it.\nNote: we only do this if method tracing has been activated from command-line.\n\nFixes instrumentation when forcing interpreter mode (-Xint) with method tracing\nenabled.\n\nRemoves unused parameter from UnsafeLogFatalForThreadSuspendAllTimeout.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d72094\nBug: 11683397\nChange-Id: I70f000fb46ddd95d6ad51ea0a8eee77697a045e9\n"
    },
    {
      "commit": "0ec17d2ddb69d3f5c46ccad62e82c0ffd6219428",
      "tree": "a90ae1adaf549f474cc9d269f6ef5fe0062128d6",
      "parents": [
        "e8a30f37bf1530a80a7df17692dbe7a68764ac30"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jul 07 13:07:08 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 08 11:23:34 2014 -0700"
      },
      "message": "Remove Dbg::VisitRoots().\n\nWe replace the GC strong roots with JNI.\n\njdwp_test passes.\n\nBug: 12687968\nChange-Id: I841f1aaa5dffa784ca25953a251600f70df273b2\n"
    },
    {
      "commit": "4345c46b8a927cf13d9bbe38f8cf0593f5de181b",
      "tree": "f89b8edfa245d16c6ceffa512233140f53cfd0c2",
      "parents": [
        "f55159c145e8b07be1dcafc949afda7e6a2f41c5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 27 10:20:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 08 09:42:03 2014 -0700"
      },
      "message": "Fix local reference leaks in debugger and use a cache.\n\nChanged alloc record stack trace element to use jmethodID instead of\nJNI weak global references. Added code to delete the local ref\ncreated in AllocRecord::SetType.\n\nBug: 15886342\nExternal bug: https://code.google.com/p/android/issues/detail?id\u003d72330\n\nChange-Id: Id18e765820baad02246768dc9d633aada60f4fed\n"
    },
    {
      "commit": "0bcb2902ec21393d71c94e63aa6733cb5311a0cc",
      "tree": "10beb60b5a8d212afdf0e7e58c5dfcbee691be2e",
      "parents": [
        "838b38fa3b2fb4a64f8a316459d372020f6e8feb"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 17 15:52:45 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 17 16:00:54 2014 +0200"
      },
      "message": "Revert \"Revert \"Fix access to FP registers when visiting stack\"\"\n\nThis reverts commit 8ebd94ab2e0d9867a7d384f00fa4cab24235216f.\n\nFixes StackVisitor::GetVReg to read register value in a uintptr_t local and\ncast it into uint32_t pointer argument.\n\nBug: 15433097\nChange-Id: I4e13ed5446e823e9ec50fbc378b16be5b17b2294\n"
    },
    {
      "commit": "a992a2820c70997d80bb46d09831a66a60827d17",
      "tree": "a0cdcb8b73078a861ba30062f87bbc80f33e0f6b",
      "parents": [
        "d87c29c7c5f04f643677d87cd202e90bda8fed02",
        "8ebd94ab2e0d9867a7d384f00fa4cab24235216f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 17 09:50:39 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 17 04:34:38 2014 +0000"
      },
      "message": "Merge \"Revert \"Fix access to FP registers when visiting stack\"\""
    },
    {
      "commit": "8ebd94ab2e0d9867a7d384f00fa4cab24235216f",
      "tree": "5fc48d8179f6ec6942ebada59bc88c4626608410",
      "parents": [
        "aa9b3aee1e06f922e4518713f9b3dff00a0b2597"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 17 09:49:21 2014 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 17 09:49:21 2014 +0000"
      },
      "message": "Revert \"Fix access to FP registers when visiting stack\"\n\nThis reverts commit aa9b3aee1e06f922e4518713f9b3dff00a0b2597.\n\nChange-Id: Ied27deb89cca5ec9094d391374e03f83fcb76c33\n"
    },
    {
      "commit": "aa9b3aee1e06f922e4518713f9b3dff00a0b2597",
      "tree": "992b4565732a728dd901ed8a2f29c9246de328b7",
      "parents": [
        "bc72903b909f5147b8cb207f3e5d02a8ef85e4e7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jun 13 14:49:27 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 17 11:13:03 2014 +0200"
      },
      "message": "Fix access to FP registers when visiting stack\n\nAdds GetFPR and SetFPR to Context class so we can read from and write to\nfloating-point registers during stack visit. They return a boolean flag\nindicating whether the read/write is successful. This allows the debugger to\nreturn the JDWP error ABSENT_INFORMATION when we can\u0027t read/write a register.\nWe also update GetGPR and SetGPR for consistency. We keep a default GetGPR\nimplementation asserting the read was successful using a CHECK so we don\u0027t\nsilently fail.\n\nAdds missing JDWP object tags for StackFrame.SetValues to avoid crash when\nsetting corresponding objects (thread, thread group, class object or class\nloader). Also returns JDWP error INVALID_OBJECT (when the given object id is\ninvalid) instead of crashing with an unimplemented message.\n\nBug: 15433097\nChange-Id: I70843c9280e694aec1eae5cf6f2dc155cb9ea10e\n"
    },
    {
      "commit": "988bbed8d3b3239f69d548aaf05580cdde3349d2",
      "tree": "9746de0cf1099dd322066b983aae3ed6d521667d",
      "parents": [
        "4b855675b7c77e265aa69a9134dd50cc21273095",
        "aa9b3aee1e06f922e4518713f9b3dff00a0b2597"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 17 09:22:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 17 04:40:41 2014 +0000"
      },
      "message": "Merge \"Fix access to FP registers when visiting stack\""
    },
    {
      "commit": "cc8c5c5433230818cfe31617308198f286cc2ee1",
      "tree": "6fc1b452e6b4b144882bd1e25de428db5d2ccec0",
      "parents": [
        "08eeb38bb95dbb41dbdb0ea023749889b126af61"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 13 15:08:05 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 13 15:14:07 2014 -0700"
      },
      "message": "Avoid a non-root monitor vector in Dbg::GetOwnedMonitors().\n\nFollowing up on CL 96571, remove the need to use stack-scoped vectors,\none of which is a non-root vector that holds Object*, which could\ncause a GC bug.\n\nBug: 12687968\nChange-Id: I8582fe6bfe71bae7018dbf844fe75ebe989b6535\n"
    },
    {
      "commit": "b5a9e3d1cc1fd66683e43e365afc8c900e2800c4",
      "tree": "5b259807b4c5c67c532050939458a8390234a7a0",
      "parents": [
        "3b95d23f44485d207aa6ef298dc744fa2355578b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jun 09 12:11:20 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jun 11 14:46:13 2014 -0700"
      },
      "message": "Remove Object* weak roots from the debugger.\n\nThe weak roots were converted to JNI weak refs.\n\nSince the weak roots are now normal JNI weak refs, we eliminate the\nneed to insert read barriers for those weak roots in the debugger and\nthe need for the GC to have a separate step to update them as part of\nthe system weak sweeping.\n\nBug: 12687968\nChange-Id: If16396d4713457b8af4f1ea6a0c6ec6799cb615e\n"
    },
    {
      "commit": "9f1020305292a21fd14a402b189c765a125226ab",
      "tree": "6b730cbe56ded370d1b4293629826ad2c7b06f7f",
      "parents": [
        "bc72903b909f5147b8cb207f3e5d02a8ef85e4e7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 23 08:59:42 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 11 14:29:00 2014 +0200"
      },
      "message": "Fix exception reporting from interpreter\n\nTo comply with JDWP exception report rules, we must report an exception at the\nlocation of the throw (or the first instruction encountered after a native\ncall). To do this, we use the CatchLocationFinder visitor to look for a catch\nhandler until we reach a native frame or the top frame.\n\nBecause interpreter handles pending exception on a method-by-method basis, we\nneed a flag to remember we already reported the exception and avoid reporting\nit multiple times when unwinding methods. The drawback is we need to maintain\nthe state of this flag. We clear it when the exception is cleared. In the case\nwe temporarily clear the exception (when finding a catch handler for instance),\nwe restore the flag to its previous value at the same time we restore the\npending exception.\n\nBump oat version to force recompilation because we modify Thread offsets.\n\nBug: 14402770\nChange-Id: Ic059c58f80b2023b118038301f8f0a24f1e18241\n"
    },
    {
      "commit": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\n"
    },
    {
      "commit": "4479ba35389b03ccc9eabd17fba6168f9505517a",
      "tree": "fb8091b4637b27d8a9d3d4f390b79263a12d9881",
      "parents": [
        "081203e06534e4aa27a942e47084289eecab29ed",
        "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "message": "Merge \"Change FieldHelper to use a handle.\""
    },
    {
      "commit": "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb",
      "tree": "444936c3e3718b692ba7f1981b863190f26b4ed7",
      "parents": [
        "25c4f6a25b3de9b9d7ca5162f1629753a0b7f003"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 05 17:42:53 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 13:12:17 2014 -0700"
      },
      "message": "Change FieldHelper to use a handle.\n\nFixed compaction bugs related to FieldHelper::GetType in:\nartSet32InstanceFromCode\nSetFieldValueImpl\nCheckReceiver\nField_set\ninterpreter::DoFieldPut\nMethodVerifier::VerifyISGet\nMethodVerifier::VerifyISPut\nMethodVerifier::VerifyIGetQuick\n\nBug: 13077697\n\nChange-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72\n"
    },
    {
      "commit": "4206eb5d86d3a2406361e59b2018152b2485cced",
      "tree": "a83b9f33af46af127dc0c2b781b2b2d505f27502",
      "parents": [
        "fbc3e0baa16f265a5dbc99a38383b4dbc41b04a8"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jun 05 10:15:45 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jun 05 11:36:46 2014 +0200"
      },
      "message": "Fix crash in JDWP ReferenceType.SourceFile command\n\nUpdates Dbg::GetSourceFile to return ABSENT_INFORMATION error code when\nClass::GetSourceFile returns nullptr. This happens if the class has no source\nfile information.\n\nUpdates Class:GetSourceFile to return nullptr for classes which have no\nClassDef item like generated classes. This allows to remove the IsProxyClass\ntest from Dbg::GetSourceFile. Adds this test in proxy_test.\n\nBug: 15426710\nChange-Id: I019da4ced83778d5264484c43b225f8b5c95632e\n"
    },
    {
      "commit": "46960fe5dcc1be07b39a55114338423a73554449",
      "tree": "fb31a1fc7dc07abe3d87a26f8fd394e9f7193304",
      "parents": [
        "567e9dbc65ee183cda2a052dbf224c8c4a8f9423"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "message": "Make the specification of when we need precise constants more precise.\n\nMeans that oatdump output showing values for deoptimization actually reflects\nwhat we see at runtime.\nAlso, doesn\u0027t do precise in the case of determining methods and fields for the\nquickened case, which may be an occasional performance win.\n\nChange-Id: I62c7fb244f7996ba9d52e7a7ce75c046b663fa17\n"
    },
    {
      "commit": "c4ddc042eaf5232a3f9b111f42af39eeab6e0294",
      "tree": "99d5e9525a23d8004b847e6a11de43238a2c1729",
      "parents": [
        "88ce52a525cc4e163c7005821c36308d9a097926"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 13 14:47:50 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 22 14:38:28 2014 -0700"
      },
      "message": "Add support for jemalloc instead of dlmalloc.\n\nBug: 981363\nChange-Id: I226ce3249c0d982eb1a9fdb9d04b25737f77345d\n"
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "e713d9338ad122d6b8c7997387d0c9fc464eea3e",
      "tree": "17b3ef199c2cf4b23bb5df4084e95594cac94dab",
      "parents": [
        "4c6491ff7b37d984622c2380300f2c244b26e7d7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 15 10:48:53 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 15 17:20:06 2014 +0200"
      },
      "message": "Fix JDWP location event report on return instructions\n\nAfter change https://android-review.googlesource.com/94334, the debugger may\nlisten to kDexPcChange event without listening for kMethodExit event. In this\ncase, we need to report kDexPcChange event on RETURN instructions.\n\nBug: 11874828\nChange-Id: Ic61f4eec71e7ece494bee628d7f3358a616d31d3\n"
    },
    {
      "commit": "7d2ae437a87ceb2bdda098ab11f4da588c6a75f5",
      "tree": "dfe7cea3baf8dc650dda8a41ae3f9140e47106d0",
      "parents": [
        "cdf05ab175c64adb49eb97d6dd35e885bbcad072"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 15 11:26:34 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 15 11:26:57 2014 +0200"
      },
      "message": "Fix build\n\nFix format error.\n\nChange-Id: Ic793c52f46d645bf88ea6b28d5b4fa1bdb315a20\n"
    },
    {
      "commit": "cdf05ab175c64adb49eb97d6dd35e885bbcad072",
      "tree": "8ff69a58a36eead9f4b6479c49e5309c0128e518",
      "parents": [
        "3b9097d502fbe47ec897db3ab64f70b5e0d309c9",
        "42cd43fa593e8f0427eb0ec158bef08814a6180b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 15 08:10:45 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 15 08:10:45 2014 +0000"
      },
      "message": "Merge \"Register debugger for interesting instrumentation events only\""
    },
    {
      "commit": "42cd43fa593e8f0427eb0ec158bef08814a6180b",
      "tree": "ad4231ee8a812e7702ddefdf6c9b9061a178d674",
      "parents": [
        "e1910f1d802dff79bba5ef61e1c4fd0b95f6e5b0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 13 14:15:41 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 15 09:25:48 2014 +0200"
      },
      "message": "Register debugger for interesting instrumentation events only\n\nThis avoids the overhead of notifying events (like method entry/exit, field\nread/write, ...) from the interpreter when they are not requested on the JDWP\nside. It also avoids burning JDWP ids for objects and classes before we find\nout we do not need to report the event.\n\nWhen we register a JDWP event (like a breakpoint), we add the debugger as\na listener for the corresponding instrumentation event (like kDexPcChanged).\nOn the other hand, when a JDWP event is cleared, we remove the debugger as a\nlistener for the corresponding instrumentation event. To control we add/remove\nthe debugger as listener only once per instrumentation event, we use reference\ncounting.\n\nLike deoptimization, we can update instrumentation listeners only when when all\nmutator threads are suspended. To add or remove the debugger as listener, we\nextend the support of deoptimization requests to a more general support dealing\nwith instrumentation requests.\nWe add kRegisterForEvent and kUnregisterForEvent request kinds, respectively to\nadd or remove the debugger as a listener for a given instrumentation event.\nNote: we will rename the related classes, methods, ... to avoid pollution in\nthe code review.\n\nThis CL also fixes Instrumentation::IsActive to take field read/write events\ninto account.\n\nBug: 14401699\nBug: 14826953\nChange-Id: Ic896469e82a8589de419ebea4b9dc3116925f3ab\n"
    },
    {
      "commit": "3b9097d502fbe47ec897db3ab64f70b5e0d309c9",
      "tree": "11dffdbce19d9afe55dd6a39976253d1750c7f99",
      "parents": [
        "be02a596e16d99d74a5d906f67be923d4df79bee",
        "8379b2256be5d2be4ad083a76e9f8ec403c4d405"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 15 06:56:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 15 06:56:13 2014 +0000"
      },
      "message": "Merge \"Combine JDWP location events\""
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "8379b2256be5d2be4ad083a76e9f8ec403c4d405",
      "tree": "23a6cc143b59feaa2f6876dad1260b7c07e0f40d",
      "parents": [
        "e1910f1d802dff79bba5ef61e1c4fd0b95f6e5b0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 24 17:38:15 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon May 12 16:15:48 2014 +0200"
      },
      "message": "Combine JDWP location events\n\nThe runtime now sends location events BREAKPOINT, SINGLE_STEP, METHOD_ENTRY,\nMETHOD_EXIT and METHOD_EXIT_WITH_RETURN_VALUE in the same JDWP event packet\nwhen they relate to the same location.\n\nWe update the Dbg::UpdateDebugger method to take initial event flags and\nreturned value. It allows to call this method from DebugInstrumentationListener\nso we can treat method entry/exit events with breakpoint and single-step.\n\nIn the interpreter, we ensure we do not call Instrumentation::DexPcMovedEvent\nwhen Instrumentation::MethodEnterEvent has just been called or when we\u0027re about\nto call Instrumentation::MethodExitEvent. This prevents from sending duplicated\nevents.\n\nI measured the average performance impact on some benchmarks with a Nexus 4\nwithout a debugger attached:\n* 1%-2% for the computed-goto-based interpreter (default interpreter)\n* 5%-10% for the switch-based interpreter.\nThis is mostly due to the test of the boolean flag for the method entry event.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d68427\nBug: 11874828\nChange-Id: Ic4ff61375ff6b4ed5825adeac09f61f97b4be619\n"
    },
    {
      "commit": "4d466a8e4587422c989705dce3b2a19e7f0137f5",
      "tree": "bd8f0f45db9a7d5888b14a070690f59fb599bd68",
      "parents": [
        "f1c036fc8fa97617cc42bda44a0adbc7b856d6cd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 08 19:05:29 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 09 12:23:00 2014 -0700"
      },
      "message": "Remove all LOG(DEBUG) which is not intended to be checked in\n\nBug: 14632493\nChange-Id: Id9da8b87798af0a1b2bd2c178133e5f1ba47d43d\n"
    },
    {
      "commit": "b0fa5dc7769c1e054032f39de0a3f6d6dd06f8cf",
      "tree": "839d13ebfa7170967dd9b4abd434b7abda53da99",
      "parents": [
        "948740c1938860df055ddc801f20fd1707331e38"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 28 16:47:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 29 14:36:28 2014 -0700"
      },
      "message": "Force inlining on trivial accessors.\n\nMake volatility for GetFieldObject a template parameter.\nMove some trivial mirror::String routines to a -inl.h.\n\nBug: 14285442\n\nChange-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92\n"
    },
    {
      "commit": "280286ac8a0e3a30c68be511c8b7a0a4d62936d7",
      "tree": "3a7832ca536700a238b79cf5e1a8bb2ebced9277",
      "parents": [
        "d55e9b1a9f45c19cd7b376a8839ce37f86c66a64"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Apr 28 09:26:50 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 29 09:41:52 2014 +0200"
      },
      "message": "Fix DDM recent allocations\n\nA class may not have source file in which case ClassHelper::GetSourceFile\nreturns NULL. Adding the GetMethodSourceFile function helps us preventing\nfrom dealing with null strings.\n\nBug: 14300208\nChange-Id: I28707f883bacec4ee367ff703328d0f0240855f9\n"
    },
    {
      "commit": "ea8106321c7c05f8b135d7b4cdb34f5d1e6ed0e3",
      "tree": "db61c57b6c15aa8927758025b7ebd4ce278f8ace",
      "parents": [
        "6123d94cddf34f3fdb8ece55476e414e34662394",
        "7ec2f1ca3cbd021848da75d5566f7239ce29676f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 22 07:05:52 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 22 07:05:54 2014 +0000"
      },
      "message": "Merge \"Speed up single-stepping\""
    },
    {
      "commit": "c311d0c85e17773042daaa7a4abc58b3e3c0a0c1",
      "tree": "12103a18b43dd863ab7f3fd51ce9600ef4754d95",
      "parents": [
        "0a01b38244053e72f33339e733b3ae5e15a5966b",
        "3f52eafe5577b8489f90dc8ed5981b3455206147"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 15 06:43:14 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 15 06:43:14 2014 +0000"
      },
      "message": "Merge \"Prepare field watchpoint support\""
    },
    {
      "commit": "3f52eafe5577b8489f90dc8ed5981b3455206147",
      "tree": "7155df948d345c8a5a2d801c23b396af76527ba0",
      "parents": [
        "9b417e4f0f87da6bfe8dc5f02c987acfcb6dca31"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 04 17:50:18 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 15 08:39:18 2014 +0200"
      },
      "message": "Prepare field watchpoint support\n\nAdds field read/write events in the instrumentation. The debugger now registers\nas a listener for these events so JDWP field access and field modification\nevents can be reported.\n\nThis CL will be followed by another one to report these events from the\ninterpreter. Therefore no JDWP field access and field modification events\ncan be sent for now.\n\nBug: 8267708\nChange-Id: If2a93eb590805567d69015c83cce9cd2ab712cbd\n"
    },
    {
      "commit": "bb43b433c845e253a11346f0f03706d58a44f23c",
      "tree": "406fda2973407461cbadd7d0bf45afc109bfedad",
      "parents": [
        "9b417e4f0f87da6bfe8dc5f02c987acfcb6dca31"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Apr 14 11:59:08 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Apr 14 12:01:15 2014 +0200"
      },
      "message": "Clear unused roots from debugger\n\nSingleStepControl and DebugInvokeReq hold roots which are only used during a\nlimited amount of time. Clear these roots once we finish using them.\n\nAlso cleans some code around single-step.\n\nChange-Id: Ica2f65e04a4d60272199490cd40ad1803d3b9f02\n"
    },
    {
      "commit": "7ec2f1ca3cbd021848da75d5566f7239ce29676f",
      "tree": "fd2f221e9598fc7fa5066b2a9c746b228ef53faf",
      "parents": [
        "2be6fc74bce10ac68d3d1b39a5019f520ad170ea"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 27 20:06:47 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 09 18:23:28 2014 +0200"
      },
      "message": "Speed up single-stepping\n\nDuring single-stepping sequence, we need to deoptimize everything when we\nregister a single-step event and undeoptimize everything when it is done. This\ncauses a slow pattern where we continuously deoptimize-undeoptimize everything\nfor each single-step.\n\nThis CL introduces a special handling of single-step undeoptimization. We now\ndelay the undeoptimization to the next resume (one thread or all threads) or\nthe end of the debugging session. Indeed, a single-step event registration is\nalways followed by a resume command.\nAt the \"resume\" point, we know if a single-step event is registered and if we\nreally need to undeoptimize. At the \"registration\" point, we know we did not\nundeoptimized everything so we don\u0027t need to deoptimize everything again.\nTherefore, in a sequence of single-steps, we only do a full deoptimization for\nthe first single-step and a full undeoptimization for the last single-step.\n\nWe update logs at deoptimization points so we can track more precisely. Note\nthey are verbose logs that still must be enabled with -verbose:jdwp option.\n\nWe also make some improvement inside instrumentation:\n* updates Instrumentation::ShouldNotifyMethodEnterExitEvents to comply with its\nname.\n* compute frame id only once when looking for the corresponding instrumentation\nframe.\n* compute the OatMethod once in ClassLinker::GetPortableOatCodeFor to avoid\nlooking for it again.\n\nBug: 13577964\nChange-Id: If6fa198a676b515cd474b8c4d7bf7ef3626f2dc7\n"
    },
    {
      "commit": "1d66e88ea74f7d85f75db7f145fe955d5f0f6872",
      "tree": "715cee13931192549a592a7dac91235c0a1d77c0",
      "parents": [
        "b70b09f6cc1f1fbbf604da7b6b1ea5f74e43571c"
      ],
      "author": {
        "name": "nikolay serdjuk",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Mon Apr 07 13:54:24 2014 +0700"
      },
      "committer": {
        "name": "nikolay serdjuk",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Mon Apr 07 13:54:24 2014 +0700"
      },
      "message": "JDWP request is parsed incorrectly due to junk in the descriptor\n\nThe ClassHelper object is created and deleted on the same line.\nTherefore it is wrong to refer to any class members of the object in\nthe next line. Any references to the object and the object itself\nmust have the same live ranges.\n\nChange-Id: I792d7baa3828b0389254f2941705e006cab092cd\nSigned-off-by: nikolay serdjuk \u003cnikolay.y.serdjuk@intel.com\u003e\n"
    },
    {
      "commit": "dd7624d2b9e599d57762d12031b10b89defc9807",
      "tree": "c972296737f992a84b1552561f823991d28403f0",
      "parents": [
        "8464a64a50190c06e95015a932eda9511fa6473d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 17:43:00 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 08:24:16 2014 -0700"
      },
      "message": "Allow mixing of thread offsets between 32 and 64bit architectures.\n\nBegin a more full implementation x86-64 REX prefixes.\nDoesn\u0027t implement 64bit thread offset support for the JNI compiler.\n\nChange-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147\n"
    },
    {
      "commit": "6c90df9d49b29bddc1e3d27ff2698ae1df89d517",
      "tree": "1a16923b1d323dc1a6ff2d115a0a4a9029c48a4a",
      "parents": [
        "e18b027344e521e1b374d967948c7dd55cc02c8a",
        "4d8fd49509fdcf203107fb33c62d8f451b6eb1d0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 01 09:07:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 01 09:07:50 2014 +0000"
      },
      "message": "Merge \"Return correct JDWP type tag for array class\""
    },
    {
      "commit": "4d8fd49509fdcf203107fb33c62d8f451b6eb1d0",
      "tree": "cfb6cd9417159ba197b2f7dae0c9cc03a8eb7c94",
      "parents": [
        "a708e32a9f764a48175e705ec4bcd2201c84f492"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Mar 28 16:29:41 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Mar 31 11:14:40 2014 +0200"
      },
      "message": "Return correct JDWP type tag for array class\n\nUses GetTypeTag function to get JDWP type tag for a class. This fixes the\nreturned type tag in ClassObjectReference.ReflectedType command.\n\nBug: 13689172\nChange-Id: Ibb9006eb604d84cfb8e279eaeed1982a136d6510\n"
    },
    {
      "commit": "1cd53dbb2163f18b689d2a65cf9c6bdcdb01b407",
      "tree": "b6a214bcc7bd33cfa60e0e7ee51329b3327a537a",
      "parents": [
        "0fd52d5d0cf01e5a109851098a43a79f5615dc0f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 28 15:26:48 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 28 15:26:48 2014 -0700"
      },
      "message": "Fix a DCHECK failure when causing GC from DDMS.\n\nBug: 13647069\nChange-Id: Iae2746b2b7b4493fcf5f0d40d2bf36a9b2d2efc8\n"
    },
    {
      "commit": "a76a6d4cb3dedec909bd927f20bc0ab23198a337",
      "tree": "34ceb525611dde3413cdcab4a3ab8ced3b131fc9",
      "parents": [
        "78bd9b2198f0ccc48036c1517b2d9a9023157dfb"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 20 16:40:17 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 27 16:22:09 2014 +0100"
      },
      "message": "Support inlining with breakpoint\n\nWhen installing/uninstalling a breakpoint in a method, we fully or selectively\ndeoptimize/undeoptimize depending on whether the method can be inlined. When\nthe method can be inlined, it requires full deoptimization. Otherwise, it only\nrequires selective deoptimization.\n\nWe add sanity check to control we are in a consistent state each time we add or\nremove a breakpoint. We also add some comments to better describe the process\nof deoptimization for breakpoint.\n\nBug: 12187616\nChange-Id: Id15adc6e5e2fe783c83c925cbcd19ae02431b7e0\n"
    },
    {
      "commit": "78bd9b2198f0ccc48036c1517b2d9a9023157dfb",
      "tree": "dd08a821ee89dfea00f730ffa41ccd8c45295622",
      "parents": [
        "03fd6e179d3bcd7f1a67a0b5de71b756f1637ec6",
        "4d25df3f76f864b7629ac8c0046d46997f293d8d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 27 07:46:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 27 07:46:58 2014 +0000"
      },
      "message": "Merge \"Refactor deoptimization support in debugger\""
    },
    {
      "commit": "4d25df3f76f864b7629ac8c0046d46997f293d8d",
      "tree": "31840831d8c81d06ffd575fdb0adc8403cd8dbb1",
      "parents": [
        "909f133bc938928a2403baccc983701cb9ebb17f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Mar 21 17:44:46 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Mar 26 11:46:43 2014 +0100"
      },
      "message": "Refactor deoptimization support in debugger\n\nThis CL prepares breakpoint support for inlined methods where we\u0027ll have to\ndeoptimize everything.\n\nWe move deoptimization-related information to Dbg class only (deoptimization\nrequest queue, full deoptimization event count and deoptimization lock). We\nreplace MethodInstrumentionRequest by DeoptimizationRequest. This is used to\nknow which kind of deoptimization is required for a particular event.\n\nIt also simplifies lock ordering a bit during event setup: we no longer need to\nhold the deoptimization lock while holding the breakpoint lock. Moreover, the\ndeoptimization lock should be held only after the event list lock.\n\nBug: 12187616\nChange-Id: Iff13f004adaeb25e5d609238bacce0b9720510e6\n"
    },
    {
      "commit": "b98063a4d54c5a741152a1eebc262d8e223b3b25",
      "tree": "4a5b3bf342db4a28ead0772746017566a6eab723",
      "parents": [
        "909f133bc938928a2403baccc983701cb9ebb17f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Mar 26 10:57:20 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Mar 26 11:05:11 2014 +0100"
      },
      "message": "Fix alloc tracker locking issue\n\nFixes a lock level violation where we attempt to take the thread list lock\nwhile already holding the alloc tracker lock. We now avoid holding the alloc\ntracker lock when updating allocation entrypoints.\n\nBug: 13646642\nChange-Id: Iab505dae67d0c754031fe30d50a7cbd5e4ba5785\n"
    },
    {
      "commit": "3b05e9ba874449dbff65b01b8781001f7d93eea6",
      "tree": "f341766bff83ebea510344c4857af493725d3f58",
      "parents": [
        "027f7fa539514d2a50b448de1de39ac307087483"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 25 09:29:43 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 25 13:56:58 2014 -0700"
      },
      "message": "Add missing debugger root visiting.\n\nBug: 13634574\nChange-Id: I2a76f6c43f1d0ad1922f06deb40a71ff651129fd\n"
    },
    {
      "commit": "77bef430373a56f7dd9ba99ab8471bf5f571253a",
      "tree": "02c59b09bbec56227ffc18811f1d5b8814dfea4f",
      "parents": [
        "c5db77cce4138ac1f473872a06d230d876374337",
        "83a47d8a950867da833dfb5c3d8ddfb3d87a8cfe"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 20 10:22:36 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 20 10:22:37 2014 +0000"
      },
      "message": "Merge \"Fix JDWP ObjectReference.InvokeMethod for virtual method call.\""
    },
    {
      "commit": "83a47d8a950867da833dfb5c3d8ddfb3d87a8cfe",
      "tree": "4d5699876abc9abbed3b89725fd6e97061de1e9e",
      "parents": [
        "0d9c02e661813abdf18b4e7544e204d2da719d20"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 20 09:57:40 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 20 09:57:40 2014 +0100"
      },
      "message": "Fix JDWP ObjectReference.InvokeMethod for virtual method call.\n\nFixes virtual method call by invoking the concrete method in sirt reference\nafter devirtualization, not the original method.\n\nBug: 13526099\nChange-Id: I2e3548eca2f5434e8cece64c22aaf80d1cd8badf\n"
    },
    {
      "commit": "5426324ea7a4c334cde1fdc4b8aae39f8a8e362d",
      "tree": "a3547599de816989a9f4a8937203d1b618b0d97c",
      "parents": [
        "0d9c02e661813abdf18b4e7544e204d2da719d20"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Mar 19 18:16:50 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Mar 19 18:17:32 2014 +0100"
      },
      "message": "Fix thread suspension in ObjectReference.MonitorInfo JDWP command.\n\nUses ThreadList::SuspendAll and ThreadList::ResumeAll to suspend/resume all\nthe threads so we collect monitor info while all threads are suspended.\n\nBug: 13528439\nChange-Id: I81ad0698a759cae428aa6a0149dafda3db4cd198\n"
    },
    {
      "commit": "cb19ebf7609f74b223bd86c94f721498795f9bba",
      "tree": "0db31e4f83046b3d8159d4ba28d9298ff94e06c3",
      "parents": [
        "f17ce4c5e3b6882aa8849d1ed82df4238c436da2"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Mar 11 15:26:35 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Mar 17 09:15:31 2014 +0100"
      },
      "message": "Fix debugger crash in native method frames.\n\nThe main crash happens when we try to read (StackFrame::GetValues) or write\n(StackFrame::SetValues) values in native frames. We use the method\u0027s vmap to\nknow where Dalvik registers live but native methods don\u0027t have vmap. The fix\nis to reply with the OPAQUE_FRAME error which indicates local values are not\naccessible in the frame.\n\nWe prevent from dereferencing null code item which causes some crashes too.\nThis happens when we compute the line table (Method::LineTable) and variable\ntable (Method::VariableTable) of methods without code: native, proxy and\nabstract methods. We do not expect to encounter abstract methods though. We\ntake care of these kinds of method when mangling/demangling local value slots.\n\nWe also fix the location\u0027s pc of native and proxy frames where it must be -1\n(as 8-byte value). We\u0027ll use this property to detect such frames in the JDWP\ntests.\n\nBug: 13366758\nChange-Id: I78e3263fbf2681b5573571c846390d52b9193849\n"
    },
    {
      "commit": "53b8b09fc80329539585dcf43657bc5f4ecefdff",
      "tree": "cac0f82fbb89bd907104e3fed6c36203e11a3de0",
      "parents": [
        "0dea9872082bc3e576ed6cefed86b0d6c0c45ffd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 23:45:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 11:28:10 2014 -0700"
      },
      "message": "Refactor reflective method invocation.\n\nMove invocation code out of JNI internal into reflection, including ArgArray\ncode. Make reflective invocation use the ArgArray to build arguments rather\nthan allocating a jvalue[] and unboxing arguments into that.\nMove reflection part of jni_internal_test into reflection_test.\nMake greater use of fast JNI.\n\nChange-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057\n"
    },
    {
      "commit": "3314dcf81d116c3142520970286ffaede67ab522",
      "tree": "424291dddb6c7c3458c33771b6f979035a8e60c4",
      "parents": [
        "cd4f41a667b5eee6b12ec1cbec1912024b3b122e",
        "b7054baf28d4d652fbd98a94b089344a31898d53"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 13 16:16:13 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 13 16:16:14 2014 +0000"
      },
      "message": "Merge \"Fix debugger crashes in presence of proxy objects.\""
    },
    {
      "commit": "52d131d8e71ae9ea915ea84a3f95d49547e8e661",
      "tree": "4a723664a9634747d273e12c87a396db160f50f6",
      "parents": [
        "37d4c1db4d705f5a28001f65afdd68d0527948d8"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 13 16:17:40 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 13 17:03:50 2014 +0100"
      },
      "message": "Fix thread suspension assertion in debugger.\n\nUpdates Dbg::GetThreadGroup to ensure we do call EndAssertNoThreadSuspension\nafter StartAssertNoThreadSuspension and not returning in the middle. Note this\nonly happens in debug mode where this assertion is enabled.\n\nAlso add missing thread safety annotations.\n\nBug: 13425576\nChange-Id: Idb9f32d289038b77771369c1283774676ff433c7\n"
    },
    {
      "commit": "b7054baf28d4d652fbd98a94b089344a31898d53",
      "tree": "54d2548fab1faa859d6e610d03881e71074b1cb7",
      "parents": [
        "37d4c1db4d705f5a28001f65afdd68d0527948d8"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 13 11:52:31 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 13 15:11:19 2014 +0100"
      },
      "message": "Fix debugger crashes in presence of proxy objects.\n\nFix ClassHelper::NumDirectInterfaces to use IfTable::Count instead of the\niftable array\u0027s length (which is twice the interface count). This happens when\nprocessing ReferenceType::Interfaces command and was causing a crash.\n\nReturn ABSENT_INFORMATION error code when we\u0027re asked for the source file of a\nproxy class. Otherwise we call ClassHelper::GetSourceFile which expect the\nclass has a corresponding ClassDef item in the DEX file which is not true for\nproxy classes.\n\nAdd new proxy_test to check ClassHelper works correctly with proxy classes.\n\nBug: 13426918\nChange-Id: I5c1212b1a697dd7dc1ab18e99552ee113c533a5a\n"
    },
    {
      "commit": "719d1a33f6569864f529e5a3fff59e7bca97aad0",
      "tree": "fcd84efd7b9806b93ec1a44e2317e6f882e7fe0e",
      "parents": [
        "5365eea9940269b662cfbe103caa348816ff1558"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 12:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 19:16:01 2014 -0800"
      },
      "message": "Enable annotalysis on clang ART builds.\n\nFix clang build errors aswell as restructure locking/mutex code for correct\nthread safety analysis support.\nReorder make dependencies so that host builds build first as they should\nprovide better compilation errors than target.\nRemove host\u0027s use of -fno-omit-frame-pointer as it has no value with correct\nuse of CFI, which we should have.\n\nChange-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90\n"
    },
    {
      "commit": "6fac447555dc94a935b78198479cce645c837b89",
      "tree": "bcf1449999084b1e1dec3dac287f6f3670d7eda0",
      "parents": [
        "7f0ff7e7fff82566bca5f9353eaa2c4f81f0671a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 25 17:01:10 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 26 16:38:22 2014 -0800"
      },
      "message": "Make allocations report usable size.\n\nWork-in-progress to allow arrays to fill usable size. Bug: 13028925.\nUse C++11\u0027s override keyword on GCC \u003e\u003d 2.7 to ensure that we override GC and\nallocator methods.\nMove initial mirror::Class set up into a Functor so that all allocated objects\nhave non-zero sizes. Use this property to assert that all objects are never\nlarger than their usable size.\nOther bits of GC related clean-up, missing initialization, missing use of\nconst, hot methods in .cc files, \"unimplemented\" functions that fail at\nruntime in header files, reducing header file includes, move valgrind\u0027s space\ninto its own files, reduce number of array allocation routines.\n\nChange-Id: Id5760041a2d7f94dcaf17ec760f6095ec75dadaa\n"
    }
  ],
  "next": "aaea7343831b64f4351c9abc7493ec062adfaf53"
}
