)]}'
{
  "log": [
    {
      "commit": "2c8f653c98d658419f464b6147c10e11a664d2e6",
      "tree": "479eb3bb75cefbae633c5663193675d4ea6bb328",
      "parents": [
        "92b3b5623ec8b65f3e099c076e247bb8273692f8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 02 17:16:34 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 08 22:22:27 2011 -0700"
      },
      "message": "Support for cross compilation.\n\nRefactor architecture specific files into arm and x86 name spaces. Make\nassemblers and calling conventions use the factory pattern and an\ninstruction set specifier.\n\nChange-Id: I20cd7aecacc1ae3d418221d98bbe1d69be9162a7\n"
    },
    {
      "commit": "c1674ed06662420213441ff2b818f2f71f9098dc",
      "tree": "2799982a5059feab2a680ce5d91c276e5852983c",
      "parents": [
        "bafc342a37e423a19ac05f14800006ea9d67a941"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 18:09:09 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 18:48:47 2011 -0700"
      },
      "message": "Make valgrind happier and stop us leaking so much we can can\u0027t run the tests on a device.\n\nChange-Id: Id8f45dde788fd84c10b0b5807b2d12eae529ba5e\n"
    },
    {
      "commit": "53b61314370c49354ed6f8d616d6a9a182410fc1",
      "tree": "e744dfef8b45438bb992b08633439522095cd967",
      "parents": [
        "5511f2161d71ac67a9bc140cbbca5d9637ab7499"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 18:28:20 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 18:28:34 2011 -0700"
      },
      "message": "Use the UNIMPLEMENTED macro everywhere.\n\nAs suggested in review.\n\nChange-Id: Ic14c91a622b545b4800ef021dfb501fb09cbda9d\n"
    },
    {
      "commit": "e2d373e6e09c1df9a47e73a26254048adb31ce82",
      "tree": "5eb8b4627411e6336baddd1a5d5d732919eed1aa",
      "parents": [
        "7a90959d4ef7a69f3bcb7b8763f646e12d9267d3"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Mon Jul 25 15:20:06 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Mon Jul 25 15:20:06 2011 -0700"
      },
      "message": "Initial ARM JNI compiler support.\n\nChange-Id: I85183eec9a2645e6cb074b4b18bc6af800a77e06\n"
    },
    {
      "commit": "578bbdc684db8ed68e9fedbc678669d27fa68b6e",
      "tree": "d752941d81ad6d7e248c349ce21371a8ae369693",
      "parents": [
        "45a76cb99104a222d6a9bd768a084893dcb7cf30"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 21 14:07:47 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 22 15:23:33 2011 -0700"
      },
      "message": "Move DexFiles to be allocated on the heap\n\nRemoved pointer from DexFile to RawDexfile to allow heap allocation of\nDexFile. DexFile is now an ObjectArray of ObjectArrays. Removing the\npointer from DexFile to RawDexfile meant adding arguments to pass the\nRawDexfile along to ClassLinker::LoadClass, LoadInterfaces, LoadField,\nLoadMethod, LinkClass, LinkInterfaces, ResolveClass to avoid the need\nto look a RawDexfile up from a DexFile. ClassLinker::CreateArrayClass\nnow takes the raw_dex_file to assist in looking up the component class\nfrom the proper source. Moved Method::HasSame* methods to ClassLinker\nsince for access to the RawDexfile (and tests of HasSame from\nObjectTest to ClassLinkerTest.\n\n\tsrc/dex_file.cc\n\tsrc/dex_file.h\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\tsrc/object.h\n\nRunTime::Create/RunTime::Init/ClassLinker::Create/ClassLinker::Init\nnow take the boot class path. A boot class path with\nLjava/lang/Object; must be provided to initalize [Ljava/lang/Object;\nduring startup in order to heap allocate DexFiles.\n\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\tsrc/runtime.cc\n\tsrc/runtime.h\n\nRestored FindClass to load from a specific dex file. This is for use\nby class loaders, otherwise it is assumed the caller wants to use the\nboot classpath. We now distinguish and track the boot classpath as\nseparate from other dex files known to the class linker. Renamed\nAppendToClassPath to AppendToBootClassPath and FindInClassPath to\nFindInBootClassPath to clarify.\n\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\nCleaned up AllocCharArray to generic AllocArray and added\nAllocObjectArray. Added a functional ObjectArray implementation and a\nObjectTest to cover it.\n\n\tsrc/heap.h\n\tsrc/object.h\n\tsrc/object_test.cc\n\nSwitched more Object* downcasting to down_cast\n\n\tsrc/class_linker.cc\n\nSwitched order of arguments for DexFile::SetResolved to follow more\nconventional collection ordering ( \"(index, value)\" vs \"(value, index)\" )\n\n\tsrc/dex_file.h\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\nAdded class_linker_ and java_lang_raw_dex_file_ to RuntimeTest as\nconvenience to test subclasses. ClassLinkerTest now can use these to\nsimplify its ::Assert* methods. JniCompilerTest now uses it for\nsetting up its boot class path. Removed now unneeded\nOpenDexFileBase64.\n\n\tsrc/common_test.h\n\tsrc/class_linker_test.cc\n\tsrc/jni_compiler_test.cc\n\nAdd external/gtest/include to non-test include path so FRIEND_TEST can be used.\nAdd src to include path to remove the need of using in in art/src files.\n\n\tbuild/Android.libart.host.mk\n\tbuild/Android.libart.mk\n\tsrc/assembler.cc\n\tsrc/assembler.h\n\tsrc/assembler_arm.cc\n\tsrc/assembler_arm.h\n\tsrc/assembler_x86.cc\n\tsrc/assembler_x86.h\n\tsrc/assembler_x86_test.cc\n\tsrc/base64.cc\n\tsrc/base64.h\n\tsrc/calling_convention.cc\n\tsrc/calling_convention.h\n\tsrc/calling_convention_arm.cc\n\tsrc/calling_convention_x86.cc\n\tsrc/casts.h\n\tsrc/class_linker.h\n\tsrc/class_linker_test.cc\n\tsrc/common_test.h\n\tsrc/constants.h\n\tsrc/constants_arm.h\n\tsrc/constants_x86.h\n\tsrc/dex_file.cc\n\tsrc/dex_file.h\n\tsrc/dex_file_test.cc\n\tsrc/dex_instruction.cc\n\tsrc/dex_instruction.h\n\tsrc/dex_instruction_visitor.h\n\tsrc/dex_instruction_visitor_test.cc\n\tsrc/dex_verifier.cc\n\tsrc/dex_verifier.h\n\tsrc/heap.cc\n\tsrc/heap.h\n\tsrc/jni_compiler.cc\n\tsrc/jni_compiler_test.cc\n\tsrc/jni_internal.cc\n\tsrc/jni_internal.h\n\tsrc/leb128.h\n\tsrc/managed_register.h\n\tsrc/managed_register_arm.cc\n\tsrc/managed_register_arm.h\n\tsrc/managed_register_arm_test.cc\n\tsrc/managed_register_x86.cc\n\tsrc/managed_register_x86.h\n\tsrc/managed_register_x86_test.cc\n\tsrc/mark_stack.cc\n\tsrc/mark_stack.h\n\tsrc/mark_sweep.cc\n\tsrc/mark_sweep.h\n\tsrc/memory_region.cc\n\tsrc/memory_region.h\n\tsrc/monitor.h\n\tsrc/object.cc\n\tsrc/object.h\n\tsrc/object_bitmap.cc\n\tsrc/object_bitmap.h\n\tsrc/object_test.cc\n\tsrc/offsets.cc\n\tsrc/offsets.h\n\tsrc/raw_dex_file.cc\n\tsrc/raw_dex_file.h\n\tsrc/raw_dex_file_test.cc\n\tsrc/runtime.cc\n\tsrc/runtime.h\n\tsrc/scoped_ptr.h\n\tsrc/space.cc\n\tsrc/space.h\n\tsrc/space_test.cc\n\tsrc/stringpiece.cc\n\tsrc/thread.cc\n\tsrc/thread.h\n\tsrc/thread_arm.cc\n\tsrc/thread_x86.cc\n\tsrc/utils.h\n\nChange-Id: Ib633cea878c36921e9037b0464cb903aec318c3e\n"
    },
    {
      "commit": "45a76cb99104a222d6a9bd768a084893dcb7cf30",
      "tree": "995557ba95942309ffe9c4a13819a10da8c4b4bb",
      "parents": [
        "69759eaa6fd4386f1e6d8748052ad221087b3476"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 21 22:00:15 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 22 15:16:43 2011 -0700"
      },
      "message": "Exception and suspend count polling on JNI bridge return.\n\nChange-Id: I0e5597fcbdcdb88100b18d63323e7ba8d27f13fe\n"
    },
    {
      "commit": "69759eaa6fd4386f1e6d8748052ad221087b3476",
      "tree": "9f37e49625a6e528405ed28ae8f5ac515ffedd67",
      "parents": [
        "dbd05642d4157b65d837da30c1d8df0ef577a378"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Thu Jul 21 18:13:35 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Thu Jul 21 18:13:35 2011 -0700"
      },
      "message": "Add allocation and garbage collection infrastructure.\n\nChange-Id: I4b04cdfdf18afb75a7b0df87b509e8156b4a932b\n"
    },
    {
      "commit": "b033c75ebda80ac75f936366fe78d1edf5cec937",
      "tree": "7a457c99acf23b0cc9b86b2a6d8cc2593e85f127",
      "parents": [
        "cdc8de4642ca447a7ed205f0d2203cb217e48aad"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 20 12:22:35 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 20 12:22:35 2011 -0700"
      },
      "message": "x86 JNI compiler and unit tests.\n\nChange-Id: I4c2e10328961a2e8e27c90777fe2a93737b21143\n"
    },
    {
      "commit": "1f359b08f5ad33ae72e4073b86a9257fe1ed11e5",
      "tree": "3f22a152793289174822b023ad279e125a307418",
      "parents": [
        "ffe6736397d17457188727510f0a2953f69a383a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Jul 17 14:27:17 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Jul 17 14:27:17 2011 -0700"
      },
      "message": "Improve CHECK_\u003cop\u003e logging.\n\nThis patch lets us show the lhs and rhs when a relational check fails. (I show\nboth, even though that looks silly in cases like CHECK_EQ(rc, 0) where we\u0027ll\nsay \"rc\u003d-1, 0\u003d0\", because it\u0027s helpful in cases like CHECK_LT(i, size()) where\nwe want \"i\u003d4, size\u003d2\".)\n\nI had to add a few operator\u003c\u003cs for enums, and fix a bunch of signed/unsigned\nmismatches, and put the StringPiece operator\u003c\u003c in the right namespace.\n\nChange-Id: I390f38bd97b3f50e12182f36ff027ca067c48d69\n"
    },
    {
      "commit": "6b6b5f0e67ce03f38223a525612955663bc1799b",
      "tree": "83347b18ba66d4c46d06ca81be01285959f08060",
      "parents": [
        "a5d5cfda6239d8876937e75eba43222f639d2447"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Tue Jun 21 15:05:09 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Tue Jun 21 15:22:34 2011 -0700"
      },
      "message": "Shorten the namespace and re-normalize include guards.\n\nChange-Id: I93af4c1f19edf31098abd20ded1fcca6c5d83854\n"
    },
    {
      "commit": "a5d5cfda6239d8876937e75eba43222f639d2447",
      "tree": "4665ed2c32344944148bde32544577e425b2d946",
      "parents": [
        "59e85cd3c415ca483318bd7e4d5e743253b64685"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Tue Jun 21 12:46:59 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Tue Jun 21 12:46:59 2011 -0700"
      },
      "message": "Add basic assembler interface and an x86 backend.\n\nChange-Id: Ia8136bad88f1194c8a247e2af80e486ab88c1e8c\n"
    }
  ]
}
