{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/70296189","id":70296189,"diff_hunk":"@@ -516,64 +487,450 @@ var_types    Compiler::argOrReturnTypeForStruct(unsigned size, CORINFO_CLASS_HAN\n     case 3:\n         useType = TYP_INT;\n         break;\n+\n #endif // _TARGET_XARCH_\n \n #ifdef _TARGET_64BIT_\n     case 4:\n-        useType = TYP_INT;\n+        if (IsHfa(clsHnd))\n+        {\n+            // structSize of 4 with IsHfa, we must have an HFA of one float\n+            useType = TYP_FLOAT;\n+        }\n+        else\n+        {\n+            useType = TYP_INT;\n+        }\n         break;\n-#endif // _TARGET_64BIT_\n \n-    // Pointer size\n-#ifdef _TARGET_64BIT_\n-#ifndef _TARGET_AMD64_\n+#ifndef _TARGET_XARCH_   \n     case 5:\n     case 6:\n     case 7:\n-#endif // _TARGET_AMD64_\n-    case 8:\n-#else // !_TARGET_64BIT_\n-    case 4:\n-#endif // !_TARGET_64BIT_\n-        info.compCompHnd->getClassGClayout(clsHnd, &gcPtr);\n-        useType = getJitGCType(gcPtr);\n+        useType = TYP_I_IMPL;\n+        break;\n+\n+#endif // _TARGET_XARCH_\n+#endif // _TARGET_64BIT_\n+\n+    case TARGET_POINTER_SIZE:\n+        if (IsHfa(clsHnd))\n+        {\n+#ifdef _TARGET_64BIT_\n+            var_types hfaType = GetHfaType(clsHnd);\n+            // Check and exclude the case of an HFA of two floats\n+            if (hfaType == TYP_DOUBLE)\n+            {\n+                // We have an HFA of one double\n+                useType = TYP_DOUBLE;\n+            }  \n+            else \n+            {\n+                assert(hfaType == TYP_FLOAT);\n+\n+                // We have an HFA of two floats\n+                // This should  be passed or returned in two FP registers\n+                useType = TYP_UNKNOWN;\n+            }\n+#else  // 32BIT\n+            // structSize of 4 with IsHfa, we must have an HFA of one float\n+            useType = TYP_FLOAT;\n+#endif\n+        }\n+        else\n+        {\n+            BYTE gcPtr = 0;\n+            // Check if this pointer-sized struct is wrapping a GC object\n+            info.compCompHnd->getClassGClayout(clsHnd, &gcPtr);\n+            useType = getJitGCType(gcPtr);\n+        }\n         break;\n \n     default:\n-#if FEATURE_MULTIREG_RET\n-        if (forReturn)\n+        useType = TYP_UNKNOWN;\n+        break;\n+    }\n+\n+    return useType;\n+}\n+\n+//-----------------------------------------------------------------------------\n+// getArgTypeForStruct: \n+//     Get the type that is used to pass values of the given struct type.\n+//     If you already have retrieved the struct size then it should be passed\n+//     as the third optional argument as it allows us to avoid an extra call\n+//     to getClassSize(clsHnd)\n+//\n+// Arguments:\n+//    clsHnd       - the handle for the struct type\n+//    wbPassStruct - information about how the struct is passed\n+//    structSize   - the size of the struct type, \n+//                   or 0 if we should to call getClassSize(clsHnd)\n+//\n+// Return Value:\n+//    When *wbPassStruct is SPK_PrimitiveType this method's return value:\n+//       is the primitive type used to pass the struct.\n+//    When *wbPassStruct is SPK_ByReference this method's return value:\n+//       is TYP_UNKNOWN and the struct type is passed by reference to a copy\n+//    When *wbPassStruct is SPK_ByValue or SPK_ByValueAsHfa the return value:\n+//       can be TYP_STRUCT and the struct type is passed using multiple registers.\n+//       can be TYP_UNKNOWN and the struct type is passed by value (x86 and ARM32 only)\n+//\n+// Assumptions:\n+//    The size must be the size of the given type.\n+//    The given class handle must be for a value type (struct).\n+//\n+// Notes:\n+//    About returning TYP_STRUCT:\n+//        Whenever the return type is TYP_STRUCT it always means multiple registers\n+//         are used to pass this struct.\n+//    About HFA types:\n+//        When the clsHnd is a one element HFA type we return the appropriate\n+//         floating point primitive type and *wbPassStruct is SPK_PrimitiveType\n+//        If there are two or more elements in the HFA type then the return value \n+//         is TYP_STRUCT and *wbPassStruct is SPK_ByValueAsHfa\n+//\n+var_types  Compiler::getArgTypeForStruct(CORINFO_CLASS_HANDLE clsHnd,\n+                                         structPassingKind*   wbPassStruct,\n+                                         unsigned             structSize /* = 0 */)\n+{\n+    var_types useType = TYP_UNKNOWN;\n+    *wbPassStruct     = SPK_Unknown;   // We must change this before we can return\n+\n+    if (structSize == 0)\n+    {\n+        structSize = info.compCompHnd->getClassSize(clsHnd);\n+    }\n+    assert(structSize > 0);\n+\n+#ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING\n+\n+    // An 8-byte struct may need to be passed in a floating point register\n+    // So we always consult the struct \"Classifier\" routine\n+    //\n+    SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR structDesc;\n+    eeGetSystemVAmd64PassStructInRegisterDescriptor(clsHnd, &structDesc);\n+\n+    // If we have one eightByteCount then we can set 'useType' based on that\n+    if (structDesc.eightByteCount == 1)\n+    {\n+        // Set 'useType' to the type of the first eightbyte item\n+        useType = GetEightByteType(structDesc, 0);\n+    }\n+\n+#else // not UNIX_AMD64\n+\n+    // We set the \"primitive\" useType based upon the structSize\n+    // and also examine the clsHnd to see if it is an HFA of count one\n+    useType = getPrimitiveTypeForStruct(structSize, clsHnd);\n+\n+#endif // FEATURE_UNIX_AMD64_STRUCT_PASSING\n+\n+    // Did we change this struct type into a simple \"primitive\" type?\n+    //\n+    if (useType != TYP_UNKNOWN)\n+    {\n+        // Yes, we should use the \"primitive\" type in 'useType'\n+        *wbPassStruct = SPK_PrimitiveType;\n+    }\n+    else  // We can't replace the struct with a \"primitive\" type\n+    {\n+        // See if we can pass this struct by value, possibly in multiple registers\n+        // or if we should pass it by reference to a copy\n+        //\n+        if (structSize <= MAX_PASS_MULTIREG_BYTES)\n         {\n-            if (size <= MAX_RET_MULTIREG_BYTES)\n+            // Structs that are HFA's are passed by value in multiple registers\n+            if (IsHfa(clsHnd))\n             {\n-#ifdef _TARGET_ARM64_\n-                // TODO-ARM64-HFA - Implement x0,x1 returns   \n-                // TODO-ARM64     - Implement HFA returns   \n-#endif // _TARGET_XXX_\n+                // HFA's of count one should have been handled by getPrimitiveTypeForStruct\n+                assert(GetHfaCount(clsHnd) >= 2);\n+\n+                // setup wbPassType and useType indicate that this is passed by value as an HFA\n+                //  using multiple registers\n+                *wbPassStruct = SPK_ByValueAsHfa;\n+                useType = TYP_STRUCT;\n+            }\n+            else  // Not an HFA struct type\n+            {\n+\n+#ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING\n+\n+                // The case of (structDesc.eightByteCount == 1) should have already been handled\n+                if (structDesc.eightByteCount > 1)\n+                {\n+                    // setup wbPassType and useType indicate that this is passed by value in multiple registers\n+                    *wbPassStruct = SPK_ByValue;\n+                    useType = TYP_STRUCT;\n+                }\n+                else\n+                {\n+                    assert(structDesc.eightByteCount == 0);\n+                    // Otherwise we pass this struct by reference to a copy\n+                    // setup wbPassType and useType indicate that this is passed using one register\n+                    //  (by reference to a copy)\n+                    *wbPassStruct = SPK_ByReference;\n+                    useType = TYP_UNKNOWN;\n+                }\n+\n+#elif  defined(_TARGET_ARM64_)\n+\n+                // Structs that are pointer sized or smaller should have been handled by getPrimitiveTypeForStruct\n+                assert(structSize > TARGET_POINTER_SIZE);\n+\n+                // On ARM64 structs that are 9-16 bytes are passed by value in multiple registers\n+                //\n+                if (structSize <= (TARGET_POINTER_SIZE * 2))\n+                {\n+                    // setup wbPassType and useType indicate that this is passed by value in multiple registers\n+                    *wbPassStruct = SPK_ByValue;\n+                    useType = TYP_STRUCT;\n+                }\n+                else // a structSize that is 17-32 bytes in size\n+                {\n+                    // Otherwise we pass this struct by reference to a copy\n+                    // setup wbPassType and useType indicate that this is passed using one register\n+                    //  (by reference to a copy)\n+                    *wbPassStruct = SPK_ByReference;\n+                    useType = TYP_UNKNOWN;\n+                }\n+\n+#elif  defined(_TARGET_X86_) || defined(_TARGET_ARM_)\n+\n+                // Otherwise we pass this struct by value \n+                // setup wbPassType and useType indicate that this is passed by value according to the X86/ARM32 ABI\n+                *wbPassStruct = SPK_ByValue;\n+                useType = TYP_UNKNOWN;\n+\n+#else  //  _TARGET_XXX_\n+\n+                noway_assert(!\"Unhandled TARGET in getArgTypeForStruct (with FEATURE_MULTIREG_ARGS=1)\");\n+\n+#endif  //  _TARGET_XXX_\n+\n             }\n         }\n-#endif // FEATURE_MULTIREG_RET\n+        else  // (structSize > MAX_PASS_MULTIREG_BYTES)\n+        {\n+            // We have a (large) struct that can't be replaced with a \"primitive\" type\n+            // and can't be passed in multiple registers\n \n-#if FEATURE_MULTIREG_ARGS\n-        if (!forReturn)\n+#if defined(_TARGET_X86_) || defined(_TARGET_ARM_)\n+\n+            // Otherwise we pass this struct by value on the stack \n+            // setup wbPassType and useType indicate that this is passed by value according to the X86/ARM32 ABI\n+            *wbPassStruct = SPK_ByValue;\n+            useType = TYP_UNKNOWN;\n+\n+#elif defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_)\n+\n+            // Otherwise we pass this struct by reference to a copy\n+            // setup wbPassType and useType indicate that this is passed using one register (by reference to a copy)\n+            *wbPassStruct = SPK_ByReference;\n+            useType = TYP_UNKNOWN;\n+\n+#else  //  _TARGET_XXX_\n+\n+            noway_assert(!\"Unhandled TARGET in getArgTypeForStruct\");\n+\n+#endif  //  _TARGET_XXX_\n+\n+        }\n+    }\n+\n+    assert(*wbPassStruct != SPK_Unknown);  // This must get set to one of the valid values before we return\n+    return useType;\n+}\n+\n+//-----------------------------------------------------------------------------\n+// getReturnTypeForStruct: \n+//     Get the type that is used to return values of the given struct type.\n+//     If you already have retrieved the struct size then it should be passed\n+//     as the third optional argument as it allows us to avoid an extra call\n+//     to getClassSize(clsHnd)\n+//\n+// Arguments:\n+//    clsHnd         - the handle for the struct type\n+//    wbReturnStruct - information about how the struct is returned\n+//    structSize     - the size of the struct type, \n+//                     or 0 if we should to call getClassSize(clsHnd)\n+//\n+// Return Value:\n+//    When *wbReturnStruct is SPK_PrimitiveType this method's return value:\n+//       is the primitive type used to return the struct.\n+//    When *wbReturnStruct is SPK_ByReference this method's return value:\n+//       is TYP_UNKNOWN when the struct type is returned using a return buffer\n+//    When *wbReturnStruct is SPK_ByValue or SPK_ByValueAsHfa the return value:\n+//       is TYP_STRUCT when the struct type is returned using multiple registers.\n+//\n+// Assumptions:\n+//    The size must be the size of the given type.\n+//    The given class handle must be for a value type (struct).\n+//\n+// Notes:\n+//    About returning TYP_STRUCT:\n+//        Whenever the return type is TYP_STRUCT it always means multiple registers","path":"src/jit/compiler.cpp","position":195,"original_position":390,"commit_id":"3a0b626edf6490c4acf1e2d54b8021c605a33e06","original_commit_id":"3a0b626edf6490c4acf1e2d54b8021c605a33e06","user":{"login":"RussKeldorph","id":15160879,"avatar_url":"https://avatars.githubusercontent.com/u/15160879?v=3","gravatar_id":"","url":"https://api.github.com/users/RussKeldorph","html_url":"https://github.com/RussKeldorph","followers_url":"https://api.github.com/users/RussKeldorph/followers","following_url":"https://api.github.com/users/RussKeldorph/following{/other_user}","gists_url":"https://api.github.com/users/RussKeldorph/gists{/gist_id}","starred_url":"https://api.github.com/users/RussKeldorph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RussKeldorph/subscriptions","organizations_url":"https://api.github.com/users/RussKeldorph/orgs","repos_url":"https://api.github.com/users/RussKeldorph/repos","events_url":"https://api.github.com/users/RussKeldorph/events{/privacy}","received_events_url":"https://api.github.com/users/RussKeldorph/received_events","type":"User","site_admin":false},"body":"For consistency with surrounding comments, you should change \"return type\" to \"return value\" even though in some sense what you have now is valid.","created_at":"2016-07-11T17:01:37Z","updated_at":"2016-07-11T17:01:37Z","html_url":"https://github.com/dotnet/coreclr/pull/6198#discussion_r70296189","pull_request_url":"https://api.github.com/repos/dotnet/coreclr/pulls/6198","_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/70296189"},"html":{"href":"https://github.com/dotnet/coreclr/pull/6198#discussion_r70296189"},"pull_request":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/6198"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/6198","id":76826872,"html_url":"https://github.com/dotnet/coreclr/pull/6198","diff_url":"https://github.com/dotnet/coreclr/pull/6198.diff","patch_url":"https://github.com/dotnet/coreclr/pull/6198.patch","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/6198","number":6198,"state":"open","locked":false,"title":"Refactor and cleanup work for passing and returning struct types","user":{"login":"briansull","id":11621884,"avatar_url":"https://avatars.githubusercontent.com/u/11621884?v=3","gravatar_id":"","url":"https://api.github.com/users/briansull","html_url":"https://github.com/briansull","followers_url":"https://api.github.com/users/briansull/followers","following_url":"https://api.github.com/users/briansull/following{/other_user}","gists_url":"https://api.github.com/users/briansull/gists{/gist_id}","starred_url":"https://api.github.com/users/briansull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briansull/subscriptions","organizations_url":"https://api.github.com/users/briansull/orgs","repos_url":"https://api.github.com/users/briansull/repos","events_url":"https://api.github.com/users/briansull/events{/privacy}","received_events_url":"https://api.github.com/users/briansull/received_events","type":"User","site_admin":false},"body":"Replaces argOrReturnTypeForStruct with two new methods:\r\n  getArgTypeForStruct    - Provides information on how to pass a struct type\r\n  getReturnTypeForStruct - Provides information on how to return a struct type\r\n\r\nStruct can be passed or returned in the following different ways:\r\n    1. A struct type may be passed/returned as a primitive type when its size is small\r\n    2. A struct type may be passed/returned by reference to a copy\r\n    3. A struct type may be passed/returned by value using multiple registers\r\n    4. A struct type may be passed/returned by value using a copy on the stack","created_at":"2016-07-08T23:10:05Z","updated_at":"2016-07-11T17:01:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3accc53274a82da5aba6cd0ee966492f08367891","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/coreclr/pulls/6198/commits","review_comments_url":"https://api.github.com/repos/dotnet/coreclr/pulls/6198/comments","review_comment_url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/6198/comments","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/3a0b626edf6490c4acf1e2d54b8021c605a33e06","head":{"label":"briansull:multireg-refactor","ref":"multireg-refactor","sha":"3a0b626edf6490c4acf1e2d54b8021c605a33e06","user":{"login":"briansull","id":11621884,"avatar_url":"https://avatars.githubusercontent.com/u/11621884?v=3","gravatar_id":"","url":"https://api.github.com/users/briansull","html_url":"https://github.com/briansull","followers_url":"https://api.github.com/users/briansull/followers","following_url":"https://api.github.com/users/briansull/following{/other_user}","gists_url":"https://api.github.com/users/briansull/gists{/gist_id}","starred_url":"https://api.github.com/users/briansull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briansull/subscriptions","organizations_url":"https://api.github.com/users/briansull/orgs","repos_url":"https://api.github.com/users/briansull/repos","events_url":"https://api.github.com/users/briansull/events{/privacy}","received_events_url":"https://api.github.com/users/briansull/received_events","type":"User","site_admin":false},"repo":{"id":32836344,"name":"coreclr","full_name":"briansull/coreclr","owner":{"login":"briansull","id":11621884,"avatar_url":"https://avatars.githubusercontent.com/u/11621884?v=3","gravatar_id":"","url":"https://api.github.com/users/briansull","html_url":"https://github.com/briansull","followers_url":"https://api.github.com/users/briansull/followers","following_url":"https://api.github.com/users/briansull/following{/other_user}","gists_url":"https://api.github.com/users/briansull/gists{/gist_id}","starred_url":"https://api.github.com/users/briansull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briansull/subscriptions","organizations_url":"https://api.github.com/users/briansull/orgs","repos_url":"https://api.github.com/users/briansull/repos","events_url":"https://api.github.com/users/briansull/events{/privacy}","received_events_url":"https://api.github.com/users/briansull/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/briansull/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR, and the base library, called mscorlib. It includes the garbage collector, JIT compiler, base .NET data types and many low-level classes.","fork":true,"url":"https://api.github.com/repos/briansull/coreclr","forks_url":"https://api.github.com/repos/briansull/coreclr/forks","keys_url":"https://api.github.com/repos/briansull/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/briansull/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/briansull/coreclr/teams","hooks_url":"https://api.github.com/repos/briansull/coreclr/hooks","issue_events_url":"https://api.github.com/repos/briansull/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/briansull/coreclr/events","assignees_url":"https://api.github.com/repos/briansull/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/briansull/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/briansull/coreclr/tags","blobs_url":"https://api.github.com/repos/briansull/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/briansull/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/briansull/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/briansull/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/briansull/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/briansull/coreclr/languages","stargazers_url":"https://api.github.com/repos/briansull/coreclr/stargazers","contributors_url":"https://api.github.com/repos/briansull/coreclr/contributors","subscribers_url":"https://api.github.com/repos/briansull/coreclr/subscribers","subscription_url":"https://api.github.com/repos/briansull/coreclr/subscription","commits_url":"https://api.github.com/repos/briansull/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/briansull/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/briansull/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/briansull/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/briansull/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/briansull/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/briansull/coreclr/merges","archive_url":"https://api.github.com/repos/briansull/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/briansull/coreclr/downloads","issues_url":"https://api.github.com/repos/briansull/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/briansull/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/briansull/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/briansull/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/briansull/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/briansull/coreclr/releases{/id}","deployments_url":"https://api.github.com/repos/briansull/coreclr/deployments","created_at":"2015-03-25T01:52:49Z","updated_at":"2016-01-12T22:16:55Z","pushed_at":"2016-07-09T01:12:09Z","git_url":"git://github.com/briansull/coreclr.git","ssh_url":"git@github.com:briansull/coreclr.git","clone_url":"https://github.com/briansull/coreclr.git","svn_url":"https://github.com/briansull/coreclr","homepage":"","size":91479,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"57b3450f4d232cd53d3b9a0f6566806d73fa4156","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":30092893,"name":"coreclr","full_name":"dotnet/coreclr","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR, and the base library, called mscorlib. It includes the garbage collector, JIT compiler, base .NET data types and many low-level classes.","fork":false,"url":"https://api.github.com/repos/dotnet/coreclr","forks_url":"https://api.github.com/repos/dotnet/coreclr/forks","keys_url":"https://api.github.com/repos/dotnet/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/coreclr/teams","hooks_url":"https://api.github.com/repos/dotnet/coreclr/hooks","issue_events_url":"https://api.github.com/repos/dotnet/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/coreclr/events","assignees_url":"https://api.github.com/repos/dotnet/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/coreclr/tags","blobs_url":"https://api.github.com/repos/dotnet/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/coreclr/languages","stargazers_url":"https://api.github.com/repos/dotnet/coreclr/stargazers","contributors_url":"https://api.github.com/repos/dotnet/coreclr/contributors","subscribers_url":"https://api.github.com/repos/dotnet/coreclr/subscribers","subscription_url":"https://api.github.com/repos/dotnet/coreclr/subscription","commits_url":"https://api.github.com/repos/dotnet/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/coreclr/merges","archive_url":"https://api.github.com/repos/dotnet/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/coreclr/downloads","issues_url":"https://api.github.com/repos/dotnet/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/coreclr/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/coreclr/deployments","created_at":"2015-01-30T22:10:02Z","updated_at":"2016-07-11T13:32:49Z","pushed_at":"2016-07-11T14:47:09Z","git_url":"git://github.com/dotnet/coreclr.git","ssh_url":"git@github.com:dotnet/coreclr.git","clone_url":"https://github.com/dotnet/coreclr.git","svn_url":"https://github.com/dotnet/coreclr","homepage":"https://dotnet.github.io/","size":100092,"stargazers_count":6668,"watchers_count":6668,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1540,"mirror_url":null,"open_issues_count":885,"forks":1540,"open_issues":885,"watchers":6668,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/6198"},"html":{"href":"https://github.com/dotnet/coreclr/pull/6198"},"issue":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/6198"},"comments":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/6198/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/6198/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/6198/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/coreclr/statuses/3a0b626edf6490c4acf1e2d54b8021c605a33e06"}}}}
{"actor":{"display_login":"RussKeldorph"}}