Skip to content

Commit 917fabf

Browse files
authored
Reduce interpreter recursion limit (#2162)
This should be small enough to work in a 512K stack on Linux, which may then be small enough to work on all common OSes. I had to update some spec tests which actually did more recursive calls, but I don't think the change reduces any relevant amount of test coverage. This may fix the Mac bot finally, as with this it passes for me on the stack size I think Macs have by default.
1 parent 14e0968 commit 917fabf

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

src/wasm-interpreter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ using namespace cashew;
4545

4646
extern Name WASM, RETURN_FLOW;
4747

48-
enum { maxInterpreterDepth = 250 };
48+
enum { maxInterpreterDepth = 50 };
4949

5050
// Stuff that flows around during executing expressions: a literal, or a change
5151
// in control flow.

test/spec/call.wast

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@
134134

135135
(assert_return (invoke "even" (i64.const 0)) (i32.const 44))
136136
(assert_return (invoke "even" (i64.const 1)) (i32.const 99))
137-
(assert_return (invoke "even" (i64.const 100)) (i32.const 44))
138-
(assert_return (invoke "even" (i64.const 77)) (i32.const 99))
137+
(assert_return (invoke "even" (i64.const 10)) (i32.const 44))
138+
(assert_return (invoke "even" (i64.const 7)) (i32.const 99))
139139
(assert_return (invoke "odd" (i64.const 0)) (i32.const 99))
140140
(assert_return (invoke "odd" (i64.const 1)) (i32.const 44))
141-
(assert_return (invoke "odd" (i64.const 200)) (i32.const 99))
142-
(assert_return (invoke "odd" (i64.const 77)) (i32.const 44))
141+
(assert_return (invoke "odd" (i64.const 20)) (i32.const 99))
142+
(assert_return (invoke "odd" (i64.const 7)) (i32.const 44))
143143

144144
(assert_trap (invoke "runaway") "call stack exhausted")
145145
(assert_trap (invoke "mutual-runaway") "call stack exhausted")

test/spec/call_indirect.wast

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,12 @@
212212

213213
(assert_return (invoke "even" (i32.const 0)) (i32.const 44))
214214
(assert_return (invoke "even" (i32.const 1)) (i32.const 99))
215-
(assert_return (invoke "even" (i32.const 100)) (i32.const 44))
216-
(assert_return (invoke "even" (i32.const 77)) (i32.const 99))
215+
(assert_return (invoke "even" (i32.const 10)) (i32.const 44))
216+
(assert_return (invoke "even" (i32.const 7)) (i32.const 99))
217217
(assert_return (invoke "odd" (i32.const 0)) (i32.const 99))
218218
(assert_return (invoke "odd" (i32.const 1)) (i32.const 44))
219-
(assert_return (invoke "odd" (i32.const 200)) (i32.const 99))
220-
(assert_return (invoke "odd" (i32.const 77)) (i32.const 44))
219+
(assert_return (invoke "odd" (i32.const 20)) (i32.const 99))
220+
(assert_return (invoke "odd" (i32.const 7)) (i32.const 44))
221221

222222
(assert_trap (invoke "runaway") "call stack exhausted")
223223
(assert_trap (invoke "mutual-runaway") "call stack exhausted")

0 commit comments

Comments
 (0)