)]}'
{
  "log": [
    {
      "commit": "c751fdcc9491c1b60c3db517fbc41bb98e92441f",
      "tree": "a59258cf4b9c46e928e547216554149635e6d4f2",
      "parents": [
        "e0309ad355e778fe692beb8968bf8aa7edbd3302"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 30 15:25:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 01 10:58:22 2014 -0700"
      },
      "message": "Add handler for printing java stack traces for compiled code SIGSEGV.\n\nAdded a new FaultHandler which attempts to print a java stack trace\nwhen a SIGSEGV occurse in generated code. This should help debugging\ncompiler and GC related heap corruption.\n\nBug: 13725693\nBug: 12934910\n\nChange-Id: Id54d83ea180c222eb86d449c61926e83f0b026ad\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": "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": "6ed19fd1b08abbc438781ae3e6fea111c1f92315",
      "tree": "1a6c62363904c7c19c2541d0a5304cb85cea48d2",
      "parents": [
        "cfea1d0ba7a1b6547aee704aab8210505da1f708"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 20 08:10:17 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 20 14:34:21 2014 -0700"
      },
      "message": "64bit: make runtime offsets more deterministic.\n\nSTL implementations vary causing offsets not to be consistent. Place member\nvariables we care about the offsets of at the start of Runtime.\n\nChange-Id: I3ad7fe606cb99bcdd884a8fdbdd06bd7e047cd84\n"
    },
    {
      "commit": "b95a5345ae4217b70ca36f0cced92f68dda7caf5",
      "tree": "d9c76db71eb8dd3a668643781eefe6152888fd1d",
      "parents": [
        "66e4c3e96dccdec7423d673ad6bbf7821a776651"
      ],
      "author": {
        "name": "Stuart Monteith",
        "email": "stuart.monteith@arm.com",
        "time": "Wed Mar 12 13:32:32 2014 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 19 17:17:55 2014 -0700"
      },
      "message": "AArch64: Add arm64 runtime support.\n\nAdds support for arm64 to ART. Assembler stubs are sufficient for\ndown calls into interpreter. JNI compiler and generics are not finished.\n\nBasic Generic JNI functionality.\n\nChange-Id: I4a07c79d1e037b9f5746673480e32cf456867b82\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": "b373e091eac39b1a79c11f2dcbd610af01e9e8a9",
      "tree": "034d820c4829e0dcf6161473cc39f7250123bfaa",
      "parents": [
        "9545a446e99b22248099fe66f5f9431530c20851"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Feb 20 16:06:36 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 13 12:21:15 2014 -0700"
      },
      "message": "Implicit null/suspend checks (oat version bump)\n\nThis adds the ability to use SEGV signals\nto throw NullPointerException exceptions from Java code rather\nthan having the compiler generate explicit comparisons and\nbranches.  It does this by using sigaction to trap SIGSEGV and when triggered\nmakes sure it\u0027s in compiled code and if so, sets the return\naddress to the entry point to throw the exception.\n\nIt also uses this signal mechanism to determine whether to check\nfor thread suspension.  Instead of the compiler generating calls\nto a function to check for threads being suspended, the compiler\nwill now load indirect via an address in the TLS area.  To trigger\na suspend, the contents of this address are changed from something\nvalid to 0.  A SIGSEGV will occur and the handler will check\nfor a valid instruction pattern before invoking the thread\nsuspension check code.\n\nIf a user program taps SIGSEGV it will prevent our signal handler\nworking.  This will cause a failure in the runtime.\n\nThere are two signal handlers at present.  You can control them\nindividually using the flags -implicit-checks: on the runtime\ncommand line.  This takes a string parameter, a comma\nseparated set of strings.  Each can be one of:\n\nnone        switch off\nnull        null pointer checks\nsuspend     suspend checks\nall         all checks\n\nSo to switch only suspend checks on, pass:\n-implicit-checks:suspend\n\nThere is also -explicit-checks to provide the reverse once\nwe change the default.\n\nFor dalvikvm, pass --runtime-arg -implicit-checks:foo,bar\n\nThe default is -implicit-checks:none\n\nThere is also a property \u0027dalvik.vm.implicit_checks\u0027 whose value is the same\nstring as the command option.  The default is \u0027none\u0027.  For example to switch on\nnull checks using the option:\n\nsetprop dalvik.vm.implicit_checks null\n\nIt only works for ARM right now.\n\nBumps OAT version number due to change to Thread offsets.\n\nBug: 13121132\nChange-Id: If743849138162f3c7c44a523247e413785677370\n"
    },
    {
      "commit": "39c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13",
      "tree": "fa777039b3f7c34f3dd322d04307766246526080",
      "parents": [
        "0918614b7434783477e8668df7850a7aaf8d5611"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 28 18:33:52 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Mar 07 13:42:48 2014 -0800"
      },
      "message": "Make use of profiling information for dex2oat\n\nIf the profile file exists, the compiler driver will read it\nand store the data in an internal map.  Then, when we want to work\nout whether to compile a method or not, the map is consulted and if\nthe method shows up with a high enough percentage of use we compile it.\n\nThe profile file itself is created by installd and is writeable by the\napp.  The file is in /data/dalvik-cache/profiles and is named by\nthe package name.\n\nThis also modifies the profiler itself to:\n\n1. Only count runnable threads (not suspended threads) in the profile\n2. Use system properties to allow tuning of the profile parameters\n3. Merge profiles from multiple processes using file locking.\n\nBug: 12877748\nChange-Id: Iab2f3a327a2860db2a80d5724277d6c626227f2b\n\nConflicts:\n\tcompiler/dex/frontend.cc\n\tcompiler/dex/mir_analysis.cc\n\tcompiler/dex/verification_results.cc\n\tcompiler/driver/compiler_driver.cc\n\tdex2oat/dex2oat.cc\n\truntime/class_linker.cc\n\truntime/runtime.cc\n\truntime/runtime.h\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": "2ec6520d57479d393bffa05defa1479b25ca8382",
      "tree": "6f5266b53e335c7bf74b52905f64435dd114a18f",
      "parents": [
        "e6031e6fefc8f439b44e284b8563c790ef764c68"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 15:16:37 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 16:53:15 2014 -0800"
      },
      "message": "Support compiler filters for boot classpath\n\nimage_writer.cc\n  Remove assumption that all methods in the boot classpath are compiled\n\noat_writer.cc\n  Don\u0027t skip writing ArtMethod::quick_code_offset_ for methods that need resolution, leave that to ImageWriter\n\ndex2oat.cc\n  Allow dex2dex compilation of image dex files by making the in memory pages writable in all cases, not just app case.\n\noatdump.cc\n  dump new OatHeader fields\n  use ImageSpace.GetImageFilename, not command line image filename, since location may be in dalvik-cache\n  remove inaccurate check about non-null GC map\n\nquick_trampoline_entrypoints.cc\n  add and improve some DCHECKS that were useful while debugging\n\nclass_linker.cc\nimage_space.cc\n  fix double facepalm\n\nparsed_options.cc\n  fix zygote logging to not skip values to two part options like -classpath \u003cfoo\u003e\n\nruntime.cc\n  wireup parsed compiler options to runtime\n\nChange-Id: Iad314df0b80623c0663d61713d5098297ab9ac87\n"
    },
    {
      "commit": "893263b7d5bc2ca43a91ecb8071867f5134fc60a",
      "tree": "a99238843a9caad00122c8f7d13e031f5d81bc38",
      "parents": [
        "2fece5941f12395a94e742313e7059a9e419994d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 11:07:42 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 14:21:58 2014 -0800"
      },
      "message": "Avoid marking old class linker and intern table roots during pause.\n\nThe new root visiting logic has a concept of a root log which holds\nnew roots which were added since the start of the GC. This is an\noptimization since it lets us only mark these newly added roots\nduring the pause (or pre-cleaning) since the other roots intern table\nand class linker roots were marked concurrently at the start of the\nGC.\n\nBefore (EvaluateAndApplyChanges):\nMarkConcurrentRoots:\tSum: 605.193ms\nAfter:\nMarkConcurrentRoots:\tSum: 271.858ms\n\nThis should also reduce pathological GC pauses which used to be able\nto happen when the intern table or class linker became \"dirty\"\nduring the concurrent GC.\n\nChange-Id: I433fab021f2c339d50c35aaae7161a50a0901dec\n"
    },
    {
      "commit": "9583fbcf597eff6d0b3c5359b8e8d5f70ed82c40",
      "tree": "847912709f811adda0fa63e89e4bf8af27769f2e",
      "parents": [
        "093aad184b4451639951a7e012d9b55cbf8c8a07"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 28 15:21:07 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 04 16:30:48 2014 +0000"
      },
      "message": "Remove oat file location in the image.\n\nThe oat file is now always in the same directory, and has the\nsame name as the image file. Only difference is the extension.\n\nThis also removes the need for host-prefix.\n\nChange-Id: I16d1f7aeb1d58372d41921694664e9c321afc1ad\n"
    },
    {
      "commit": "491ca9e75fad381468dd7f5fdbff56d1a9738dd7",
      "tree": "4a88d05188aebbcbe868a27b58fc1a932f914ce2",
      "parents": [
        "82e3a8ef9cd776d7026b45fe7fb6c72bcfd61394"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 02 18:24:38 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 13:31:40 2014 -0800"
      },
      "message": "Add ART -help and -showversion\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d62149\nChange-Id: I5c21c0433f5f341f94e7d977e8d2d69cc46d6fe3\n"
    },
    {
      "commit": "15d3402bbf8265eb1165694da2e4117eb128f3bc",
      "tree": "eea2dae3c338d3070f63e086fa2a3669a9204873",
      "parents": [
        "ba8fdcc10193cdfa825c973d740b7ebf6dec2d89"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 26 17:16:38 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 28 17:02:17 2014 -0800"
      },
      "message": "Add custom SIGSEGV handler to help find heap corruption.\n\nThe new signal handler prints heap diagnostics when you get a SIGSEGV.\nAdded a fault message member in runtime which is modifiable by\nRuntime::SetFaultMessage. When you get a SIGSEGV it will print out\nwhatever is stored in this string as well as the normal information.\nThis is useful for debugging heap corruption since it lets you see\nwhich threads were in which methods when the last GC occured.\n\nAdded some smarter object dumping logic when the faulting address is\nin the heap.\n\nBug: 12934910\n\nChange-Id: Ia72be2c39f70ad711cbd746d66fad2b617d5d29f\n"
    },
    {
      "commit": "6449c62e40ef3a9bb75f664f922555affb532ee4",
      "tree": "2f1b2120bd648c95dea32b68c8e168e42c8e24fd",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 10 23:48:36 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 14:24:12 2014 -0800"
      },
      "message": "Create CompilerOptions\n\nPackage up most compiler related options in CompilerOptions. Details include:\n- Includes compiler filter, method thresholds, SEA IR mode.\n- Excludes those needed during Runtime::Init such as CompilerCallbacks and VerificationResults.\n- Pass CompilerOptions to CompilerDriver.\n- Remove CompilerOptions from Runtime.\n- Add ability to pass options for app and image dex2oat to runtime via\n  -Xcompiler-option and -Ximage-compiler-option respectively.\n\nOther\n- Replace 2x CompilerCallbacks implementations with one.\n- Factor out execv code for use by both image and oat generation.\n- More OatFile error_msg reporting.\n- DCHECK for SuspendAll found trying to run valgrind.\n\nChange-Id: Iecb57da907be0c856d00c3cd634b5042a229e620\n"
    },
    {
      "commit": "936b37f3a7f224d990a36b2ec66782a4462180d6",
      "tree": "94de34072e8ce0a2a251ed8d5ccc7d87709db750",
      "parents": [
        "fd80b5717c0cdd10ef2caabf4291415a52fcc874"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 14 00:52:24 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 20 14:46:02 2014 -0800"
      },
      "message": "Upcall support for x86-64.\n\nSufficient to pass jni_internal_test.\n\nChange-Id: Ia0d9b8241ab8450e04765b9c32eb6dc8fc1a8733\n"
    },
    {
      "commit": "815873ecc312b1d231acce71e1a16f42cdaf09f2",
      "tree": "18ba2fa951775e60b240271bfe975e6e2cfc654c",
      "parents": [
        "2befd09cf4fe89a18a655f3e1dd310831bfa769f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 13 18:02:13 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 18 10:45:12 2014 -0800"
      },
      "message": "Change root visitor to use Object**.\n\nSimplifies code and improves the performance of root visiting since\nwe usually don\u0027t need to check to see if the object moved.\n\nChange-Id: Iba998f5a15ae1fa1b53ca5226dd2168a411196cf\n"
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\n"
    },
    {
      "commit": "97f4489166ae31c12d35ad3f550a5fc8d143b4fa",
      "tree": "3fc0e914648425587960fb12b7369e0020015da0",
      "parents": [
        "4b23250f4cbf3047924c646c1a0c078394f8362d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 14 23:10:04 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 14 23:10:04 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add a script for running art standalone.\"\"\"\n\nThis reverts commit 4b23250f4cbf3047924c646c1a0c078394f8362d.\n\nChange-Id: Ib749a8267abf35e51552b741ba749d6ed6975f95\n"
    },
    {
      "commit": "4b23250f4cbf3047924c646c1a0c078394f8362d",
      "tree": "62bae8c857c85293bcba4bf920ed47ed094e458a",
      "parents": [
        "8b8adace3511e6fd68c6ae0eb80046d68186f8eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 13 08:45:56 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 13 14:36:28 2014 +0000"
      },
      "message": "Revert \"Revert \"Add a script for running art standalone.\"\"\n\nThis reverts commit 41dcb9f856a2051527cd595f8fe7d200066acba4.\n\nChange-Id: Ide6fa696c6fb43fe17e0993e8c9d1b588c99b1f3\n"
    },
    {
      "commit": "41dcb9f856a2051527cd595f8fe7d200066acba4",
      "tree": "2ced313e1f56d616d4a5a2317781aea86ea04b4c",
      "parents": [
        "707c96a9d3b23182d1515a7e683c0885eee08a06"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 12 12:25:56 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 12 12:25:56 2014 -0800"
      },
      "message": "Revert \"Add a script for running art standalone.\"\n\nThis reverts commit 1f5a90f28443886ebefcfbd531b8e41ece298cca.\n"
    },
    {
      "commit": "763a08537134c14defe8a591f88846164adef0c9",
      "tree": "f2610bda28e12a7783594a54e9363d2d9936179d",
      "parents": [
        "7655968112fa08844f3a810bd6203fdde4d5f58f",
        "1f5a90f28443886ebefcfbd531b8e41ece298cca"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 12 10:22:39 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 12 10:22:40 2014 +0000"
      },
      "message": "Merge \"Add a script for running art standalone.\""
    },
    {
      "commit": "1f5a90f28443886ebefcfbd531b8e41ece298cca",
      "tree": "55aa67a2549526ed14d51092663be0fd9803ba19",
      "parents": [
        "a52214230ad091359956ed7566670963aedf2045"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 07 18:33:04 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 12 09:54:40 2014 +0000"
      },
      "message": "Add a script for running art standalone.\n\nChange-Id: I0c48856d811c40662a6e4a4782478a0bc8e0f697\n"
    },
    {
      "commit": "fd14755c09ada4769b5b6658e484441ca3f628b5",
      "tree": "c70c10b6e319f44dadb56c78acaf7ce89b502d82",
      "parents": [
        "3c976a8f82007285316dd9d1bbccb659b0668a06",
        "0177e53ea521ad58b70c305700dab32f1ac773b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 12 01:16:29 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 12 01:16:30 2014 +0000"
      },
      "message": "Merge \"Work in the direction of hard float quick ABIs.\""
    },
    {
      "commit": "0177e53ea521ad58b70c305700dab32f1ac773b7",
      "tree": "db15627a19a04634cf84cecd15b813319d80d225",
      "parents": [
        "abaf927f29f6feceb3df3e6ced7d01970ba0dbe9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 11 16:30:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 11 17:02:21 2014 -0800"
      },
      "message": "Work in the direction of hard float quick ABIs.\n\nPass a shorty to ArtMethod::Invoke so that register setup can use it.\nDocument x86-64 ABI.\nAdd extra debug output for one JNI native method registration fails, namely a\ndump of the Class and its dex file\u0027s location.\nAdd hack to get testing of OatMethod\u0027s without GC maps working in 64bit.\n\nChange-Id: Ic06b68e18eac33637df2caf5e7e775ff95ae70f3\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "412c7fced915fc8d4d5e4166e977d55c809168a6",
      "tree": "b8efee7f46a440f3e89765b1e9b2aa6454839c87",
      "parents": [
        "109e2b34799a377a0407781fc32ec1ec607d6c41"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 07 12:18:39 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Feb 08 15:23:36 2014 -0800"
      },
      "message": "Make debugger / jdwp compaction safe.\n\nFixed GetInstances, GetReferringObjects, CountInstances to use\nVisitObjects instead of the live bitmap.\n\nWe now treat the object registry as system weaks and update the\nobjects when/if they move. Also added the recent_allocation_records_\nas roots.\n\nBug: 12936165\n\nChange-Id: I615c289efbf2977ceab5c4ffa73d216d799e6e33\n"
    },
    {
      "commit": "a4adbfd44032d70e166e6f18096bbbed05a990ba",
      "tree": "8fe1c7e9e0a12ca5d97de79f034978cadf25b391",
      "parents": [
        "6957616884d7b290f2b8e98e2c4304695799134b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 04 18:12:17 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 07 15:33:21 2014 -0800"
      },
      "message": "RosAlloc verification.\n\nIf enabled, RosAlloc verification checks the allocator internal\nmetadata and invariants to detect bugs, heap corruptions, and race\nconditions. Added runtime options for enabling and disabling\nit. Enable it for the debug build.\n\nBug: 9986565\nBug: 12592026\nChange-Id: I923742b87805ae839f1549d78d0d492733da6a58\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "055d46c479369ea825712834353660b45215c195",
      "tree": "8d8074b21603975548118e06f1525e3c12d14f6a",
      "parents": [
        "4c4f90c2d1776137e249c6720b83c81c09961dda"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 06 11:22:17 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 06 11:25:49 2014 -0800"
      },
      "message": "Add missing SIRT to LoadNativeLibrary.\n\nWhen we transition to kWaitingForJniOnLoad, we are suspended and\na GC can occur. This caused issues since classloaders are movable.\n\nChange-Id: Iae59019c22ac64322a82300107d06a4323ee602b\n"
    },
    {
      "commit": "6c2270be8d01a9cc3b691c49b43644545c2f4f33",
      "tree": "15d3163d15ce7de270045cf7b9ede5eca4b9fd04",
      "parents": [
        "78c0bb9bc0668be07baa0bde1e82a475a0ac1f86"
      ],
      "author": {
        "name": "lzang1",
        "email": "lin.zang@intel.com",
        "time": "Wed Jan 29 14:21:25 2014 +0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 29 10:59:42 2014 -0800"
      },
      "message": "Fix GC options to make the setting available\n\nThe concurrent gc thread number and parallel gc thread number is configurable by the options,\nThis patch fix the bug that making the options value valid.\nThis patch also fix that GC log threshold settings as MillionSecond.\n\nChange-Id: I737838ef4af44396c23a538cd8a33581d9ae5e4d\nAuthor: Lin Zang \u003clin.zang@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "be1ca55db3362f5b100c4c65da5342fd299520bb",
      "tree": "b9df6f5562d884698ed15f21764a704bb51e359e",
      "parents": [
        "9d8918fe97c235fdc6eb2c7f2d50a6673ab50329"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jan 15 11:46:48 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 23 15:29:12 2014 -0800"
      },
      "message": "Use direct class pointers at allocation sites in the compiled code.\n\n- Rather than looking up a class from its type ID (and checking if\n  it\u0027s resolved/initialized, resolving/initializing if not), use\n  direct class pointers, if possible (boot-code-to-boot-class pointers\n  and app-code-to-boot-class pointers.)\n- This results in a 1-2% speedup in Ritz MemAllocTest on Nexus 4.\n- Embedding the object size (along with class pointers) caused a 1-2%\n  slowdown in MemAllocTest and isn\u0027t implemented in this change.\n- TODO: do the same for array allocations.\n- TODO: when/if an application gets its own image, implement\n  app-code-to-app-class pointers.\n- Fix a -XX:gc bug.\n  cf. https://android-review.googlesource.com/79460/\n- Add /tmp/android-data/dalvik-cache to the list of locations to\n  remove oat files in clean-oat-host.\n  cf. https://android-review.googlesource.com/79550\n- Add back a dropped UNLIKELY in FindMethodFromCode().\n  cf. https://android-review.googlesource.com/74205\n\nBug: 9986565\nChange-Id: I590b96bd21f7a7472f88e36752e675547559a5b1\n"
    },
    {
      "commit": "938a03b3f196895e1fce2b862ae01039deca4c34",
      "tree": "cd3b72a605a71aa6dcee778c7f6a003d6dbf0bab",
      "parents": [
        "ed31badc6de501320f49bec679dcdf9214ac07cc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 16 15:10:31 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 17 15:56:57 2014 -0800"
      },
      "message": "Fix heap verification and add runtime options.\n\nPost GC heap verification is now enabled by default for debug builds.\nAdded four Xgc runtime options: preverify, nopreverify, postverify,\nnopostverify.\n\nFixed another bug where the non-moving space could theoretically end\nup outside of the card table address range.\n\nBug: 10672951\nChange-Id: I5ba3cd96dbfb900263dba795242df74c563deaa3\n"
    },
    {
      "commit": "0f875ef27a4842d2e7c857b3c7eedbf8c8cf873f",
      "tree": "97ec8ba6b3aca750a07b4376b54d0a6d1ea92bd4",
      "parents": [
        "4289116517f765df84820bf753fbf891986f40ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 14 15:49:54 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 14 15:51:15 2014 -0800"
      },
      "message": "Revert accidental default collector type change.\n\nDefault collector type had been changed to generational semi-space\nby default by accident.\n\nChange-Id: I060b3f292261b8bb258ca2a350e26a328340c49c\n"
    },
    {
      "commit": "6f4ffe41649f1e6381e8cda087ad3749206806e5",
      "tree": "9848617f37fbe418e59af21a5c204e7b2669a0cc",
      "parents": [
        "89b7ab4cc6e5372bb4dabcc06a907fc333eca3f6"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jan 13 12:30:44 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 14 13:34:59 2014 -0800"
      },
      "message": "Improve the generational mode.\n\n- Turn the compile-time flags for generational mode into a command\n  line flag.\n\n- In the generational mode, always collect the whole heap, as opposed\n  to the bump pointer space only, if a collection is an explicit,\n  native allocation-triggered or last attempt one.\n\nChange-Id: I7a14a707cc47e6e3aa4a3292db62533409f17563\n"
    },
    {
      "commit": "e6da9af8dfe0a3e3fbc2be700554f6478380e7b9",
      "tree": "127a0565fce79f05d82d0ff242fbbffa6e2bc6b3",
      "parents": [
        "977d409b959497eecc44a35cff16115d0f04ccab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 11:54:42 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 08 14:16:12 2014 -0800"
      },
      "message": "Background compaction support.\n\nWhen the process state changes to a state which does not perceives\njank, we copy from the main free-list backed allocation space to\nthe bump pointer space and enable the semispace allocator.\n\nWhen we transition back to foreground, we copy back to a free-list\nbacked space.\n\nCreate a seperate non-moving space which only holds non-movable\nobjects. This enables us to quickly wipe the current alloc space\n(DlMalloc / RosAlloc) when we transition to background.\n\nAdded multiple alloc space support to the sticky mark sweep GC.\n\nAdded a -XX:BackgroundGC option which lets you specify\nwhich GC to use for background apps. Passing in\n-XX:BackgroundGC\u003dSS makes the heap compact the heap for apps which\ndo not perceive jank.\n\nResults:\nSimple background foreground test:\n0. Reboot phone, unlock.\n1. Open browser, click on home.\n2. Open calculator, click on home.\n3. Open calendar, click on home.\n4. Open camera, click on home.\n5. Open clock, click on home.\n6. adb shell dumpsys meminfo\n\nPSS Normal ART:\nSample 1:\n    88468 kB: Dalvik\n     3188 kB: Dalvik Other\nSample 2:\n    81125 kB: Dalvik\n     3080 kB: Dalvik Other\n\nPSS Dalvik:\nTotal PSS by category:\nSample 1:\n    81033 kB: Dalvik\n    27787 kB: Dalvik Other\nSample 2:\n    81901 kB: Dalvik\n    28869 kB: Dalvik Other\n\nPSS ART + Background Compaction:\nSample 1:\n    71014 kB: Dalvik\n     1412 kB: Dalvik Other\nSample 2:\n    73859 kB: Dalvik\n     1400 kB: Dalvik Other\n\nDalvik other reduction can be explained by less deep allocation\nstacks / less live bitmaps / less dirty cards.\n\nTODO improvements: Recycle mem-maps which are unused in the current\nstate. Not hardcode 64 MB capacity of non movable space (avoid\nreturning linear alloc nightmares). Figure out ways to deal with low\nvirtual address memory problems.\n\nBug: 8981901\n\nChange-Id: Ib235d03f45548ffc08a06b8ae57bf5bada49d6f3\n"
    },
    {
      "commit": "0aded089f565008ba5908e395e5914ca4f91f2de",
      "tree": "3b1238d956e0181d00243604c83c3a0be368437d",
      "parents": [
        "98ba6cebd22489c959d845884ee045dcbd958d41"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Nov 07 13:15:11 2013 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 07 10:58:07 2014 -0800"
      },
      "message": "Add sampling profiler\n\nThis adds a sampling profiler thread that runs every so often, gathering\nprofiling data and writing the results to a file in /data/data (specific to\napp running).  The intention is to use these files as input to the compiler\nso that it can determine the best methods to compile.\n\nBug: 11539952\nChange-Id: I0bfbb4146fb7966673c792f017ffac8107b6272d\n"
    },
    {
      "commit": "2b5eaa2b49f7489bafdadc4b4463ae27e4261817",
      "tree": "ada8b60989919068d562e3fcee01aa5b7c5cfc61",
      "parents": [
        "0bf1f266869776c2dd21b3242599d74ac80855f0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 13 13:59:30 2013 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 17 11:03:53 2013 +0000"
      },
      "message": "Move compiler code out of method verifier.\n\nWe want to detect small methods for inlining at the end of\nthe method verification. Instead of adding more compiler\ncode to the runtime, we create a callback from the runtime\ninto the compiler, so that we can keep the code there.\nAdditionally, we move the compiler-related code that was\nalready in the method verifier to the compiler since it\ndoesn\u0027t really belong to the runtime in the first place.\n\nChange-Id: I708ca13227c809e07917ff3879a89722017e83a9\n"
    },
    {
      "commit": "692fafd9778141fa6ef0048c9569abd7ee0253bf",
      "tree": "63ce2c7d4be6af2524a5f442195c8c8b6f5cc955",
      "parents": [
        "07dc96d370c4844c7a279c01cedf24a272b9f4f3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 29 17:24:40 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 16:57:37 2013 -0800"
      },
      "message": "Thread local bump pointer allocator.\n\nAdded a thread local allocator to the heap, each thread has three\npointers which specify the thread local buffer: start, cur, and\nend. When the remaining space in the thread local buffer isn\u0027t large\nenough for the allocation, the allocator allocates a new thread\nlocal buffer using the bump pointer allocator.\n\nThe bump pointer space had to be modified to accomodate thread\nlocal buffers. These buffers are called \"blocks\", where a block\nis a buffer which contains a set of adjacent objects. Blocks\naren\u0027t necessarily full and may have wasted memory towards the\nend. Blocks have an 8 byte header which specifies their size and is\nrequired for traversing bump pointer spaces.\n\nMemory usage is in between full bump pointer and ROSAlloc since\nmadvised memory limits wasted ram to an average of 1/2 page per\nblock.\n\nAdded a runtime option -XX:UseTLAB which specifies whether or\nnot to use the thread local allocator. Its a NOP if the garbage\ncollector is not the semispace collector.\n\nTODO: Smarter block accounting to prevent us reading objects until\nwe either hit the end of the block or GetClass() \u003d\u003d null which\nsignifies that the block isn\u0027t 100% full. This would provide a\nslight speedup to BumpPointerSpace::Walk.\n\nTimings: -XX:HeapMinFree\u003d4m -XX:HeapMaxFree\u003d8m -Xmx48m\nritzperf memalloc:\nDalvik -Xgc:concurrent: 11678\nDalvik -Xgc:noconcurrent: 6697\n-Xgc:MS: 5978\n-Xgc:SS: 4271\n-Xgc:CMS: 4150\n-Xgc:SS -XX:UseTLAB: 3255\n\nBug: 9986565\nBug: 12042213\n\nChange-Id: Ib7e1d4b199a8199f3b1de94b0a7b6e1730689cad\n"
    },
    {
      "commit": "c528dba35b5faece51ca658fc008b688f8b690ad",
      "tree": "d95c113a639d07f7e3b88e8a6caa9b5f6e044801",
      "parents": [
        "76f552307ee980221626d1dff0ada56c989d24ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 12:00:11 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 16:00:58 2013 -0800"
      },
      "message": "Enable moving classes.\n\nSlight reduction in Zygote size, memory savings are in the noise.\nBefore: Zygote size: 8739224\nAfter: Zygote size: 8733568\n\nFixed a bug where we didn\u0027t set the concurrent start bytes after\nswitching the allocator from bump pointer to ROSAlloc in the\nzygote. This caused excessive memory usage.\n\nAdded the method verifiers as roots to fix an issue caused by\nRegTypes holding a Class*.\n\nAdded logic to clear card table in the SemiSpace collector, this\nreduces DalvikOther from ~2400k -\u003e ~1760k when using the SemiSpace\ncollector.\n\nAdded a missing lock to the timing loggers which caused a rare\none time crash in std::set.\n\nBug: 11771255\nBug: 8499494\nBug: 10802951\n\nChange-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae\n"
    },
    {
      "commit": "501668ae6b3c1546cd94cbce71bc2e9eb0d851b8",
      "tree": "6092a656c5231870ea67743910454e67354d4be7",
      "parents": [
        "d83d4c86c89357a74e94963994ad0c42ea7299c3"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Dec 04 17:43:52 2013 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Dec 04 17:43:52 2013 -0800"
      },
      "message": "Fix a rosalloc check failure in a test.\n\nBug: 11884037\nChange-Id: I44356bbb0b4406ac289d59f4fd29878452087c03\n"
    },
    {
      "commit": "0de9f73afe3e835b63f2ee0c1416930656449f3f",
      "tree": "ebe8c36cb194c7f662b53452f53e5ad7f712e50e",
      "parents": [
        "2e899a92439dc6bdaaa67b8230933006284aa600"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 22 17:58:48 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 22 18:00:45 2013 -0800"
      },
      "message": "Add -xGc: MS, CMS, SS options to specify which GC to use.\n\nCan be used for running tests or benchmarks with semispace,\nmarksweep or concurrent marksweep.\n\nChange-Id: Ic9ab1220150f2c7c9c30df4ffee45b9d303094b3\n"
    },
    {
      "commit": "2e899a92439dc6bdaaa67b8230933006284aa600",
      "tree": "c4ecf70d942c258a9c063326c4e318132948f4e8",
      "parents": [
        "ff3b24aa929a9db79daeef7c0b0522da099700a9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 22 16:50:12 2013 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 22 16:50:12 2013 -0800"
      },
      "message": "Fix a crash with -XX:DumpGCPerformanceOnShutdown.\n\nDumpGcPerformanceInfo() could call RosAllocSpace::InspectAllRosAlloc()\nwhich needs the thread list to be still alive. Fix by moving the\nDumpGcPerformanceInfo() call from the Heap destructor up to the\nbeginning of the Runtime destructor so that the thread list is still\nalive when it\u0027s called.\n\nBug: 11830901\nChange-Id: Ib094d60916943c8cb1d4b769d805b4ca03269f90\n"
    },
    {
      "commit": "ff3b24aa929a9db79daeef7c0b0522da099700a9",
      "tree": "b389b9076f0871c36e89ee76707d097ef0d77246",
      "parents": [
        "e745d5a83acb8e795b86cc7bcb9c3c7da1006a5b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 22 16:04:25 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 22 16:14:34 2013 -0800"
      },
      "message": "Add developer option for dumping GC cumulative timings on shutdown.\n\nThe option is \"-XX:DumpGCPerformanceOnShutdown\".\nBug: 9986416\n\nChange-Id: If6ebb26b3e611a9dead197740dbfc64e548dc388\n"
    },
    {
      "commit": "cf58d4adf461eb9b8e84baa8019054c88cd8acc6",
      "tree": "c49fa473b17e299bc649688076e7d69938741e4e",
      "parents": [
        "be56c9e63335ce99f1042e8660aeac4690b965a9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 26 14:21:22 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Sat Nov 16 21:35:03 2013 -0800"
      },
      "message": "A custom \u0027runs-of-slots\u0027 memory allocator.\n\nBug: 9986565\nChange-Id: I0eb73b9458752113f519483616536d219d5f798b\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "fa82427c68b09f4aedbee319dc71579afbfc66f5",
      "tree": "b8ae1c7be4a00dce290887ee857be5e466a0902b",
      "parents": [
        "6b98c91275d4361d1b74effad36995cc2d687a55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 05 16:12:57 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 06 12:00:14 2013 -0800"
      },
      "message": "Fix oatdump and valgrind.\n\nBug: 11531382\nMove allocation instrumentation out of runtime into instrumentation. Don\u0027t\nattempt to suspend threads in unstarted runtimes.\nMake indentation support sputc returning eof, on which it will sync and try\nagain. A further failure likely means the disk is full.\nMove the dump-oat output directory to be art as now there\u0027s too much output to\nfit all the dump-oat data in our standard /tmp.\n\nChange-Id: I8ea848ace318552c180e2efa46570288ff1ca62c\n"
    },
    {
      "commit": "88474b416eb257078e590bf9bc7957cee604a186",
      "tree": "7c59aa370bec9b0f2d37cb7a96d3b2effb3d92ce",
      "parents": [
        "9780099e445884d8bc9444c8c1261b02d80a26c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 23 16:24:40 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 29 12:01:28 2013 -0700"
      },
      "message": "Implement Interface Method Tables (IMT).\n\nChange-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39\n"
    },
    {
      "commit": "1eb512d33f94d1dd7ea38263307ba0f7a0dfa653",
      "tree": "b4d4d9b16013ab90fb4b40d23013d7ef44bb5852",
      "parents": [
        "b917ea1a62aa0ab8eca3f689ef64b5be34e11abb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 18 15:42:20 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 20 14:55:26 2013 -0700"
      },
      "message": "Fast JNI support.\n\nUse a modifier to signal a native method is a fast JNI method. If the\nmodifier is set then don\u0027t perform runnable transitions.\n\nChange-Id: I7835b4d837bfdd1cb8e2d54b919c0d5e6cf90499\n"
    },
    {
      "commit": "775c496f989f0e37d2e9a43274c0b55f201b4116",
      "tree": "edfd801b7081aa06016b9a16517b09653dc849b2",
      "parents": [
        "73fd3195bd1f8af54f5a6273775186974078068c",
        "b926b3c6821726bf24245478cf24788c57910f0c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 11 00:17:42 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 11 00:17:42 2013 -0700"
      },
      "message": "resolved conflicts for merge of b926b3c6 to dalvik-dev\n\nChange-Id: Ic56131b49ddfa1ffbc9b50f15e79a0210bd07a41\n"
    },
    {
      "commit": "ce88853ab316c70ef7b598978a3609611db60552",
      "tree": "4388d3d8faa16943f9f5718a3bd74c8ef7e2df77",
      "parents": [
        "3a22361a4d7bb7ae5558640873c375692f1e242a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 10 00:32:58 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 10 17:37:23 2013 -0700"
      },
      "message": "Have JNI FindClass fall back to system ClassLoader\nBug: 10994325\n\nChange-Id: Id0a46e78eecfe8a9eb91008765c4fff48697cc58\n"
    },
    {
      "commit": "9f69b62e6b009b29e6420c49e7444e91466a6a33",
      "tree": "945a8b95c9b32f76aa71b0de951cff2aa52cdc25",
      "parents": [
        "49fddff6f0e9628de419a2d911b5dcc393626f6e",
        "253ea073ec03a0be1e22df98957257594e316a39"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Oct 03 00:46:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 03 00:46:36 2013 +0000"
      },
      "message": "Merge \"Fix an Art debug build boot failure.\" into dalvik-dev"
    },
    {
      "commit": "253ea073ec03a0be1e22df98957257594e316a39",
      "tree": "804fbc5b00ef7d0b399aa70960793ce5b50eb2ae",
      "parents": [
        "7ef126ce0593929bcf8fb73d8b1119ce3b95b3f2"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 02 12:44:17 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 02 13:34:17 2013 -0700"
      },
      "message": "Fix an Art debug build boot failure.\n\n(The original change is 3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5.)\n\nBug: 11003273\nBug: 9986565\nChange-Id: Iaaf6395f171eb6e6b8c99386c20c4970c53ee00d\n"
    },
    {
      "commit": "d9c4fc94fa618617f94e1de9af5f034549100753",
      "tree": "1305efbbc3d4bc306c0947bb6d4b01553667f98e",
      "parents": [
        "7ef126ce0593929bcf8fb73d8b1119ce3b95b3f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 01 19:45:43 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 02 09:31:55 2013 -0700"
      },
      "message": "Inflate contended lock word by suspending owner.\n\nBug 6961405.\nDon\u0027t inflate monitors for Notify and NotifyAll.\nTidy lock word, handle recursive lock case alongside unlocked case and move\nassembly out of line (except for ARM quick). Also handle null in out-of-line\nassembly as the test is quick and the enter/exit code is already a safepoint.\nTo gain ownership of a monitor on behalf of another thread, monitor contenders\nmust not hold the monitor_lock_, so they wait on a condition variable.\nReduce size of per mutex contention log.\nBe consistent in calling thin lock thread ids just thread ids.\nFix potential thread death races caused by the use of FindThreadByThreadId,\nmake it invariant that returned threads are either self or suspended now.\n\nCode size reduction on ARM boot.oat 0.2%.\nOld nexus 7 speedup 0.25%, new nexus 7 speedup 1.4%, nexus 10 speedup 2.24%,\nnexus 4 speedup 2.09% on DeltaBlue.\n\nChange-Id: Id52558b914f160d9c8578fdd7fc8199a9598576a\n"
    },
    {
      "commit": "3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5",
      "tree": "5298ccd9c1f1f6b329c0cb6cefac6a8df43dd633",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 12 21:33:12 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 25 20:28:49 2013 -0700"
      },
      "message": "Split the allocation path into \u0027instrumented\u0027 and \u0027uninstrumented\u0027\nones.\n\nThe instrumented path is equivalent to the existing allocation path\nthat checks for three instrumentation mechanisms (the debugger\nallocation tracking, the runtime allocation stats collection, and\nvalgrind) for every allocation. The uinstrumented path does not\nperform these checks. We use the uninstrumented path by default and\nenable the instrumented path only when any of the three mechanisms is\nenabled. The uninstrumented version of Heap::AllocObject() is inlined.\n\nThis change improves the Ritz MemAllocTest by ~4% on Nexus 4 and ~3%\non Host/x86.\n\nBug: 9986565\nChange-Id: I3e68dfff6789d77bbdcea98457b694e1b5fcef5f\n"
    },
    {
      "commit": "ee39a10e45a6a0880e8b829525c40d6055818560",
      "tree": "88cf2b0765ffc8cc96aa2f895254fbf799d0eb40",
      "parents": [
        "7d690ba929a2a02e2b6344749561d49e2c0d55d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 21 22:00:10 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\n(cherry-picked from 8b2c0b9abc3f520495f4387ea040132ba85cae69)\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "810b1d704f2db0d935bf5dddae3545f79cabd435",
      "tree": "baf1ec61b47031244cb1fe2458b136c9f9d54f1f",
      "parents": [
        "5c00e28cdc7da675451869a2e5baa8f1c3244892",
        "bb0140e051e62ca0b51b0870c2386ae3110b0556"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 20 14:02:02 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 20 14:02:02 2013 -0700"
      },
      "message": "resolved conflicts for merge of bb0140e0 to dalvik-dev\n\nChange-Id: I31e0c05c5e917cf3275296a7f65bd8b78ec9b78b\n"
    },
    {
      "commit": "c11d9b8870de5f860b13c84003ade7b3f3125a52",
      "tree": "89b0250d35a950774f98fa1abfa9cc296c9d85db",
      "parents": [
        "261d3cda32b28782d894be0244e617f78182ee3b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 19 10:01:59 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 20 10:36:49 2013 -0700"
      },
      "message": "Re-enable concurrent system weak sweeping.\n\nEnabled by disallowing new system weaks during the pause and\nre-allowing it after the system weaks have been swept. Reduces\nGC pause by ~1ms.\n\nFixes pause regression caused by fix for\nBug: 10626133\n\nChange-Id: If49d33e7ef19cb728ed3cef5187acfa53b9b05d8\n"
    },
    {
      "commit": "8b2c0b9abc3f520495f4387ea040132ba85cae69",
      "tree": "13ea7e5c4e3d1804ec8d420d36f7ea5ab18f6ac0",
      "parents": [
        "5712d5d04640925970db9c98938ffaf806b3962c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 15:17:12 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nDepends on:\nhttps://googleplex-android-review.git.corp.google.com/362363\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "dab23d0f0433d42a6c508741d61aba522a5e6230",
      "tree": "de729a2f3b66ba3a77570b4eb7b2a17591d45845",
      "parents": [
        "b60df31f4c7a1642ef8b3bad1cbdba4d471d4e55",
        "5b0daf5ce04f58e08a5bc38a85480b816e3812b2"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Sep 18 10:19:16 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 18 10:19:16 2013 -0700"
      },
      "message": "am 5b0daf5c: am ff6cff9e: am ab482f5e: Merge \"Allow traversal into /storage paths.\" into klp-dev\n\n* commit \u00275b0daf5ce04f58e08a5bc38a85480b816e3812b2\u0027:\n  Allow traversal into /storage paths.\n"
    },
    {
      "commit": "ab482f5eff21af748c906857f529a3c17df35964",
      "tree": "dea612debd0e7aa4451d1e74c2e1073fe2fe5783",
      "parents": [
        "c4621985bdfc2b27494087e5dee65a6d0cc5a632",
        "52cd1e8f2f0622a174f883e24151ab873170787f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Sep 18 17:10:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 18 17:10:43 2013 +0000"
      },
      "message": "Merge \"Allow traversal into /storage paths.\" into klp-dev"
    },
    {
      "commit": "8c7ec8cd8e39809ed31cb62bc3b068430042bd76",
      "tree": "0ef55b9099fab8a4216e06ce67655d38f7a43940",
      "parents": [
        "b307052d619ec757478951fc026e6230c92e3b36",
        "6aa3df965395566ed6a4fec4af37c2b7577992e9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 18 00:33:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 18 00:33:01 2013 +0000"
      },
      "message": "Merge \"Refactor system weak sweeping, add support for modification.\" into dalvik-dev"
    },
    {
      "commit": "52cd1e8f2f0622a174f883e24151ab873170787f",
      "tree": "01aab8fb4ccd930e7b11bb353f1d344170f30acf",
      "parents": [
        "5666afd6854b5634ae741dc8a3a633fc47d52168"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 17 16:25:12 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 17 17:21:48 2013 -0700"
      },
      "message": "Allow traversal into /storage paths.\n\nApps are no longer required to have sdcard_r or sdcard_rw to access\nsome parts of external storage.  Relax the mount parameters to allow\neveryone to traverse.\n\nBug: 10577808\nChange-Id: Ife3c6fb18028f7093ff853459c1ca1e0ec7a6d01\n"
    },
    {
      "commit": "6aa3df965395566ed6a4fec4af37c2b7577992e9",
      "tree": "c17406cf6cbea16165ad05130609450ff0e1e204",
      "parents": [
        "cb135ad769a5368f6ceb8caf25105a95580cbd6a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 15:17:28 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 16:31:24 2013 -0700"
      },
      "message": "Refactor system weak sweeping, add support for modification.\n\nRequired for moving collectors.\n\nChange-Id: Ib97ba4a05af1139f8d388077a15e62bcb9534855\n"
    },
    {
      "commit": "b307052d619ec757478951fc026e6230c92e3b36",
      "tree": "7fee60cf62ec02fab20f70f111b5925be8a772fa",
      "parents": [
        "cb135ad769a5368f6ceb8caf25105a95580cbd6a",
        "613eae4a6f75282c0737a84850418afcab54d4e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 14:18:21 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 14:18:21 2013 -0700"
      },
      "message": "resolved conflicts for merge of 613eae4a to dalvik-dev\n\nChange-Id: I61734cbf585decf9a50ba23f008b341d025339ff\n"
    },
    {
      "commit": "c4621985bdfc2b27494087e5dee65a6d0cc5a632",
      "tree": "d8165f5b8d337e73942ee29d66fb40585dc7caf1",
      "parents": [
        "5666afd6854b5634ae741dc8a3a633fc47d52168"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 16 19:43:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 10:03:00 2013 -0700"
      },
      "message": "Fix race in root marking.\n\nThere was a race which caused the class linker / intern table to not\nbecome dirty after adding a root. We now guard the is dirty flag by\nthe corresponding locks to prevent this from occuring. This was\ncausing roots to be occasionally missed.\n\nAlso fixes the bug where we occasionally scan more cards than\nneeded.\n\nBug: 10626133\n\nChange-Id: I0f6e72d92035ff463954d66988ef610ea0df61be\n"
    },
    {
      "commit": "423d2a3dcbb260b020efb5da59f784c9f02accbf",
      "tree": "79ed739e6072f8308c1cd880f9420a1c63539c95",
      "parents": [
        "b048dd2b662c19644361f4396a1e8d6213445ee8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 12 17:33:56 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 10:30:24 2013 -0700"
      },
      "message": "Add support for changing roots through the root visitor callback.\n\nNeeded for copying collectors.\n\nChange-Id: Icc4a342a57e0cfb79587edb02ef8c85e08808877\n"
    },
    {
      "commit": "a436fde2762664a3ecdda5eefcadd20b2e104f59",
      "tree": "22431bc387483220728a3bc99ec7314abce3ad60",
      "parents": [
        "10cc81056261625902a8a073bafb9f499eec4ff7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 27 23:34:06 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 27 23:37:33 2013 -0700"
      },
      "message": "Handle OOMEs in class linker with grace.\n\nCheck for OOMEs and then fail due to them in class loading.\nMake the compiler driver spot OOMEs during resolution and abort compilation to\navoid needless GC thrash then eventual death.\nAllocate the pre-allocated OOME during Runtime::Init as Runtime::Start isn\u0027t\ncalled in the context of the compiler/tools.\n\nChange-Id: Id72199d0fe82001b5bf22758b3cdc9cc4b8efbb9\n"
    },
    {
      "commit": "23009dca63c1699e28bfeaa8b45ca48fa0e86ace",
      "tree": "33645ffca45249f4d8dc351dca17327c29613317",
      "parents": [
        "fb2451b516f8411756fe7b6f91b5534cf3ce8682"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 22 15:36:42 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 26 16:44:06 2013 -0700"
      },
      "message": "Add art support for sample profiling from traceview gui.\n\nChange-Id: I6004bf143521b872084ca4aae873bea3524aa895\n"
    },
    {
      "commit": "ee23f85dc66e651a1a220a612d3407689b8de5e8",
      "tree": "cb6e257982a1f7d19ba99bff3a9132f3eb53f503",
      "parents": [
        "dd3413f4a1a4fcf9fd62b4660805a4ce64b22bd6",
        "2775ee4f82dff260663ca16adddc0b15327aaa42"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 21 23:38:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 21 23:38:52 2013 +0000"
      },
      "message": "Merge \"Add more runtime options.\" into dalvik-dev"
    },
    {
      "commit": "2775ee4f82dff260663ca16adddc0b15327aaa42",
      "tree": "d3c5bd75af01738e5f00459c308a5133a6de321f",
      "parents": [
        "4aa48fccbd3782d78207a79541b61948a066b8fc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 20 17:43:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 21 15:45:33 2013 -0700"
      },
      "message": "Add more runtime options.\n\nChanged HeapGCThreads to be split into two different options:\n-XX:ParallelGCThreads: Which specifies how many threads the GC may\nuse when the mutators are suspended.\n\n-XX:ConcGCThreads: Which specifies how many threads the GC may use\nwhen the mutators are running.\n\nAdded runtime options to specify long pause / long GC thresholds:\n-XX:LongPauseThreshold (default 5ms)\n-XX:LongGCThreshold (default 100ms)\nThese thresholds were previously constants, but are now runtime\noptions. If we exceed either of the thresholds, we print the GC\nmessage.\n\nAdded a new runtime option: -XX:IgnoreMaxFootprint which makes it\nthat the GC only does GC when the number of bytes allocated hits\nthe growth limit. This causes GC to occur much less frequently and\ncan be useful to measure how much of an impact GC has on performance.\n\nChanged the GC behaviour to use only one thread when we do not care\nabout pauses to prevent jank that can be caused by 2 simultaneous GC\non different processes fighting for CPU time.\n\nAdded thread pool functionality for changing the maximum number of\nactive workers.\n\nFixed an accounting error where we didn\u0027t count large objects in the\ntotal freed.\n\nBug: 9986416\n\nChange-Id: I86afa358d93dcd3780e18ac5d85bdb1a130cb7e7\n"
    },
    {
      "commit": "fe9ca4028f379688ecba6132ac3738171176b3e4",
      "tree": "00bb0eace8f37499aabce60cd296485d75b6b38e",
      "parents": [
        "4aa48fccbd3782d78207a79541b61948a066b8fc"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 21 09:48:11 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 21 15:13:35 2013 -0700"
      },
      "message": "Compiler filter update\n\nTweak of the compiler filter to give better results for applications\nwhich are not dominated by tight arithmetic loops. Deleted\nthe \"DeferCompilation\" setting - it didn\u0027t differ enough from the\n\"Space\" setting.  Added \"Everything\" setting to support forced\ncompilation (for images and testing).  Previously used \"Speed\"\nfor that purpose, but in the speed setting there are some things we\ndon\u0027t want to compile.\n\nChange-Id: Ia53b14f2044fc9738c1a4c1318f8204f2c25abe3\n"
    },
    {
      "commit": "bc939663ccfbe0c648dd6a3670041510aca82420",
      "tree": "40dd741cec1cefe435e666722cdf974131321d88",
      "parents": [
        "fbb0ba491042a7f8fb38f51b2f0538ca8fd074a6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 15 10:26:54 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 15 11:43:12 2013 -0700"
      },
      "message": "Prevent segvs in JNI.\n\nA segv in JNI code (without CheckJNI) is hard to debug as we fail to see\nstacks, pending exceptions.. Make JNI code robust to null arguments, but don\u0027t\ngo to the lengths that CheckJNI does in also sanity checking arguments, the\npriority here is just to stop the VM from crashing.\n\nBug 10305723\n\nAlso, allow an unknown throw location not to crash exception dumping.\n\nFound/useful for debugging bug 10331039.\n\nChange-Id: Ib1e5540df87e2d9ce7570802d624baae7797611f\n"
    },
    {
      "commit": "8718359763aa3dcd0033a2d2e67e0cb145fb9c53",
      "tree": "149a9ef0f6e4b824cb30f849f44211cfd8f8aa46",
      "parents": [
        "0f40ac31134d9ae0f059d4c448165599dc8459c1"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Wed Aug 14 12:12:19 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Wed Aug 14 12:48:27 2013 -0700"
      },
      "message": "Add -XX:+DisableExplicitGC option for Art\n\nPhone boots.  Also removed elfwriter spam from logcat.\n\nChange-Id: I09b9d2fc40ebfeb6f1c2f12153b0ad4134bb5159\n"
    },
    {
      "commit": "1d1e267136732c2b123470b05c06fa536fa6dbbb",
      "tree": "a2c4cf3b5ffa7199d38db677886926c0b9a813cf",
      "parents": [
        "a804b711f21db74f9fb0dd7a5854656b1252fb97",
        "ea46f950e7a51585db293cd7f047de190a482414"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 14 02:15:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 14 02:15:58 2013 +0000"
      },
      "message": "Merge \"Refactor java.lang.reflect implementation\" into dalvik-dev"
    },
    {
      "commit": "75a43f10f55e2aa550de51e969cc1e60d583b632",
      "tree": "32667690ae49d1168d8310692af915e497a6a392",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Aug 13 17:22:14 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Aug 13 19:13:59 2013 -0700"
      },
      "message": "Clean up logcat spam from compiler and verifier\n\nMoved to VLOG(...), adding verifer tag for VLOG.\n\nChange-Id: Ia9ac8aeaf5aa1f4881e384003e82a66e560c5692\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "a024a0686c3b0fea13f362bff70d65981e5febc5",
      "tree": "99b003e7524544156a4e94bcca7daa41ed4d4b77",
      "parents": [
        "e0a53e99e2a01f8668d6616c3cec7e2f5a711286"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jul 31 10:47:37 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Aug 08 13:30:16 2013 -0700"
      },
      "message": "Compilation filter\n\nThis CL introduces a static compilation filter mechanism intended\nto allow us to reduce compilation time and space requirements until\nwe have a profiling mechanism in place.\n\nIt supports 5 modes of filtering:\n\n   o interpret-only (compile nothing)\n   o deferred-compilation (compile only those methods believe to be\n     compute-intensive)\n   o space (optimized for space)\n   o balanced (best return on space investment)\n   o speed (compile everything)\n\nA future CL will allow the default filtering mode to be set\nvia system property.  For now, you can pass it in via command\nline as follows:\n\n   dalvikvm -compiler-filter:[interpret-only|defer-compilation|\n                              space|balanced|speed]\n\nor dex2oat --runtime-arg -compiler-filter:[one of the above modes]\n\nCreating a file named art/SMALL_ART will force the filter\ndefault to interpret-only.  Later on we\u0027ll move this capability\nto a persistent system property.\n\nor modify kDefaultCompilerFilter in runtime.h\n\nIt also changes the compiler driver to allow the compilers to\ndecline to compile a method by return NULL.\n\nChange-Id: Ic73411818f8bb845a4a19a05b0395c50902c534f\n"
    },
    {
      "commit": "e0a53e99e2a01f8668d6616c3cec7e2f5a711286",
      "tree": "d672967f101a31e1dbf739a2e13f0725625e2ca2",
      "parents": [
        "f929b1f270a880e1f98c7a3913a5a5468a2a2368"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 05 10:17:40 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 05 14:53:05 2013 -0700"
      },
      "message": "Add low memory mode option to ART.\n\nUseful so that we match the option I added here:\nhttps://googleplex-android-review.googlesource.com/#/c/328940/\n\nIn ART low memory mode reduces the maximum number of histogram\nbuckets. We also trim no matter the utilization.\n\nChange-Id: I655ba63312c0a6574569cdd5171ca81ea338c2aa\n"
    },
    {
      "commit": "166db04e259ca51838c311891598664deeed85ad",
      "tree": "5ffa63c1b3bf58e92be2890c54f0ba6fdec2059e",
      "parents": [
        "d41119e863a9f9c5809b7732d30870ffd237b60c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 26 12:05:57 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 09:52:11 2013 -0700"
      },
      "message": "Move assembler out of runtime into compiler/utils.\n\nOther directory layout bits of clean up. There is still work to separate quick\nand portable in some files (e.g. argument visitor, proxy..).\n\nChange-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351\n"
    },
    {
      "commit": "0f055d11096cb02563e9c040cd03c791fd8f69a3",
      "tree": "8c7e730f17174ab4e11786fde1c2a05c7039d507",
      "parents": [
        "93c3396f8b33539489763ebdfafcedb4127009d9",
        "7934ac288acfb2552bb0b06ec1f61e5820d924a4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 12:46:02 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 12:47:51 2013 -0700"
      },
      "message": "resolved conflicts for merge of 7934ac28 to dalvik-dev\n\nChange-Id: I8798a6f154463d3f92f6aca62f14130aec82d273\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "4d4adb1dae07bb7421e863732ab789413a3b43f0",
      "tree": "a0c7861c64f193065264478af397929be473184c",
      "parents": [
        "56eb9bc9da8d3863fef02891c2f4f2e4d996204d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jul 24 16:14:19 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 26 10:24:55 2013 +0200"
      },
      "message": "Prevent verifier from creating unused compilation data.\n\nThe verifier used to create data which may be unused like GC map. This is the\ncase for non-compiled method (which are interpreted). This CL aims to optimize\nthis.\n\nHere are the changes:\n- Move compilation selection to MethodVerifier::IsCandidateForCompilation.\n- Compiler and verifier use this method to know if a method must be compiled.\n- Only create compilation data while compiling using Runtime::IsCompiler.\n- Do not create internal structures concerning GC map, ... in Runtime::Init and\nRuntime::Shutdown when we are not compiling.\n- Checks we are compiling when accessing these structures.\n- Add missing destruction of MethodVerifier::safecast_map_lock_ and\nMethodVerifier::safecast_map_ in Runtime::Shutdown.\n- Call Runtime::Shutdown just before Runtime instance is destroyed to avoid a\ncrash.\n- Add missing \"GUARDED_BY\" macro for MethodVerifier::rejected_classes_ field.\n- Add \"has_check_casts\" to avoid the safecast pass if there is no check-cast\ninstruction.\n- Add \"has_virtual_or_interface_invokes\" to avoid the devirtualization pass if\nthere is no invoke-virtual/range nor invoke-interface/range instructions.\n\nBug: 9987437\nChange-Id: I418ee99f63e4203409cf5b7d2c2295b22fcf24c1\n"
    },
    {
      "commit": "63a54345598861030178e033ffbd72c0e231a4c9",
      "tree": "0241f931c8fb8876a1c3ffbc07198c1d7c8e9a4f",
      "parents": [
        "4560248d4c85cade7f4fc7b30c3fb41b95a04a7f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 23 13:17:59 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 23 13:55:18 2013 -0700"
      },
      "message": "Add option for changing number of GC threads.\n\nThe number of threads was previously set to 1 by an accidential\ncheckin. This hurts on all devices which aren\u0027t dual core. We now\nproperly use sysconf to determine how many threads we should create.\n\nAlso added a -XX:HeapGCThreads heap option which lets us change\nhow many GC threads we create. The default value is equal to the\nnumber of processors on the device minus one.\n\nChange-Id: If65065ef09174a3813b8741efdd5ea7bbe82a4e2\n"
    },
    {
      "commit": "b1eba213afaf7fa6445de863ddc9680ab99762ea",
      "tree": "c0a3000df1037211a6bcc7d75db51ee5c6069ec8",
      "parents": [
        "2ce745c06271d5223d57dbf08117b20d5b60694a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 18:07:19 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 21:46:11 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comma issues\n\nChange-Id: I456fc8d80371d6dfc07e6d109b7f478c25602b65\n"
    },
    {
      "commit": "2ce745c06271d5223d57dbf08117b20d5b60694a",
      "tree": "08ca327d1f1c8266fafb11422cfad6982f21e0bb",
      "parents": [
        "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 17:44:30 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 21:46:11 2013 -0700"
      },
      "message": "Fix cpplint whitespace/braces issues\n\nChange-Id: Ide80939faf8e8690d8842dde8133902ac725ed1a\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "2010a6004fb083eb4109c21886fce6ee65abda33",
      "tree": "59182eeeadcb3d9926fd4fb1e355a70e15fde079",
      "parents": [
        "0b4e3ef67508a0b8c121b6b26ab5ea0a1d8e7141"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 02 14:17:23 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 02 14:17:23 2013 -0700"
      },
      "message": "Disable -Xjnigreflimit: in art too.\n\nBug: 7903975\nChange-Id: I1ec552b35331227ecd7dc3d0a2f0507b1c24e375\n"
    },
    {
      "commit": "e53ebbcf98d004f0e1f631a630d0344d104e3dc6",
      "tree": "6190aab5b5c6061a25df9931e1b0dbd6229d0a95",
      "parents": [
        "eac1880f791c4a2b18f1b197cc6289a28ec11252",
        "39f992750ac1eb7e51955d3e52bddc32b37c370f"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu Jun 27 07:13:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 27 07:13:43 2013 +0000"
      },
      "message": "Merge changes I3b33358e,I7467ee05 into dalvik-dev\n\n* changes:\n  Added wrapper functions for register acccess in Instruction.\n  Added support for SEA IR.\n"
    },
    {
      "commit": "78b388842414005a30d2ec308861473f9f33ed5b",
      "tree": "a15c4320420aeddff8b55527722c631c67222700",
      "parents": [
        "80a459893571c1a1ba92c73883993d7e0b5f1ad6",
        "fb67b724df2e3288c8573e8d72b6b6d06aff26ca"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jun 25 22:31:37 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 25 22:31:37 2013 -0700"
      },
      "message": "am fb67b724: Make art adapt to BOOTCLASSPATH containing dalvik core.jar\n\n* commit \u0027fb67b724df2e3288c8573e8d72b6b6d06aff26ca\u0027:\n  Make art adapt to BOOTCLASSPATH containing dalvik core.jar\n"
    },
    {
      "commit": "7467ee05012e1fd9834df74663c1ebda46f5636b",
      "tree": "d93d7b7f13440eff50c552ccdab8ce8e4e5a9547",
      "parents": [
        "b126134010ebeee771da0eec7fa76ad13fe9a9c9"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Jun 21 09:20:34 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Jun 25 13:12:53 2013 -0700"
      },
      "message": "Added support for SEA IR.\n\n- Modified makefile to take the existance of SEA_IR_ART\n  file to mean \"switch to sea ir mode\".\n- Switching SEA IR mode on leads to the new compiler being\n  fed the fibonacci methods only, if they are used as input.\n- Added partial support for the control flow subgraph of\n  the SEA IR (instruction nodes and region nodes for\n  conditional and unconditional branches).\n\nChange-Id: I29020b8e2df5a00fde75715c3683cc25038589f4\n\nConflicts:\n\tsrc/compiler/driver/compiler_driver.cc\n"
    },
    {
      "commit": "fb67b724df2e3288c8573e8d72b6b6d06aff26ca",
      "tree": "2347057a6cfa7740db719e7c5ce459a1caff33be",
      "parents": [
        "a7a60a8244dd6f6e70ff1d7babf261c7a8da873a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 24 23:41:51 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 24 23:41:51 2013 -0700"
      },
      "message": "Make art adapt to BOOTCLASSPATH containing dalvik core.jar\n\nChange-Id: I9b1fcae03630123100c335394a6324824d245bd6\n"
    },
    {
      "commit": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "e4c891a0dc88cd3c5891372f28659f6bea0cbcfd",
      "tree": "a6973d6ea9446efb1d56a42a54dd96efeeffbbc0",
      "parents": [
        "50239c75041df9e12f9cbb018ccc08af6890e102",
        "fa42b4410d49134a8e63dc2196be4013d286f2d6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jun 18 13:17:01 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 18 13:17:01 2013 -0700"
      },
      "message": "am fa42b441: Move to new art dalvikvm\n\n* commit \u0027fa42b4410d49134a8e63dc2196be4013d286f2d6\u0027:\n  Move to new art dalvikvm\n"
    },
    {
      "commit": "fa42b4410d49134a8e63dc2196be4013d286f2d6",
      "tree": "71e325089092167f202fbdf763daaf700cfd4a4b",
      "parents": [
        "7675e16bcae06c0fe258aad89b3d511037dec399"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 17 12:53:45 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 17 19:01:40 2013 -0700"
      },
      "message": "Move to new art dalvikvm\n\nChange-Id: Ib04bc9853b7084965fa0c9899c3e5f5ac42d4ce7\n"
    },
    {
      "commit": "dd623dbcb6e5c42c32382c136f16e000ab053216",
      "tree": "ab6ad103c15ed75caf3ccddc5144e804eb7deae3",
      "parents": [
        "62342ec720069cebe55f45aea2ff8512a17e7d62"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 11 11:20:23 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 11 11:20:23 2013 -0700"
      },
      "message": "Now that abort(3) is fixed, Runtime::Abort() can be simplified.\n\nThe fix to abort(3) has SHA 7e6ce1a3c52d8533fed92c143419fedb0c93988a.\n(https://android-review.googlesource.com/#/c/60341/)\n\nChange-Id: Ic2c0bf156b678dcc87fe981890a357c504130fe3\n"
    },
    {
      "commit": "0aba0ba155bef7346bde19e53581200b89ae8a7a",
      "tree": "6590f8a50bde7c30b57f1bb0ae67c6d88cea8116",
      "parents": [
        "515661b14b60ab9684efa1ab1d5124934406094e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 14:49:28 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Jun 07 14:43:24 2013 -0700"
      },
      "message": "Created compiled stubs in image.\n\nSaves class linker from having to set code pointers when loading\nfrom an image. Added stubs for quick and portable resolution\ntrampolines, and interpreter-to-interpreter and interpreter-to-quick\nentry points. Also added sizing stats output for oat writer.\n\nChange-Id: I3905fae81047742c23d1cf0ca001db798db971b1\n"
    },
    {
      "commit": "aa4a793d7175ceeb1efa215c2af5e52e42b22f0a",
      "tree": "9c3db54a108d4327471c6d4890d28cdfe1f030ff",
      "parents": [
        "167436311a08a65dea28dda079a137893821c9c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 11:28:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 13:14:19 2013 -0700"
      },
      "message": "Rename abstract method code_ to entry_point_from_compiled_code_.\n\nChange-Id: I9b02d2df95bbeafa6e6387b461f574c57337a61e\n"
    },
    {
      "commit": "862cedbd0d5d7e1ac8848679aa930878c03c212f",
      "tree": "e3022faa835c9b513f64fafb0ab56bd7e5c92a0a",
      "parents": [
        "cf9773a7adff883012dbd519a66e85f1f7aaaa11",
        "b3eb9eb86370791735ca4e9c1bd5bb4f3ff62069"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu May 02 23:22:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 02 23:22:20 2013 +0000"
      },
      "message": "Merge \"Fixing Small_Art Default\" into dalvik-dev"
    },
    {
      "commit": "b3eb9eb86370791735ca4e9c1bd5bb4f3ff62069",
      "tree": "2754b4cd1fabf4e145e0e33e849b21a1082c23ab",
      "parents": [
        "8447d84d847d4562d7a7bce62768c27e7d20a9aa"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu May 02 16:17:45 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu May 02 16:17:45 2013 -0700"
      },
      "message": "Fixing Small_Art Default\n\nSmall ART mode was turned on by default.  It should be off by default as there\u0027s otherwise no option to\nturn it off.\n\nChange-Id: I9b723f7c5d9c95c210722861fc1e0cd08560a371\n"
    }
  ],
  "next": "cf9773a7adff883012dbd519a66e85f1f7aaaa11"
}
