From 1be96c05f60b5c3463c6a3546707fedf5c0306c4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 May 2015 12:55:08 -0700 Subject: relooper clarifications --- V1.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/V1.md b/V1.md index 1b65612..7e9db65 100644 --- a/V1.md +++ b/V1.md @@ -33,10 +33,15 @@ precise descriptions of: to asm.js. * Control flow is structured (no goto) * Simple and size-efficient binary encoding and compilation. - * Most (reducible) goto-based control flow can be transformed into structured control flow with a - [relooping](http://mozakai.blogspot.com/2012/05/reloop-all-blocks.html) algorithm. + * Any control flow - even irreducible - can be transformed into structured control flow with the + [Relooper](https://github.com/kripken/emscripten/raw/master/docs/paper.pdf) + [algorithm](http://dl.acm.org/citation.cfm?id=2048224&CFID=670868333&CFTOKEN=46181900), with + guaranteed low code size overhead, and typically minimal throughput overhead (except for + pathological cases of irreducible control flow). Alternative approaches can generate reducible + control flow via node splitting, which can reduce throughput overhead, at the cost of + increasing code size (potentially very significantly in pathological cases). * The [signature-restricted proper tail-call](https://github.com/WebAssembly/spec/blob/master/EssentialPostV1Features.md#signature-restricted-proper-tail-calls) - feature would allow efficient compilation of irreducible control flow. + feature would allow efficient compilation of arbitrary irreducible control flow. * See the [AST Semantics](AstSemantics.md) for descriptions of individual AST nodes. ## Binary format -- cgit v1.2.3