| Index: src/wasm/function-body-decoder.cc
|
| diff --git a/src/wasm/function-body-decoder.cc b/src/wasm/function-body-decoder.cc
|
| index b50d97eb3d01602dfa4d73ab31da186f755db5b1..152fba1ffe92a42b9cd27c05f1180134cde89ef9 100644
|
| --- a/src/wasm/function-body-decoder.cc
|
| +++ b/src/wasm/function-body-decoder.cc
|
| @@ -39,8 +39,6 @@ namespace wasm {
|
| error("Invalid opcode (enable with --" #flag ")"); \
|
| break; \
|
| }
|
| -// TODO(titzer): this is only for intermediate migration.
|
| -#define IMPLICIT_FUNCTION_END 1
|
|
|
| // An SsaEnv environment carries the current local variable renaming
|
| // as well as the current effect and control dependency in the TF graph.
|
| @@ -493,41 +491,14 @@ class WasmFullDecoder : public WasmDecoder {
|
|
|
| if (failed()) return TraceFailed();
|
|
|
| -#if IMPLICIT_FUNCTION_END
|
| - // With implicit end support (old style), the function block
|
| - // remains on the stack. Other control blocks are an error.
|
| - if (control_.size() > 1) {
|
| - error(pc_, control_.back().pc, "unterminated control structure");
|
| - return TraceFailed();
|
| - }
|
| -
|
| - // Assume an implicit end to the function body block.
|
| - if (control_.size() == 1) {
|
| - Control* c = &control_.back();
|
| - if (ssa_env_->go()) {
|
| - FallThruTo(c);
|
| - }
|
| -
|
| - if (c->end_env->go()) {
|
| - // Push the end values onto the stack.
|
| - stack_.resize(c->stack_depth);
|
| - if (c->merge.arity == 1) {
|
| - stack_.push_back(c->merge.vals.first);
|
| - } else {
|
| - for (unsigned i = 0; i < c->merge.arity; i++) {
|
| - stack_.push_back(c->merge.vals.array[i]);
|
| - }
|
| - }
|
| -
|
| - TRACE(" @%-8d #xx:%-20s|", startrel(pc_), "ImplicitReturn");
|
| - SetEnv("function:end", c->end_env);
|
| - DoReturn();
|
| - TRACE("\n");
|
| - }
|
| - }
|
| -#else
|
| if (!control_.empty()) {
|
| - error(pc_, control_.back().pc, "unterminated control structure");
|
| + // Generate a better error message whether the unterminated control
|
| + // structure is the function body block or an innner structure.
|
| + if (control_.size() > 1) {
|
| + error(pc_, control_.back().pc, "unterminated control structure");
|
| + } else {
|
| + error("function body must end with \"end\" opcode.");
|
| + }
|
| return TraceFailed();
|
| }
|
|
|
| @@ -535,7 +506,6 @@ class WasmFullDecoder : public WasmDecoder {
|
| error("function body must end with \"end\" opcode.");
|
| return false;
|
| }
|
| -#endif
|
|
|
| if (FLAG_trace_wasm_decode_time) {
|
| double ms = decode_timer.Elapsed().InMillisecondsF();
|
|
|