diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-26 15:19:25 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-26 15:19:25 +0200 |
commit | fcf015508c98d16dd34d87e5df0538b44178143d (patch) | |
tree | f62ad2664952fff00686add4cbbf992a57995189 /src/bytecode/compiler.h | |
parent | 0285f462a0941c2c3b6e679eb239f1fe9cfa3b0e (diff) | |
download | bdl-fcf015508c98d16dd34d87e5df0538b44178143d.tar.gz bdl-fcf015508c98d16dd34d87e5df0538b44178143d.zip |
Checking n_args at runtime for OP_CALL
Diffstat (limited to 'src/bytecode/compiler.h')
-rwxr-xr-x | src/bytecode/compiler.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/bytecode/compiler.h b/src/bytecode/compiler.h index 44f03fc..995a5c1 100755 --- a/src/bytecode/compiler.h +++ b/src/bytecode/compiler.h | |||
@@ -350,8 +350,6 @@ compile_fun_op(Chunk *chunk, Compiler *compiler, Token start) { | |||
350 | 350 | ||
351 | void | 351 | void |
352 | compile_call_op(Chunk *chunk, Compiler *compiler, Token start, Token name) { | 352 | compile_call_op(Chunk *chunk, Compiler *compiler, Token start, Token name) { |
353 | // FIXME: skipping arguments for now. Assuming nil. | ||
354 | |||
355 | // Compile body. | 353 | // Compile body. |
356 | size_t n = 0; | 354 | size_t n = 0; |
357 | while (has_next_token(compiler)) { | 355 | while (has_next_token(compiler)) { |
@@ -370,12 +368,14 @@ compile_call_op(Chunk *chunk, Compiler *compiler, Token start, Token name) { | |||
370 | break; | 368 | break; |
371 | } | 369 | } |
372 | parse_tree(chunk, compiler); | 370 | parse_tree(chunk, compiler); |
371 | n++; | ||
373 | } | 372 | } |
374 | if (name.type == TOKEN_SYMBOL) { | 373 | if (name.type == TOKEN_SYMBOL) { |
375 | Object obj = make_symbol(name.value); | 374 | Object obj = make_symbol(name.value); |
376 | emit_constant(chunk, start, obj); | 375 | emit_constant(chunk, start, obj); |
377 | add_code(chunk, OP_GET, start.line, start.column); | 376 | add_code(chunk, OP_GET, start.line, start.column); |
378 | } | 377 | } |
378 | emit_constant(chunk, start, FIXNUM_VAL(n)); | ||
379 | add_code(chunk, OP_CALL, start.line, start.column); | 379 | add_code(chunk, OP_CALL, start.line, start.column); |
380 | } | 380 | } |
381 | 381 | ||