 Chromium Code Reviews
 Chromium Code Reviews Issue 2405293002:
  [wasm] Add stack checks to loops.  (Closed)
    
  
    Issue 2405293002:
  [wasm] Add stack checks to loops.  (Closed) 
  | Index: src/wasm/ast-decoder.cc | 
| diff --git a/src/wasm/ast-decoder.cc b/src/wasm/ast-decoder.cc | 
| index 025ccdf1d7bfc0d2c159e511600b0d313cf0fa9b..b47ab82ec122fc46d092eecc96e6fdb6db9ccf6e 100644 | 
| --- a/src/wasm/ast-decoder.cc | 
| +++ b/src/wasm/ast-decoder.cc | 
| @@ -685,7 +685,7 @@ class WasmFullDecoder : public WasmDecoder { | 
| SsaEnv* finish_try_env = Steal(ssa_env_); | 
| // The continue environment is the inner environment. | 
| PrepareForLoop(pc_, finish_try_env); | 
| 
titzer
2016/10/11 18:44:33
Can we make PrepareForLoop() return a new environm
 
ahaas
2016/10/12 18:03:58
Done.
 | 
| - SetEnv("loop:start", Split(finish_try_env)); | 
| + SetEnv("loop:start", SetLoopStackCheck(Split(finish_try_env))); | 
| ssa_env_->SetNotMerged(); | 
| PushLoop(finish_try_env); | 
| SetBlockType(&control_.back(), operand); | 
| @@ -1639,6 +1639,11 @@ class WasmFullDecoder : public WasmDecoder { | 
| } | 
| } | 
| + SsaEnv* SetLoopStackCheck(SsaEnv* env) { | 
| + builder_->StackCheck(position(), &(env->effect), &(env->control)); | 
| + return env; | 
| + } | 
| + | 
| // Create a complete copy of the {from}. | 
| SsaEnv* Split(SsaEnv* from) { | 
| DCHECK_NOT_NULL(from); |