{"action":"created","comment":{"url":"https://api.github.com/repos/eclipse/omr/pulls/comments/229469386","pull_request_review_id":169964004,"id":229469386,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyOTQ2OTM4Ng==","diff_hunk":"@@ -13314,113 +13577,92 @@ OMR::Z::TreeEvaluator::primitiveArraycopyEvaluator(TR::Node* node, TR::CodeGener\n \n    byteSrcReg = cg->gprClobberEvaluate(byteSrcNode);\n    byteDstReg = cg->gprClobberEvaluate(byteDstNode);\n-\n-   bool alreadyEvaluatedByteLenNode = false;\n-\n-#ifdef J9_PROJECT_SPECIFIC\n-   TR::LabelSymbol* mergeLabel;\n-   bool mustGenerateOOLGuardedLoadPath = TR::Compiler->om.shouldGenerateReadBarriersForFieldLoads() &&\n-                                         node->getArrayCopyElementType() == TR::Address;\n-\n-   if (mustGenerateOOLGuardedLoadPath)\n+   TR::LabelSymbol *mergeLabel = generateLabelSymbol(cg);\n+   TR::LabelSymbol *startICFLabel = generateLabelSymbol(cg);\n+   TR_S390ScratchRegisterManager *srm = cg->generateScratchRegisterManager(3);\n+   TR::Instruction *cursor = NULL;\n+   TR::RegisterDependencyConditions *deps = NULL;\n+   TR_Debug *debug = cg->getDebug();\n+   // If it is variable length load then Internal Control Flow starts here where on runtime we check if length of bytes to copy is greater than zero.\n+   if (!isConstantByteLen)\n       {\n-      // The OOL path needs the byte length for the guarded load, compress, and store loop.\n-      // However, the main line fast path also needs the byte length. As such, the byteLenNode\n-      // must be evaluated outside of the OOL ICF region.\n       byteLenReg = cg->gprClobberEvaluate(byteLenNode);\n-      alreadyEvaluatedByteLenNode = true;\n-\n-      mergeLabel = generateLabelSymbol(cg);\n-      TR::LabelSymbol* slowPathLabel = generateLabelSymbol(cg);\n-\n-      TR_ASSERT_FATAL(J9_PRIVATE_FLAGS_CONCURRENT_SCAVENGER_ACTIVE == 0x20000,\n-                 \"GSCS: The OOL sequence branch is dependant on the flag being 0x20000\");\n-      TR_ASSERT_FATAL(TR::Compiler->target.is64Bit(),\n-                 \"GSCS: Guarded Load OOL Path only defined in 64 bit mode\");\n-      TR::Register *vmReg = cg->getMethodMetaDataRealRegister();\n-      TR::MemoryReference *privFlagMR = generateS390MemoryReference(vmReg,\n-            TR::Compiler->vm.thisThreadGetConcurrentScavengeActiveByteAddressOffset(cg->comp()), cg);\n-      generateSIInstruction(cg, TR::InstOpCode::TM, node, privFlagMR, 0x00000002);\n-      generateS390BranchInstruction(cg, TR::InstOpCode::BRC, TR::InstOpCode::COND_CC3, node, slowPathLabel);\n-\n-      // Generate OOL Slow Path\n-      TR_S390OutOfLineCodeSection* outOfLineCodeSection = new (cg->trHeapMemory()) TR_S390OutOfLineCodeSection(slowPathLabel, mergeLabel, cg);\n-      cg->getS390OutOfLineCodeSectionList().push_front(outOfLineCodeSection);\n-      outOfLineCodeSection->swapInstructionListsWithCompilation();\n-\n-      generateS390LabelInstruction(cg, TR::InstOpCode::LABEL, node, slowPathLabel);\n-\n-      TR::Register* strideRegister = cg->allocateRegister();\n-\n-      MemCpyVarLenTypedMacroOp vtOpSlow(node, byteDstNode, byteSrcNode, cg, node->getArrayCopyElementType(), byteLenReg, byteLenNode, true, node->isForwardArrayCopy());\n-      vtOpSlow.generate(byteDstReg, byteSrcReg, strideRegister);\n-      vtOpSlow.cleanUpReg();\n-\n-      cg->stopUsingRegister(strideRegister);\n-\n-      generateS390BranchInstruction(cg, TR::InstOpCode::BRC, TR::InstOpCode::COND_BRC, node, mergeLabel);\n-\n-      // Switch back from OOL Slow Path\n-      outOfLineCodeSection->swapInstructionListsWithCompilation();\n+      generateS390LabelInstruction(cg, TR::InstOpCode::LABEL, node, startICFLabel);\n+      startICFLabel->setStartInternalControlFlow();\n+      cursor = generateS390CompareAndBranchInstruction(cg, TR::InstOpCode::getCmpOpCode(), node, byteLenReg, static_cast<int8_t>(0x0), TR::InstOpCode::COND_BNH, mergeLabel, false);\n+      iComment(\"byteLen <= 0 goto mergeLabel\");\n       }\n-#endif\n \n    if (node->isForwardArrayCopy())\n       {\n-      if (byteLenNode->getOpCode().isLoadConst())\n-         {\n-         MemCpyConstLenMacroOp op(node, byteDstNode, byteSrcNode, cg, byteLenNode->getConst<int64_t>());\n-\n-         op.generate(byteDstReg, byteSrcReg);\n-         }\n-      else\n-         {\n-         bool alreadyEvaluatedLengthMinusOne = false;\n-\n-         // Don't evaluate length minus one if byteLenNode was already evaluated\n-         if (!alreadyEvaluatedByteLenNode)\n-            {\n-            byteLenReg = cg->evaluateLengthMinusOneForMemoryOps(byteLenNode, true, alreadyEvaluatedLengthMinusOne);\n-            }\n-\n-         MemCpyVarLenMacroOp op(node, byteDstNode, byteSrcNode, cg, byteLenReg, byteLenNode, alreadyEvaluatedLengthMinusOne);\n-\n-         op.setUseEXForRemainder(true);\n-         op.generate(byteDstReg, byteSrcReg);\n-         }\n+      // Optimizer has already identified that this is array copy in forward direction.\n+      TR::TreeEvaluator::forwardArrayCopySequenceGenerator(node, cg, byteSrcReg, byteDstReg, byteLenReg, byteLenNode, srm, mergeLabel);\n       }\n    else\n       {\n-      // Don't clobber evaluate byteLenNode again if it was already evaluated\n-      if (!alreadyEvaluatedByteLenNode)\n+      // We need to decide direction of array copy at runtime.\n+      TR::LabelSymbol *forwardArrayCopyLabel = generateLabelSymbol(cg);\n+      cursor = generateS390CompareAndBranchInstruction(cg, TR::InstOpCode::getCmpRegOpCode(), node, byteSrcReg, byteDstReg, TR::InstOpCode::COND_BNL, forwardArrayCopyLabel, false);\n+      iComment(\"if byteSrcPointer >= byteDstPointer then GoTo forwardArrayCopy\");\n+      \n+      // If it is contant length bytes array copy then Internal Control Flow starts here.\n+      if (isConstantByteLen)\n          {\n-         byteLenReg = cg->gprClobberEvaluate(byteLenNode);\n+         generateS390LabelInstruction(cg, TR::InstOpCode::LABEL, node, startICFLabel);\n+         startICFLabel->setStartInternalControlFlow();\n          }\n \n-      TR::Register* strideRegister = cg->allocateRegister();\n-\n-      MemCpyVarLenTypedMacroOp vtOp(node, byteDstNode, byteSrcNode, cg, node->getArrayCopyElementType(), byteLenReg, byteLenNode, false, node->isForwardArrayCopy());\n-\n-      vtOp.generate(byteDstReg, byteSrcReg, strideRegister);\n-      vtOp.cleanUpReg();\n-\n-      cg->stopUsingRegister(strideRegister);\n+      TR::Register *checkBoundReg = srm->findOrCreateScratchRegister();\n+      if (byteLenReg == NULL)\n+         byteLenReg = cg->gprClobberEvaluate(byteLenNode);\n+      cursor = generateRRRInstruction(cg, TR::InstOpCode::getAddThreeRegOpCode(), node, checkBoundReg, byteSrcReg, byteLenReg); iComment(\"lastElementToCopy=byteSrcPointer+lengthInBytes\");\n+      \n+      TR::LabelSymbol *backwardArrayCopyLabel = generateLabelSymbol(cg);\n+      cursor = generateS390CompareAndBranchInstruction(cg, TR::InstOpCode::getCmpRegOpCode(), node, checkBoundReg, byteDstReg, TR::InstOpCode::COND_BH, backwardArrayCopyLabel, false);\n+      iComment(\"lastElementToCopy > byteDstPointer then GoTo backwardArrayCopy\");\n+      srm->reclaimScratchRegister(checkBoundReg);\n+      \n+      cursor = generateS390LabelInstruction(cg, TR::InstOpCode::LABEL, node, forwardArrayCopyLabel);iComment(\"Forward Array Copy Sequence\");\n+      TR::TreeEvaluator::forwardArrayCopySequenceGenerator(node, cg, byteSrcReg, byteDstReg, byteLenReg, byteLenNode, srm, mergeLabel);\n+      cursor = generateS390BranchInstruction(cg, TR::InstOpCode::BRC, TR::InstOpCode::COND_BRC, node, mergeLabel); iComment(\"Jump to MergeLabel\");\n+      \n+      cursor = generateS390LabelInstruction(cg, TR::InstOpCode::LABEL, node, backwardArrayCopyLabel); iComment(\"Backward Array Copy Sequence\");\n+      deps = TR::TreeEvaluator::backwardArrayCopySequenceGenerator(node, cg, byteSrcReg, byteDstReg, byteLenReg, srm, mergeLabel);\n+      }\n+   cursor = generateS390LabelInstruction(cg, TR::InstOpCode::LABEL, node, mergeLabel);\n+   if (!(isConstantByteLen && node->isForwardArrayCopy() && byteLenNode->getConst<int64_t>() < 256))","path":"compiler/z/codegen/OMRTreeEvaluator.cpp","position":421,"original_position":421,"commit_id":"4f2c10ed6da3e8fb909249e8096e4f6feb853275","original_commit_id":"4f2c10ed6da3e8fb909249e8096e4f6feb853275","user":{"login":"fjeremic","id":16259104,"node_id":"MDQ6VXNlcjE2MjU5MTA0","avatar_url":"https://avatars1.githubusercontent.com/u/16259104?v=4","gravatar_id":"","url":"https://api.github.com/users/fjeremic","html_url":"https://github.com/fjeremic","followers_url":"https://api.github.com/users/fjeremic/followers","following_url":"https://api.github.com/users/fjeremic/following{/other_user}","gists_url":"https://api.github.com/users/fjeremic/gists{/gist_id}","starred_url":"https://api.github.com/users/fjeremic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fjeremic/subscriptions","organizations_url":"https://api.github.com/users/fjeremic/orgs","repos_url":"https://api.github.com/users/fjeremic/repos","events_url":"https://api.github.com/users/fjeremic/events{/privacy}","received_events_url":"https://api.github.com/users/fjeremic/received_events","type":"User","site_admin":false},"body":"I'm not really following what we're doing here exactly. Can you explain? This code seems out of place.","created_at":"2018-10-30T20:16:57Z","updated_at":"2018-10-30T20:17:03Z","html_url":"https://github.com/eclipse/omr/pull/3126#discussion_r229469386","pull_request_url":"https://api.github.com/repos/eclipse/omr/pulls/3126","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/eclipse/omr/pulls/comments/229469386"},"html":{"href":"https://github.com/eclipse/omr/pull/3126#discussion_r229469386"},"pull_request":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3126"}}},"pull_request":{"url":"https://api.github.com/repos/eclipse/omr/pulls/3126","id":226214973,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI2MjE0OTcz","html_url":"https://github.com/eclipse/omr/pull/3126","diff_url":"https://github.com/eclipse/omr/pull/3126.diff","patch_url":"https://github.com/eclipse/omr/pull/3126.patch","issue_url":"https://api.github.com/repos/eclipse/omr/issues/3126","number":3126,"state":"open","locked":false,"title":"WIP: Improve ArrayCopy Sequence Part on IBM Z","user":{"login":"r30shah","id":22353051,"node_id":"MDQ6VXNlcjIyMzUzMDUx","avatar_url":"https://avatars2.githubusercontent.com/u/22353051?v=4","gravatar_id":"","url":"https://api.github.com/users/r30shah","html_url":"https://github.com/r30shah","followers_url":"https://api.github.com/users/r30shah/followers","following_url":"https://api.github.com/users/r30shah/following{/other_user}","gists_url":"https://api.github.com/users/r30shah/gists{/gist_id}","starred_url":"https://api.github.com/users/r30shah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/r30shah/subscriptions","organizations_url":"https://api.github.com/users/r30shah/orgs","repos_url":"https://api.github.com/users/r30shah/repos","events_url":"https://api.github.com/users/r30shah/events{/privacy}","received_events_url":"https://api.github.com/users/r30shah/received_events","type":"User","site_admin":false},"body":"This commit contains following changes.\r\n1. Instead of expecting diamond for array copy direction from\r\noptimizer generates a runtime test for a given single array copy\r\ntree top.\r\n2. Vectorize backward array copy sequence to speed up\r\n\r\nSigned-off-by: Rahil Shah <rahil@ca.ibm.com>","created_at":"2018-10-26T20:19:51Z","updated_at":"2018-10-30T20:17:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"101af209b0f1af5f8ceeeb89ed346bd2a3c41076","assignee":{"login":"fjeremic","id":16259104,"node_id":"MDQ6VXNlcjE2MjU5MTA0","avatar_url":"https://avatars1.githubusercontent.com/u/16259104?v=4","gravatar_id":"","url":"https://api.github.com/users/fjeremic","html_url":"https://github.com/fjeremic","followers_url":"https://api.github.com/users/fjeremic/followers","following_url":"https://api.github.com/users/fjeremic/following{/other_user}","gists_url":"https://api.github.com/users/fjeremic/gists{/gist_id}","starred_url":"https://api.github.com/users/fjeremic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fjeremic/subscriptions","organizations_url":"https://api.github.com/users/fjeremic/orgs","repos_url":"https://api.github.com/users/fjeremic/repos","events_url":"https://api.github.com/users/fjeremic/events{/privacy}","received_events_url":"https://api.github.com/users/fjeremic/received_events","type":"User","site_admin":false},"assignees":[{"login":"fjeremic","id":16259104,"node_id":"MDQ6VXNlcjE2MjU5MTA0","avatar_url":"https://avatars1.githubusercontent.com/u/16259104?v=4","gravatar_id":"","url":"https://api.github.com/users/fjeremic","html_url":"https://github.com/fjeremic","followers_url":"https://api.github.com/users/fjeremic/followers","following_url":"https://api.github.com/users/fjeremic/following{/other_user}","gists_url":"https://api.github.com/users/fjeremic/gists{/gist_id}","starred_url":"https://api.github.com/users/fjeremic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fjeremic/subscriptions","organizations_url":"https://api.github.com/users/fjeremic/orgs","repos_url":"https://api.github.com/users/fjeremic/repos","events_url":"https://api.github.com/users/fjeremic/events{/privacy}","received_events_url":"https://api.github.com/users/fjeremic/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":463261830,"node_id":"MDU6TGFiZWw0NjMyNjE4MzA=","url":"https://api.github.com/repos/eclipse/omr/labels/compiler","name":"compiler","color":"00d73d","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/eclipse/omr/pulls/3126/commits","review_comments_url":"https://api.github.com/repos/eclipse/omr/pulls/3126/comments","review_comment_url":"https://api.github.com/repos/eclipse/omr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eclipse/omr/issues/3126/comments","statuses_url":"https://api.github.com/repos/eclipse/omr/statuses/4f2c10ed6da3e8fb909249e8096e4f6feb853275","head":{"label":"r30shah:arrayCopyChangesOMR","ref":"arrayCopyChangesOMR","sha":"4f2c10ed6da3e8fb909249e8096e4f6feb853275","user":{"login":"r30shah","id":22353051,"node_id":"MDQ6VXNlcjIyMzUzMDUx","avatar_url":"https://avatars2.githubusercontent.com/u/22353051?v=4","gravatar_id":"","url":"https://api.github.com/users/r30shah","html_url":"https://github.com/r30shah","followers_url":"https://api.github.com/users/r30shah/followers","following_url":"https://api.github.com/users/r30shah/following{/other_user}","gists_url":"https://api.github.com/users/r30shah/gists{/gist_id}","starred_url":"https://api.github.com/users/r30shah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/r30shah/subscriptions","organizations_url":"https://api.github.com/users/r30shah/orgs","repos_url":"https://api.github.com/users/r30shah/repos","events_url":"https://api.github.com/users/r30shah/events{/privacy}","received_events_url":"https://api.github.com/users/r30shah/received_events","type":"User","site_admin":false},"repo":{"id":68848950,"node_id":"MDEwOlJlcG9zaXRvcnk2ODg0ODk1MA==","name":"omr","full_name":"r30shah/omr","private":false,"owner":{"login":"r30shah","id":22353051,"node_id":"MDQ6VXNlcjIyMzUzMDUx","avatar_url":"https://avatars2.githubusercontent.com/u/22353051?v=4","gravatar_id":"","url":"https://api.github.com/users/r30shah","html_url":"https://github.com/r30shah","followers_url":"https://api.github.com/users/r30shah/followers","following_url":"https://api.github.com/users/r30shah/following{/other_user}","gists_url":"https://api.github.com/users/r30shah/gists{/gist_id}","starred_url":"https://api.github.com/users/r30shah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/r30shah/subscriptions","organizations_url":"https://api.github.com/users/r30shah/orgs","repos_url":"https://api.github.com/users/r30shah/repos","events_url":"https://api.github.com/users/r30shah/events{/privacy}","received_events_url":"https://api.github.com/users/r30shah/received_events","type":"User","site_admin":false},"html_url":"https://github.com/r30shah/omr","description":"Cross platform components for building reliable, high performance language runtimes","fork":true,"url":"https://api.github.com/repos/r30shah/omr","forks_url":"https://api.github.com/repos/r30shah/omr/forks","keys_url":"https://api.github.com/repos/r30shah/omr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/r30shah/omr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/r30shah/omr/teams","hooks_url":"https://api.github.com/repos/r30shah/omr/hooks","issue_events_url":"https://api.github.com/repos/r30shah/omr/issues/events{/number}","events_url":"https://api.github.com/repos/r30shah/omr/events","assignees_url":"https://api.github.com/repos/r30shah/omr/assignees{/user}","branches_url":"https://api.github.com/repos/r30shah/omr/branches{/branch}","tags_url":"https://api.github.com/repos/r30shah/omr/tags","blobs_url":"https://api.github.com/repos/r30shah/omr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/r30shah/omr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/r30shah/omr/git/refs{/sha}","trees_url":"https://api.github.com/repos/r30shah/omr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/r30shah/omr/statuses/{sha}","languages_url":"https://api.github.com/repos/r30shah/omr/languages","stargazers_url":"https://api.github.com/repos/r30shah/omr/stargazers","contributors_url":"https://api.github.com/repos/r30shah/omr/contributors","subscribers_url":"https://api.github.com/repos/r30shah/omr/subscribers","subscription_url":"https://api.github.com/repos/r30shah/omr/subscription","commits_url":"https://api.github.com/repos/r30shah/omr/commits{/sha}","git_commits_url":"https://api.github.com/repos/r30shah/omr/git/commits{/sha}","comments_url":"https://api.github.com/repos/r30shah/omr/comments{/number}","issue_comment_url":"https://api.github.com/repos/r30shah/omr/issues/comments{/number}","contents_url":"https://api.github.com/repos/r30shah/omr/contents/{+path}","compare_url":"https://api.github.com/repos/r30shah/omr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/r30shah/omr/merges","archive_url":"https://api.github.com/repos/r30shah/omr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/r30shah/omr/downloads","issues_url":"https://api.github.com/repos/r30shah/omr/issues{/number}","pulls_url":"https://api.github.com/repos/r30shah/omr/pulls{/number}","milestones_url":"https://api.github.com/repos/r30shah/omr/milestones{/number}","notifications_url":"https://api.github.com/repos/r30shah/omr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/r30shah/omr/labels{/name}","releases_url":"https://api.github.com/repos/r30shah/omr/releases{/id}","deployments_url":"https://api.github.com/repos/r30shah/omr/deployments","created_at":"2016-09-21T19:05:24Z","updated_at":"2018-10-20T15:09:26Z","pushed_at":"2018-10-26T21:53:12Z","git_url":"git://github.com/r30shah/omr.git","ssh_url":"git@github.com:r30shah/omr.git","clone_url":"https://github.com/r30shah/omr.git","svn_url":"https://github.com/r30shah/omr","homepage":"","size":28513,"stargazers_count":1,"watchers_count":1,"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":1,"default_branch":"master"}},"base":{"label":"eclipse:master","ref":"master","sha":"2169e3562d967d1f3d1b43344796dfb3f4f23bb7","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-10-30T19:41:54Z","pushed_at":"2018-10-30T19:41:44Z","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":28580,"stargazers_count":575,"watchers_count":575,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":233,"mirror_url":null,"archived":false,"open_issues_count":506,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":233,"open_issues":506,"watchers":575,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3126"},"html":{"href":"https://github.com/eclipse/omr/pull/3126"},"issue":{"href":"https://api.github.com/repos/eclipse/omr/issues/3126"},"comments":{"href":"https://api.github.com/repos/eclipse/omr/issues/3126/comments"},"review_comments":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3126/comments"},"review_comment":{"href":"https://api.github.com/repos/eclipse/omr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eclipse/omr/pulls/3126/commits"},"statuses":{"href":"https://api.github.com/repos/eclipse/omr/statuses/4f2c10ed6da3e8fb909249e8096e4f6feb853275"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"fjeremic"}}