{"action":"created","issue":{"url":"https://api.github.com/repos/WilliamLCobb/iNDS/issues/44","repository_url":"https://api.github.com/repos/WilliamLCobb/iNDS","labels_url":"https://api.github.com/repos/WilliamLCobb/iNDS/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/WilliamLCobb/iNDS/issues/44/comments","events_url":"https://api.github.com/repos/WilliamLCobb/iNDS/issues/44/events","html_url":"https://github.com/WilliamLCobb/iNDS/issues/44","id":124578351,"number":44,"title":"Current State of JIT","user":{"login":"WilliamLCobb","id":870904,"avatar_url":"https://avatars.githubusercontent.com/u/870904?v=3","gravatar_id":"","url":"https://api.github.com/users/WilliamLCobb","html_url":"https://github.com/WilliamLCobb","followers_url":"https://api.github.com/users/WilliamLCobb/followers","following_url":"https://api.github.com/users/WilliamLCobb/following{/other_user}","gists_url":"https://api.github.com/users/WilliamLCobb/gists{/gist_id}","starred_url":"https://api.github.com/users/WilliamLCobb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WilliamLCobb/subscriptions","organizations_url":"https://api.github.com/users/WilliamLCobb/orgs","repos_url":"https://api.github.com/users/WilliamLCobb/repos","events_url":"https://api.github.com/users/WilliamLCobb/events{/privacy}","received_events_url":"https://api.github.com/users/WilliamLCobb/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":72,"created_at":"2016-01-02T06:47:57Z","updated_at":"2016-05-19T00:48:40Z","closed_at":null,"body":"In order to keep this organized, I'll update this comment with any progress on JIT.\r\n\r\nSo far JIT code is successfully compiled and running on iOS 8.3 on a 32bit processor. I'm sure iOS 9 on a 32 bit processor would also work fine, I just don't want to upgrade my iPad to test it. Inside armInnerLoop(), JIT code will run anywhere from 1 to 100 time before it crashes. The function where JIT execution is compiled and then run is cpuExecuteLJIT() inside ArmLJit.cpp.\r\n\r\nThe main problem we're facing is the code in the JIT block branches to many other functions inside ArmLJit.cpp. These functions then push the callee registers r4-r8. Oddly, these callee saved registers are not pushed back onto the stack before returning to the JIT block as they should be. This causes bad access errors and the crashing we currently see.\r\n\r\nInterestingly, the current implementation runs the same without root privileges and will probably run on non jailbroken phones."},"comment":{"url":"https://api.github.com/repos/WilliamLCobb/iNDS/issues/comments/220199385","html_url":"https://github.com/WilliamLCobb/iNDS/issues/44#issuecomment-220199385","issue_url":"https://api.github.com/repos/WilliamLCobb/iNDS/issues/44","id":220199385,"user":{"login":"Anuskuss","id":7157389,"avatar_url":"https://avatars.githubusercontent.com/u/7157389?v=3","gravatar_id":"","url":"https://api.github.com/users/Anuskuss","html_url":"https://github.com/Anuskuss","followers_url":"https://api.github.com/users/Anuskuss/followers","following_url":"https://api.github.com/users/Anuskuss/following{/other_user}","gists_url":"https://api.github.com/users/Anuskuss/gists{/gist_id}","starred_url":"https://api.github.com/users/Anuskuss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Anuskuss/subscriptions","organizations_url":"https://api.github.com/users/Anuskuss/orgs","repos_url":"https://api.github.com/users/Anuskuss/repos","events_url":"https://api.github.com/users/Anuskuss/events{/privacy}","received_events_url":"https://api.github.com/users/Anuskuss/received_events","type":"User","site_admin":false},"created_at":"2016-05-19T00:48:40Z","updated_at":"2016-05-19T00:48:40Z","body":"Hey @WilliamLCobb, I know we need a better Renderer but have you looked at the (newly implemented) **IR Interpreter** (Intermediate Representation) from the PPSSPP team [[#8725](https://github.com/hrydgard/ppsspp/pull/8725)]?\r\n\r\n> **unknownbrackets**\r\nWe have recently implemented (mostly **@​hrydgard**) a new, experimental interpreter - it still doesn't use jit, but it pre-processes the MIPS code to generate something that is faster to interpret. In other words, it does the 25% of what jit does, the part that is allowed on Apple devices."}}