{"action":"closed","issue":{"url":"https://api.github.com/repos/robovm/robovm/issues/742","labels_url":"https://api.github.com/repos/robovm/robovm/issues/742/labels{/name}","comments_url":"https://api.github.com/repos/robovm/robovm/issues/742/comments","events_url":"https://api.github.com/repos/robovm/robovm/issues/742/events","html_url":"https://github.com/robovm/robovm/issues/742","id":56667943,"number":742,"title":"@ByVal CGAffineTransform isn't passed correctly on ARM64","user":{"login":"ntherning","id":135765,"avatar_url":"https://avatars.githubusercontent.com/u/135765?v=3","gravatar_id":"","url":"https://api.github.com/users/ntherning","html_url":"https://github.com/ntherning","followers_url":"https://api.github.com/users/ntherning/followers","following_url":"https://api.github.com/users/ntherning/following{/other_user}","gists_url":"https://api.github.com/users/ntherning/gists{/gist_id}","starred_url":"https://api.github.com/users/ntherning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ntherning/subscriptions","organizations_url":"https://api.github.com/users/ntherning/orgs","repos_url":"https://api.github.com/users/ntherning/repos","events_url":"https://api.github.com/users/ntherning/events{/privacy}","received_events_url":"https://api.github.com/users/ntherning/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/robovm/robovm/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/robovm/robovm/labels/high","name":"high","color":"009800"}],"state":"closed","locked":false,"assignee":{"login":"ntherning","id":135765,"avatar_url":"https://avatars.githubusercontent.com/u/135765?v=3","gravatar_id":"","url":"https://api.github.com/users/ntherning","html_url":"https://github.com/ntherning","followers_url":"https://api.github.com/users/ntherning/followers","following_url":"https://api.github.com/users/ntherning/following{/other_user}","gists_url":"https://api.github.com/users/ntherning/gists{/gist_id}","starred_url":"https://api.github.com/users/ntherning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ntherning/subscriptions","organizations_url":"https://api.github.com/users/ntherning/orgs","repos_url":"https://api.github.com/users/ntherning/repos","events_url":"https://api.github.com/users/ntherning/events{/privacy}","received_events_url":"https://api.github.com/users/ntherning/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/robovm/robovm/milestones/6","labels_url":"https://api.github.com/repos/robovm/robovm/milestones/6/labels","id":968674,"number":6,"title":"1.0 beta 04","description":"","creator":{"login":"ntherning","id":135765,"avatar_url":"https://avatars.githubusercontent.com/u/135765?v=3","gravatar_id":"","url":"https://api.github.com/users/ntherning","html_url":"https://github.com/ntherning","followers_url":"https://api.github.com/users/ntherning/followers","following_url":"https://api.github.com/users/ntherning/following{/other_user}","gists_url":"https://api.github.com/users/ntherning/gists{/gist_id}","starred_url":"https://api.github.com/users/ntherning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ntherning/subscriptions","organizations_url":"https://api.github.com/users/ntherning/orgs","repos_url":"https://api.github.com/users/ntherning/repos","events_url":"https://api.github.com/users/ntherning/events{/privacy}","received_events_url":"https://api.github.com/users/ntherning/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":8,"state":"open","created_at":"2015-02-06T12:46:49Z","updated_at":"2015-02-11T21:10:32Z","due_on":"2015-02-12T23:00:00Z","closed_at":null},"comments":3,"created_at":"2015-02-05T13:09:12Z","updated_at":"2015-02-11T21:10:32Z","closed_at":"2015-02-11T21:10:32Z","body":"Here's my test code:\r\n\r\n```java\r\n    public static void main(String args[]) throws Exception {\r\n        CGPoint p = new CGPoint(10, 20);\r\n        System.out.println(p.toString());\r\n\r\n        CGRect r = new CGRect(10, 20, 30, 40);\r\n        System.out.println(r.toString());\r\n\r\n        CGAffineTransform t = new CGAffineTransform(0, -1.0, 1.0, 0, 0, 0);\r\n        System.out.println(t.toString());\r\n    }\r\n```\r\n\r\nThe `CGPoint` and `CGRect` objects can be converted to strings without problem. The `CGAffineTransform.toString()` method crashes on ARM64. Looking at what clang produces for C functions which take `CGAffineTransform` by value on ARM64 it is large enough to be copied to memory and passed as a pointer. We don't do that currently. Using `byval` in the bitcode we produce doesn't help. Looks like we need to do the copy ourselves on ARM64 and pass the pointer."}}