diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-22 22:08:22 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-22 22:08:22 +0300 |
commit | 9bf2c3a7bac4abe6c97af4efb2614575279e7b63 (patch) | |
tree | 5be2a4503d15d648557550491086515ea703e686 | |
parent | f57f0699d7193571233735ba691ba19fc072b7dc (diff) | |
download | egawk-9bf2c3a7bac4abe6c97af4efb2614575279e7b63.tar.gz egawk-9bf2c3a7bac4abe6c97af4efb2614575279e7b63.tar.bz2 egawk-9bf2c3a7bac4abe6c97af4efb2614575279e7b63.zip |
Make isarray also not scalarize untyped parameters.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | awkgram.c | 6 | ||||
-rw-r--r-- | awkgram.y | 6 | ||||
-rw-r--r-- | profile.c | 1 |
4 files changed, 9 insertions, 10 deletions
@@ -1,3 +1,9 @@ +2015-06-22 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (snode): Make isarray not scalarize untyped parameters + also. + * profile.c (pprint): Add Op_push_arg_untyped. + 2015-06-21 Arnold D. Robbins <arnold@skeeve.com> Fixes for typeof - Don't let typeof change an untyped variable @@ -6697,11 +6697,7 @@ snode(INSTRUCTION *subn, INSTRUCTION *r) if (arg->nexti == arg->lasti && arg->nexti->opcode == Op_push) arg->nexti->opcode = Op_push_arg; /* argument may be array */ } - } else if (r->builtin == do_isarray) { - arg = subn->nexti; - if (arg->nexti == arg->lasti && arg->nexti->opcode == Op_push) - arg->nexti->opcode = Op_push_arg; /* argument may be array */ - } else if (r->builtin == do_typeof) { + } else if (r->builtin == do_isarray || r->builtin == do_typeof) { arg = subn->nexti; if (arg->nexti == arg->lasti && arg->nexti->opcode == Op_push) arg->nexti->opcode = Op_push_arg_untyped; /* argument may be untyped */ @@ -4277,11 +4277,7 @@ snode(INSTRUCTION *subn, INSTRUCTION *r) if (arg->nexti == arg->lasti && arg->nexti->opcode == Op_push) arg->nexti->opcode = Op_push_arg; /* argument may be array */ } - } else if (r->builtin == do_isarray) { - arg = subn->nexti; - if (arg->nexti == arg->lasti && arg->nexti->opcode == Op_push) - arg->nexti->opcode = Op_push_arg; /* argument may be array */ - } else if (r->builtin == do_typeof) { + } else if (r->builtin == do_isarray || r->builtin == do_typeof) { arg = subn->nexti; if (arg->nexti == arg->lasti && arg->nexti->opcode == Op_push) arg->nexti->opcode = Op_push_arg_untyped; /* argument may be untyped */ @@ -317,6 +317,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, bool in_for_header) case Op_push_array: case Op_push: case Op_push_arg: + case Op_push_arg_untyped: m = pc->memory; switch (m->type) { case Node_param_list: |