{"action":"created","issue":{"url":"https://api.github.com/repos/ethereum/go-ethereum/issues/1883","labels_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/1883/labels{/name}","comments_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/1883/comments","events_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/1883/events","html_url":"https://github.com/ethereum/go-ethereum/pull/1883","id":110107714,"number":1883,"title":"core/vm: JIT segmentation","user":{"login":"obscuren","id":6264126,"avatar_url":"https://avatars.githubusercontent.com/u/6264126?v=3","gravatar_id":"","url":"https://api.github.com/users/obscuren","html_url":"https://github.com/obscuren","followers_url":"https://api.github.com/users/obscuren/followers","following_url":"https://api.github.com/users/obscuren/following{/other_user}","gists_url":"https://api.github.com/users/obscuren/gists{/gist_id}","starred_url":"https://api.github.com/users/obscuren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obscuren/subscriptions","organizations_url":"https://api.github.com/users/obscuren/orgs","repos_url":"https://api.github.com/users/obscuren/repos","events_url":"https://api.github.com/users/obscuren/events{/privacy}","received_events_url":"https://api.github.com/users/obscuren/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ethereum/go-ethereum/labels/core","name":"core","color":"fbca04"},{"url":"https://api.github.com/repos/ethereum/go-ethereum/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/ethereum/go-ethereum/labels/review","name":"review","color":"fad8c7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-10-06T21:45:12Z","updated_at":"2015-10-07T09:00:44Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ethereum/go-ethereum/pulls/1883","html_url":"https://github.com/ethereum/go-ethereum/pull/1883","diff_url":"https://github.com/ethereum/go-ethereum/pull/1883.diff","patch_url":"https://github.com/ethereum/go-ethereum/pull/1883.patch"},"body":"This PR adds JIT optimisations through segmentation and pre calculating segmentation gas chunks. \r\n\r\nCurrently implements:\r\n* multi-pushes (`PUSH 0x1 PUSH 0x1 ...`)\r\n* static jumps (` PUSH 0x1 JUMP`)\r\n\r\nThis PR also changes how the JIT executes instructions.  Previously the JIT was responsible for figuring out how an instruction needed to be executed. This has changed to a generic model where the JIT calls the `type programInstruction interface { ... }` which puts the program instruction in charge of the implementation specific details such as incrementing the `pc`, executing the instruction functions, stack validations, etc. This generic model helps when adding segments because it requires control over the order in which the JIT executes instructions."},"comment":{"url":"https://api.github.com/repos/ethereum/go-ethereum/issues/comments/146123113","html_url":"https://github.com/ethereum/go-ethereum/pull/1883#issuecomment-146123113","issue_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/1883","id":146123113,"user":{"login":"obscuren","id":6264126,"avatar_url":"https://avatars.githubusercontent.com/u/6264126?v=3","gravatar_id":"","url":"https://api.github.com/users/obscuren","html_url":"https://github.com/obscuren","followers_url":"https://api.github.com/users/obscuren/followers","following_url":"https://api.github.com/users/obscuren/following{/other_user}","gists_url":"https://api.github.com/users/obscuren/gists{/gist_id}","starred_url":"https://api.github.com/users/obscuren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obscuren/subscriptions","organizations_url":"https://api.github.com/users/obscuren/orgs","repos_url":"https://api.github.com/users/obscuren/repos","events_url":"https://api.github.com/users/obscuren/events{/privacy}","received_events_url":"https://api.github.com/users/obscuren/received_events","type":"User","site_admin":false},"created_at":"2015-10-07T09:00:44Z","updated_at":"2015-10-07T09:00:44Z","body":"Some early review requested"}}