{"action":"created","issue":{"url":"https://api.github.com/repos/WebAssembly/binaryen/issues/333","repository_url":"https://api.github.com/repos/WebAssembly/binaryen","labels_url":"https://api.github.com/repos/WebAssembly/binaryen/issues/333/labels{/name}","comments_url":"https://api.github.com/repos/WebAssembly/binaryen/issues/333/comments","events_url":"https://api.github.com/repos/WebAssembly/binaryen/issues/333/events","html_url":"https://github.com/WebAssembly/binaryen/pull/333","id":147280782,"number":333,"title":"De-recurse traversals","user":{"login":"kripken","id":173661,"avatar_url":"https://avatars.githubusercontent.com/u/173661?v=3","gravatar_id":"","url":"https://api.github.com/users/kripken","html_url":"https://github.com/kripken","followers_url":"https://api.github.com/users/kripken/followers","following_url":"https://api.github.com/users/kripken/following{/other_user}","gists_url":"https://api.github.com/users/kripken/gists{/gist_id}","starred_url":"https://api.github.com/users/kripken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kripken/subscriptions","organizations_url":"https://api.github.com/users/kripken/orgs","repos_url":"https://api.github.com/users/kripken/repos","events_url":"https://api.github.com/users/kripken/events{/privacy}","received_events_url":"https://api.github.com/users/kripken/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2016-04-10T23:56:16Z","updated_at":"2016-04-11T20:39:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/WebAssembly/binaryen/pulls/333","html_url":"https://github.com/WebAssembly/binaryen/pull/333","diff_url":"https://github.com/WebAssembly/binaryen/pull/333.diff","patch_url":"https://github.com/WebAssembly/binaryen/pull/333.patch"},"body":"Followup for https://github.com/WebAssembly/binaryen/pull/319#issuecomment-207497139 where it was suggested to make traversal non-recursive.\r\n\r\nThis PR does that, however, it makes -O twice as slow as before :( Perhaps there are some obvious optimizations I'm missing?\r\n"},"comment":{"url":"https://api.github.com/repos/WebAssembly/binaryen/issues/comments/208551175","html_url":"https://github.com/WebAssembly/binaryen/pull/333#issuecomment-208551175","issue_url":"https://api.github.com/repos/WebAssembly/binaryen/issues/333","id":208551175,"user":{"login":"kripken","id":173661,"avatar_url":"https://avatars.githubusercontent.com/u/173661?v=3","gravatar_id":"","url":"https://api.github.com/users/kripken","html_url":"https://github.com/kripken","followers_url":"https://api.github.com/users/kripken/followers","following_url":"https://api.github.com/users/kripken/following{/other_user}","gists_url":"https://api.github.com/users/kripken/gists{/gist_id}","starred_url":"https://api.github.com/users/kripken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kripken/subscriptions","organizations_url":"https://api.github.com/users/kripken/orgs","repos_url":"https://api.github.com/users/kripken/repos","events_url":"https://api.github.com/users/kripken/events{/privacy}","received_events_url":"https://api.github.com/users/kripken/received_events","type":"User","site_admin":false},"created_at":"2016-04-11T20:39:48Z","updated_at":"2016-04-11T20:39:48Z","body":"I hope these optimizations live for a long time :) asm2wasm will only matter for the next year or so, and hopefully go away, so this is not just for that. In general I think we need good options for people that want to emit a simple IR and compile it to efficient wasm. LLVM can do that, of course, but it's overkill in terms of compile time and code size for many use cases, especially ones running on the client. My hope is binaryen and its optimizer provide a useful option in that space. I'm imagining that the input IR and output IR from this optimizer is the same - wasm - which should allow for especially high efficiency (no multiple IRs to mess with), and it makes sense since wasm is a pretty nice input IR (IMO), and it's our necessary output IR.\r\n\r\nOk, thanks for the review comments, merging this and we can look at those followups later.\r\n"}}