{"action":"closed","number":5543,"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/5543","id":72797130,"html_url":"https://github.com/dotnet/coreclr/pull/5543","diff_url":"https://github.com/dotnet/coreclr/pull/5543.diff","patch_url":"https://github.com/dotnet/coreclr/pull/5543.patch","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/5543","number":5543,"state":"closed","locked":false,"title":"ARM64: ABI - Support for using register x8 as the return buffer argument for structs","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":"This is feature complete and fixes #4949 but is being checked in disabled as it has dependencies\r\non some additional work in the VM #4950 (saving and restoring register x8 in thePrestub, etc..)\r\n\r\nIn target.h\r\nAdded defines on ARM64 for the additional argument register used to pass the return buffer\r\nIt is register x8 and when it exists is considered the 9th argument with an arg num index of 8 (zero based)\r\nAdded new method hasFixedRetBuffReg() that will return true on ARM64 (when this feature is enabled)\r\nAdded new method theFixedRetBuffReg() that returns register REG_R8 (x8) for ARM64\r\nAdded new method theFixedRetBuffArgNum that returns RET_BUFF_ARGNUM (8) for ARM64\r\nUpdated isValidIntArgReg to allow for a fixed return buff register\r\n\r\nIn codegencommon.cpp:\r\nIncrease the static size of regArgTab[] by one for the integer registers\r\nThis allows us to optionally support having a fixed return buffer registers\r\nWe now track the maximum index into regArgTab[] using argMax which is\r\neither the old value of  regState->rsCalleeRegArgCount or thefixedRetBufArgNum()\r\nCorrected the emitAttr size value for 64-bit targets to use EA_PTRSIZE instead of EA_4BYTE\r\n\r\nIn codegeninterface.cpp: (and other places)\r\nRenamed rsCalleeRegNum to be rsCalleeRegArgCount to better reflect what it represents\r\n\r\nIn compiler.hpp\r\nUpdated genMapIntRegArgNumToRegNum and genMapIntRegNumToRegArgNum to handle\r\nthe fixed return buffer register for ARM64\r\n\r\nIn lclvars.cpp\r\nUpdated lvaInitRetBuffArg to handle the fixed return buffer register for ARM64\r\n\r\nIn morph.cpp\r\nUpdated fgMorphArgs to properly handle the fixed return buffer register for ARM64\r\n\r\nIn regalloc.cpp\r\nUpdated the assert check raUpdateRegStateForArg to allow for the fixed return buffer register for ARM64","created_at":"2016-06-06T23:59:51Z","updated_at":"2016-06-07T15:20:43Z","closed_at":"2016-06-07T15:20:43Z","merged_at":null,"merge_commit_sha":"fb12da348b2f50adb13690afa917205b3b401811","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/coreclr/pulls/5543/commits","review_comments_url":"https://api.github.com/repos/dotnet/coreclr/pulls/5543/comments","review_comment_url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/5543/comments","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/c764e5b36cf84b2ecc25f5c4e0aa8b184a2b3eaf","head":{"label":"briansull:feature-x8-refbuf","ref":"feature-x8-refbuf","sha":"c764e5b36cf84b2ecc25f5c4e0aa8b184a2b3eaf","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-06-06T23:59:08Z","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":85573,"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":"3a4711b18816c4acd526d63cc1690a5f87dd58a9","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-06-07T09:46:17Z","pushed_at":"2016-06-07T14:10:35Z","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":"http://dotnet.github.io/","size":93036,"stargazers_count":6476,"watchers_count":6476,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1479,"mirror_url":null,"open_issues_count":813,"forks":1479,"open_issues":813,"watchers":6476,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/5543"},"html":{"href":"https://github.com/dotnet/coreclr/pull/5543"},"issue":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/5543"},"comments":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/5543/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/5543/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/5543/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/coreclr/statuses/c764e5b36cf84b2ecc25f5c4e0aa8b184a2b3eaf"}},"merged":false,"mergeable":true,"mergeable_state":"unstable","merged_by":null,"comments":5,"review_comments":0,"commits":1,"additions":221,"deletions":88,"changed_files":9}}
{"actor":{"display_login":"mmitche"}}