{"action":"created","comment":{"url":"https://api.github.com/repos/eclipse/omr/pulls/comments/238053981","pull_request_review_id":180513458,"id":238053981,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzODA1Mzk4MQ==","diff_hunk":"@@ -0,0 +1,160 @@\n+/*******************************************************************************\n+ * Copyright (c) 2016, 2018 IBM Corp. and others\n+ *\n+ * This program and the accompanying materials are made available under\n+ * the terms of the Eclipse Public License 2.0 which accompanies this\n+ * distribution and is available at http://eclipse.org/legal/epl-2.0\n+ * or the Apache License, Version 2.0 which accompanies this distribution\n+ * and is available at https://www.apache.org/licenses/LICENSE-2.0.\n+ *\n+ * This Source Code may also be made available under the following Secondary\n+ * Licenses when the conditions for such availability set forth in the\n+ * Eclipse Public License, v. 2.0 are satisfied: GNU General Public License,\n+ * version 2 with the GNU Classpath Exception [1] and GNU General Public\n+ * License, version 2 with the OpenJDK Assembly Exception [2].\n+ *\n+ * [1] https://www.gnu.org/software/classpath/license.html\n+ * [2] http://openjdk.java.net/legal/assembly-exception.html\n+ *\n+ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n+ *******************************************************************************/\n+\n+#include <stdint.h>\n+#include <iostream>\n+#include <fstream>\n+\n+#include \"infra/Assert.hpp\"\n+#include \"ilgen/JitBuilderRecorder.hpp\"\n+// #include \"ilgen/MethodBuilderRecorder.hpp\"\n+\n+OMR::JitBuilderRecorder::JitBuilderRecorder()\n+   : _nextID(0), _idSize(8)\n+   {\n+   }\n+\n+OMR::JitBuilderRecorder::~JitBuilderRecorder()\n+   {\n+   }\n+\n+void\n+OMR::JitBuilderRecorder::start()\n+   {\n+   // special reserved value, must do it first !\n+   StoreID(0);\n+\n+   // another special reserved value, so do it first\n+   StoreID((const void *)1);\n+\n+   String(StatementName::RECORDER_SIGNATURE);\n+   Number(StatementName::VERSION_MAJOR);\n+   Number(StatementName::VERSION_MINOR);\n+   Number(StatementName::VERSION_PATCH);\n+   EndStatement();\n+   }\n+\n+OMR::JitBuilderRecorder::TypeID\n+OMR::JitBuilderRecorder::getNewID()\n+   {\n+   // support for variable sized ID encoding\n+   //  to avoid any synchronization issues in how decoders/encoders count IDs, use a statement to signal change\n+   // check if we're close to 8-bit / 16-bit boundary\n+   // need to leave space for one ID because these statements will not have been defined yet\n+   //  and defining the statement needs an ID!\n+   if (_nextID == (1 << 8) - 2)\n+      {\n+      _idSize = 16;\n+      Statement(StatementName::STATEMENT_ID16BIT); // TODO\n+      }\n+   else if (_nextID == (1 << 16) - 2)\n+      {\n+      _idSize = 32;\n+      Statement(StatementName::STATEMENT_ID32BIT); // TODO\n+      }\n+\n+   return _nextID++;\n+   }\n+\n+OMR::JitBuilderRecorder::TypeID\n+OMR::JitBuilderRecorder::myID()\n+   {\n+//    return lookupID(_mb);\n+      return lookupID((void*)0);\n+   }\n+\n+bool\n+OMR::JitBuilderRecorder::knownID(const void *ptr)\n+   {\n+   TypeMapID::iterator it = _idMap.find(ptr);\n+   return (it != _idMap.end());\n+   }\n+\n+OMR::JitBuilderRecorder::TypeID\n+OMR::JitBuilderRecorder::lookupID(const void *ptr)\n+   {\n+   TypeMapID::iterator it = _idMap.find(ptr);\n+   if (it == _idMap.end())\n+      TR_ASSERT_FATAL(0, \"Attempt to lookup a builder object that has not yet been created\");\n+\n+   TypeID id = it->second;\n+   return id;\n+   }\n+\n+void\n+OMR::JitBuilderRecorder::ensureStatementDefined(const char *s)\n+   {\n+   if (knownID(s))\n+      return;\n+\n+   StoreID(s);\n+   // Builder(0);\n+   Statement(s);\n+   String(s);\n+   EndStatement();\n+   }\n+\n+void\n+OMR::JitBuilderRecorder::end()\n+   {\n+   ID(1);\n+   String(StatementName::JBIL_COMPLETE);\n+   }\n+\n+// void\n+// OMR::JitBuilderRecorder::BeginStatement(const char *s)\n+//    {\n+//    // BeginStatement(_mb, s);\n+//    }\n+\n+void\n+// OMR::JitBuilderRecorder::BeginStatement(const TR::IlBuilderRecorder *b, const char *s)\n+OMR::JitBuilderRecorder::BeginStatement(const char *s)\n+   {\n+   ensureStatementDefined(s);\n+   // Builder(b);\n+   Statement(s);\n+   }\n+\n+void\n+OMR::JitBuilderRecorder::StoreID(const void *ptr)\n+   {\n+   TypeMapID::iterator it = _idMap.find(ptr);\n+   if (it != _idMap.end())\n+      TR_ASSERT_FATAL(0, \"Unexpected ID already defined for address %p\", ptr);\n+\n+   _idMap.insert(std::make_pair(ptr, getNewID()));\n+   // std::cout << \"map: \" << _idMap << '\\n';","path":"compiler/ilgen/OMRJitBuilderRecorder.cpp","position":145,"original_position":145,"commit_id":"2343af1c4dca3fe94c0db6d9d7749a622fc2c4d8","original_commit_id":"2343af1c4dca3fe94c0db6d9d7749a622fc2c4d8","user":{"login":"mstoodle","id":10781812,"node_id":"MDQ6VXNlcjEwNzgxODEy","avatar_url":"https://avatars2.githubusercontent.com/u/10781812?v=4","gravatar_id":"","url":"https://api.github.com/users/mstoodle","html_url":"https://github.com/mstoodle","followers_url":"https://api.github.com/users/mstoodle/followers","following_url":"https://api.github.com/users/mstoodle/following{/other_user}","gists_url":"https://api.github.com/users/mstoodle/gists{/gist_id}","starred_url":"https://api.github.com/users/mstoodle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mstoodle/subscriptions","organizations_url":"https://api.github.com/users/mstoodle/orgs","repos_url":"https://api.github.com/users/mstoodle/repos","events_url":"https://api.github.com/users/mstoodle/events{/privacy}","received_events_url":"https://api.github.com/users/mstoodle/received_events","type":"User","site_admin":false},"body":"please remove these comments","created_at":"2018-12-01T06:11:56Z","updated_at":"2018-12-01T06:44:37Z","html_url":"https://github.com/eclipse/omr/pull/3019#discussion_r238053981","pull_request_url":"https://api.github.com/repos/eclipse/omr/pulls/3019","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/eclipse/omr/pulls/comments/238053981"},"html":{"href":"https://github.com/eclipse/omr/pull/3019#discussion_r238053981"},"pull_request":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3019"}}},"pull_request":{"url":"https://api.github.com/repos/eclipse/omr/pulls/3019","id":219591037,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE5NTkxMDM3","html_url":"https://github.com/eclipse/omr/pull/3019","diff_url":"https://github.com/eclipse/omr/pull/3019.diff","patch_url":"https://github.com/eclipse/omr/pull/3019.patch","issue_url":"https://api.github.com/repos/eclipse/omr/issues/3019","number":3019,"state":"open","locked":false,"title":"Initial commit for Recorder functionality. (JITaaS)","user":{"login":"bragaigor","id":5835477,"node_id":"MDQ6VXNlcjU4MzU0Nzc=","avatar_url":"https://avatars3.githubusercontent.com/u/5835477?v=4","gravatar_id":"","url":"https://api.github.com/users/bragaigor","html_url":"https://github.com/bragaigor","followers_url":"https://api.github.com/users/bragaigor/followers","following_url":"https://api.github.com/users/bragaigor/following{/other_user}","gists_url":"https://api.github.com/users/bragaigor/gists{/gist_id}","starred_url":"https://api.github.com/users/bragaigor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bragaigor/subscriptions","organizations_url":"https://api.github.com/users/bragaigor/orgs","repos_url":"https://api.github.com/users/bragaigor/repos","events_url":"https://api.github.com/users/bragaigor/events{/privacy}","received_events_url":"https://api.github.com/users/bragaigor/received_events","type":"User","site_admin":false},"body":"Recorder is part of the record and replay functionality.\r\nRecord and Replay is a feature to enable JIT as a Service (JITaaS).\r\nThe ultimate goal for such feature is to remove the JIT from runtimes\r\nAnd provide it as a service. The recorder part of this feature, as the name implies,\r\nwill record the IL at the client side and send it to be compiled in the server.\r\nThe server then replays/parses the IL and compiles it, to then send machine\r\ncode back to the client so that it can execute the requested IL. The IL contains\r\nservices that have recording support (e.g. Add, Sub, Xor, Store, Loop, etc. More to come).\r\nThis commit is dedicated to the Recorder functionality. The replay implementation\r\nwill be introduced in a later commit.\r\nEquivalent Recorder files for MethodBuilder, IlBuilder, JitBuilder, and\r\nBytecodeBuilder were created. Recorder files became parents of their\r\nrespective files. More details as follows.\r\n\r\nMethodBuilderRecorder records JitBuilder IL (jbil) for the JitBuilder\r\nservices created by MethodBuilder. It also holds a pointer to a\r\nJitBuilderRecorder object and uses that recorder object to record\r\nthe services and parameters for all the JitBuilder API called on a\r\nMethodBuilder object, starting from when it is created (using\r\nSTATEMENT_NEWMETHODBUILDER) to the calls to, for example,\r\nDefineName or DefineParameter, etc.\r\n\r\nIlBuilderRecorder implements every JitBuilder service but only\r\nhandles the creation of IlValues and the jbil recording.\r\nIlBuilder retains the code required to actually generate compiler\r\nIL for compiling the target method.\r\n\r\nJitBuilderRecorder defines the basic structure of a JitBuilder IL (ljbil)\r\nrepresentation. The following files provide implementations that\r\nwrite this representation to a binary buffer, binary file, text file, respectively:\r\nOMRJitBuilderRecorderBinaryBuffer\r\nOMRJitBuilderRecorderBinaryFile\r\nOMRJitBuilderRecorderTextFile\r\n\r\nThe Replay implementation will subsequently become\r\nchildren of MethodBuilder, IlBuilder, etc. once completed. e.g.:\r\nIlInjector > IlBuilderRecorder > IlBuilder > MethodBuilderRecorder\r\nMethodBuilderRecorder > MethodBuilder > MethodBuilderReplay\r\n\r\nCo-authored-by: Sharon Wang <sharon-wang-cpsc@outlook.com>\r\nCo-authored-by: Mark Stoodley <mstoodle@ca.ibm.com>\r\nCo-authored-by: Andrew Young <youngar17@gmail.com>\r\nCo-authored-by: Charlie Gracie <charlie.gracie@gmail.com>\r\n\r\nSigned-off-by: Igor Braga <higorb1@gmail.com>","created_at":"2018-10-02T05:41:11Z","updated_at":"2018-12-01T06:44:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"14115ea45220af8976de10212bda7bd75ab41243","assignee":null,"assignees":[],"requested_reviewers":[{"login":"youngar","id":2892549,"node_id":"MDQ6VXNlcjI4OTI1NDk=","avatar_url":"https://avatars0.githubusercontent.com/u/2892549?v=4","gravatar_id":"","url":"https://api.github.com/users/youngar","html_url":"https://github.com/youngar","followers_url":"https://api.github.com/users/youngar/followers","following_url":"https://api.github.com/users/youngar/following{/other_user}","gists_url":"https://api.github.com/users/youngar/gists{/gist_id}","starred_url":"https://api.github.com/users/youngar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/youngar/subscriptions","organizations_url":"https://api.github.com/users/youngar/orgs","repos_url":"https://api.github.com/users/youngar/repos","events_url":"https://api.github.com/users/youngar/events{/privacy}","received_events_url":"https://api.github.com/users/youngar/received_events","type":"User","site_admin":false},{"login":"0xdaryl","id":17713611,"node_id":"MDQ6VXNlcjE3NzEzNjEx","avatar_url":"https://avatars2.githubusercontent.com/u/17713611?v=4","gravatar_id":"","url":"https://api.github.com/users/0xdaryl","html_url":"https://github.com/0xdaryl","followers_url":"https://api.github.com/users/0xdaryl/followers","following_url":"https://api.github.com/users/0xdaryl/following{/other_user}","gists_url":"https://api.github.com/users/0xdaryl/gists{/gist_id}","starred_url":"https://api.github.com/users/0xdaryl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0xdaryl/subscriptions","organizations_url":"https://api.github.com/users/0xdaryl/orgs","repos_url":"https://api.github.com/users/0xdaryl/repos","events_url":"https://api.github.com/users/0xdaryl/events{/privacy}","received_events_url":"https://api.github.com/users/0xdaryl/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":463261830,"node_id":"MDU6TGFiZWw0NjMyNjE4MzA=","url":"https://api.github.com/repos/eclipse/omr/labels/compiler","name":"compiler","color":"00d73d","default":false},{"id":468620202,"node_id":"MDU6TGFiZWw0Njg2MjAyMDI=","url":"https://api.github.com/repos/eclipse/omr/labels/jitbuilder","name":"jitbuilder","color":"666bf1","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/eclipse/omr/pulls/3019/commits","review_comments_url":"https://api.github.com/repos/eclipse/omr/pulls/3019/comments","review_comment_url":"https://api.github.com/repos/eclipse/omr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eclipse/omr/issues/3019/comments","statuses_url":"https://api.github.com/repos/eclipse/omr/statuses/2343af1c4dca3fe94c0db6d9d7749a622fc2c4d8","head":{"label":"bragaigor:recorder","ref":"recorder","sha":"2343af1c4dca3fe94c0db6d9d7749a622fc2c4d8","user":{"login":"bragaigor","id":5835477,"node_id":"MDQ6VXNlcjU4MzU0Nzc=","avatar_url":"https://avatars3.githubusercontent.com/u/5835477?v=4","gravatar_id":"","url":"https://api.github.com/users/bragaigor","html_url":"https://github.com/bragaigor","followers_url":"https://api.github.com/users/bragaigor/followers","following_url":"https://api.github.com/users/bragaigor/following{/other_user}","gists_url":"https://api.github.com/users/bragaigor/gists{/gist_id}","starred_url":"https://api.github.com/users/bragaigor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bragaigor/subscriptions","organizations_url":"https://api.github.com/users/bragaigor/orgs","repos_url":"https://api.github.com/users/bragaigor/repos","events_url":"https://api.github.com/users/bragaigor/events{/privacy}","received_events_url":"https://api.github.com/users/bragaigor/received_events","type":"User","site_admin":false},"repo":{"id":140769783,"node_id":"MDEwOlJlcG9zaXRvcnkxNDA3Njk3ODM=","name":"omr","full_name":"bragaigor/omr","private":false,"owner":{"login":"bragaigor","id":5835477,"node_id":"MDQ6VXNlcjU4MzU0Nzc=","avatar_url":"https://avatars3.githubusercontent.com/u/5835477?v=4","gravatar_id":"","url":"https://api.github.com/users/bragaigor","html_url":"https://github.com/bragaigor","followers_url":"https://api.github.com/users/bragaigor/followers","following_url":"https://api.github.com/users/bragaigor/following{/other_user}","gists_url":"https://api.github.com/users/bragaigor/gists{/gist_id}","starred_url":"https://api.github.com/users/bragaigor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bragaigor/subscriptions","organizations_url":"https://api.github.com/users/bragaigor/orgs","repos_url":"https://api.github.com/users/bragaigor/repos","events_url":"https://api.github.com/users/bragaigor/events{/privacy}","received_events_url":"https://api.github.com/users/bragaigor/received_events","type":"User","site_admin":false},"html_url":"https://github.com/bragaigor/omr","description":"Eclipse OMR™ Cross platform components for building reliable, high performance language runtimes","fork":true,"url":"https://api.github.com/repos/bragaigor/omr","forks_url":"https://api.github.com/repos/bragaigor/omr/forks","keys_url":"https://api.github.com/repos/bragaigor/omr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bragaigor/omr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bragaigor/omr/teams","hooks_url":"https://api.github.com/repos/bragaigor/omr/hooks","issue_events_url":"https://api.github.com/repos/bragaigor/omr/issues/events{/number}","events_url":"https://api.github.com/repos/bragaigor/omr/events","assignees_url":"https://api.github.com/repos/bragaigor/omr/assignees{/user}","branches_url":"https://api.github.com/repos/bragaigor/omr/branches{/branch}","tags_url":"https://api.github.com/repos/bragaigor/omr/tags","blobs_url":"https://api.github.com/repos/bragaigor/omr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bragaigor/omr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bragaigor/omr/git/refs{/sha}","trees_url":"https://api.github.com/repos/bragaigor/omr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bragaigor/omr/statuses/{sha}","languages_url":"https://api.github.com/repos/bragaigor/omr/languages","stargazers_url":"https://api.github.com/repos/bragaigor/omr/stargazers","contributors_url":"https://api.github.com/repos/bragaigor/omr/contributors","subscribers_url":"https://api.github.com/repos/bragaigor/omr/subscribers","subscription_url":"https://api.github.com/repos/bragaigor/omr/subscription","commits_url":"https://api.github.com/repos/bragaigor/omr/commits{/sha}","git_commits_url":"https://api.github.com/repos/bragaigor/omr/git/commits{/sha}","comments_url":"https://api.github.com/repos/bragaigor/omr/comments{/number}","issue_comment_url":"https://api.github.com/repos/bragaigor/omr/issues/comments{/number}","contents_url":"https://api.github.com/repos/bragaigor/omr/contents/{+path}","compare_url":"https://api.github.com/repos/bragaigor/omr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bragaigor/omr/merges","archive_url":"https://api.github.com/repos/bragaigor/omr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bragaigor/omr/downloads","issues_url":"https://api.github.com/repos/bragaigor/omr/issues{/number}","pulls_url":"https://api.github.com/repos/bragaigor/omr/pulls{/number}","milestones_url":"https://api.github.com/repos/bragaigor/omr/milestones{/number}","notifications_url":"https://api.github.com/repos/bragaigor/omr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bragaigor/omr/labels{/name}","releases_url":"https://api.github.com/repos/bragaigor/omr/releases{/id}","deployments_url":"https://api.github.com/repos/bragaigor/omr/deployments","created_at":"2018-07-12T22:16:12Z","updated_at":"2018-11-28T14:37:01Z","pushed_at":"2018-11-28T14:36:58Z","git_url":"git://github.com/bragaigor/omr.git","ssh_url":"git@github.com:bragaigor/omr.git","clone_url":"https://github.com/bragaigor/omr.git","svn_url":"https://github.com/bragaigor/omr","homepage":"http://www.eclipse.org/omr","size":29571,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"eclipse:master","ref":"master","sha":"83353ae2f0d5b03833edc162b8e4331f0ddecc7f","user":{"login":"eclipse","id":56974,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2OTc0","avatar_url":"https://avatars1.githubusercontent.com/u/56974?v=4","gravatar_id":"","url":"https://api.github.com/users/eclipse","html_url":"https://github.com/eclipse","followers_url":"https://api.github.com/users/eclipse/followers","following_url":"https://api.github.com/users/eclipse/following{/other_user}","gists_url":"https://api.github.com/users/eclipse/gists{/gist_id}","starred_url":"https://api.github.com/users/eclipse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eclipse/subscriptions","organizations_url":"https://api.github.com/users/eclipse/orgs","repos_url":"https://api.github.com/users/eclipse/repos","events_url":"https://api.github.com/users/eclipse/events{/privacy}","received_events_url":"https://api.github.com/users/eclipse/received_events","type":"Organization","site_admin":false},"repo":{"id":53077478,"node_id":"MDEwOlJlcG9zaXRvcnk1MzA3NzQ3OA==","name":"omr","full_name":"eclipse/omr","private":false,"owner":{"login":"eclipse","id":56974,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2OTc0","avatar_url":"https://avatars1.githubusercontent.com/u/56974?v=4","gravatar_id":"","url":"https://api.github.com/users/eclipse","html_url":"https://github.com/eclipse","followers_url":"https://api.github.com/users/eclipse/followers","following_url":"https://api.github.com/users/eclipse/following{/other_user}","gists_url":"https://api.github.com/users/eclipse/gists{/gist_id}","starred_url":"https://api.github.com/users/eclipse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eclipse/subscriptions","organizations_url":"https://api.github.com/users/eclipse/orgs","repos_url":"https://api.github.com/users/eclipse/repos","events_url":"https://api.github.com/users/eclipse/events{/privacy}","received_events_url":"https://api.github.com/users/eclipse/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/eclipse/omr","description":"Eclipse OMR™ Cross platform components for building reliable, high performance language runtimes","fork":false,"url":"https://api.github.com/repos/eclipse/omr","forks_url":"https://api.github.com/repos/eclipse/omr/forks","keys_url":"https://api.github.com/repos/eclipse/omr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eclipse/omr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eclipse/omr/teams","hooks_url":"https://api.github.com/repos/eclipse/omr/hooks","issue_events_url":"https://api.github.com/repos/eclipse/omr/issues/events{/number}","events_url":"https://api.github.com/repos/eclipse/omr/events","assignees_url":"https://api.github.com/repos/eclipse/omr/assignees{/user}","branches_url":"https://api.github.com/repos/eclipse/omr/branches{/branch}","tags_url":"https://api.github.com/repos/eclipse/omr/tags","blobs_url":"https://api.github.com/repos/eclipse/omr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eclipse/omr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eclipse/omr/git/refs{/sha}","trees_url":"https://api.github.com/repos/eclipse/omr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eclipse/omr/statuses/{sha}","languages_url":"https://api.github.com/repos/eclipse/omr/languages","stargazers_url":"https://api.github.com/repos/eclipse/omr/stargazers","contributors_url":"https://api.github.com/repos/eclipse/omr/contributors","subscribers_url":"https://api.github.com/repos/eclipse/omr/subscribers","subscription_url":"https://api.github.com/repos/eclipse/omr/subscription","commits_url":"https://api.github.com/repos/eclipse/omr/commits{/sha}","git_commits_url":"https://api.github.com/repos/eclipse/omr/git/commits{/sha}","comments_url":"https://api.github.com/repos/eclipse/omr/comments{/number}","issue_comment_url":"https://api.github.com/repos/eclipse/omr/issues/comments{/number}","contents_url":"https://api.github.com/repos/eclipse/omr/contents/{+path}","compare_url":"https://api.github.com/repos/eclipse/omr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eclipse/omr/merges","archive_url":"https://api.github.com/repos/eclipse/omr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eclipse/omr/downloads","issues_url":"https://api.github.com/repos/eclipse/omr/issues{/number}","pulls_url":"https://api.github.com/repos/eclipse/omr/pulls{/number}","milestones_url":"https://api.github.com/repos/eclipse/omr/milestones{/number}","notifications_url":"https://api.github.com/repos/eclipse/omr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eclipse/omr/labels{/name}","releases_url":"https://api.github.com/repos/eclipse/omr/releases{/id}","deployments_url":"https://api.github.com/repos/eclipse/omr/deployments","created_at":"2016-03-03T19:34:17Z","updated_at":"2018-12-01T03:14:07Z","pushed_at":"2018-12-01T00:08:41Z","git_url":"git://github.com/eclipse/omr.git","ssh_url":"git@github.com:eclipse/omr.git","clone_url":"https://github.com/eclipse/omr.git","svn_url":"https://github.com/eclipse/omr","homepage":"http://www.eclipse.org/omr","size":29610,"stargazers_count":591,"watchers_count":591,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":235,"mirror_url":null,"archived":false,"open_issues_count":539,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":235,"open_issues":539,"watchers":591,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3019"},"html":{"href":"https://github.com/eclipse/omr/pull/3019"},"issue":{"href":"https://api.github.com/repos/eclipse/omr/issues/3019"},"comments":{"href":"https://api.github.com/repos/eclipse/omr/issues/3019/comments"},"review_comments":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3019/comments"},"review_comment":{"href":"https://api.github.com/repos/eclipse/omr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3019/commits"},"statuses":{"href":"https://api.github.com/repos/eclipse/omr/statuses/2343af1c4dca3fe94c0db6d9d7749a622fc2c4d8"}},"author_association":"NONE"}}
{"actor":{"display_login":"mstoodle"}}