From da2d881d3fe4bda68a71c690e2ede3b41d0ce165 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 4 Feb 2016 16:16:57 -0800 Subject: [PATCH 1/3] wasm spec has put the select condition last --- src/wasm-interpreter.h | 6 +++--- src/wasm-s-parser.h | 6 +++--- src/wasm.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index 022dd04bc4f..3f9427ed7dd 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -620,13 +620,13 @@ class ModuleInstance { } Flow visitSelect(Select *curr) { NOTE_ENTER("Select"); - Flow condition = visit(curr->condition); - if (condition.breaking()) return condition; - NOTE_EVAL1(condition.value); Flow ifTrue = visit(curr->ifTrue); if (ifTrue.breaking()) return ifTrue; Flow ifFalse = visit(curr->ifFalse); if (ifFalse.breaking()) return ifFalse; + Flow condition = visit(curr->condition); + if (condition.breaking()) return condition; + NOTE_EVAL1(condition.value); return condition.value.geti32() ? ifTrue : ifFalse; // ;-) } Flow visitReturn(Return *curr) { diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h index 1c704ac7425..fd10dc36e93 100644 --- a/src/wasm-s-parser.h +++ b/src/wasm-s-parser.h @@ -630,9 +630,9 @@ class SExpressionWasmBuilder { Expression* makeSelect(Element& s, WasmType type) { auto ret = allocator.alloc