diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1998-03-25 15:52:29 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1998-03-25 15:52:29 -0300 |
| commit | 2a2b64d6ac2ea7839dac41cc84be1c7a5a18bee7 (patch) | |
| tree | bbacd86c6e92e3614dcd48b54846de5f4252f137 | |
| parent | daa937c043bb0ddb5f4bfe676f8ff13825a99651 (diff) | |
| download | lua-2a2b64d6ac2ea7839dac41cc84be1c7a5a18bee7.tar.gz lua-2a2b64d6ac2ea7839dac41cc84be1c7a5a18bee7.tar.bz2 lua-2a2b64d6ac2ea7839dac41cc84be1c7a5a18bee7.zip | |
opcode "CLOSURE" gets the prototipe (instead of a previous pushconstant)
| -rw-r--r-- | lopcodes.h | 7 | ||||
| -rw-r--r-- | lua.stx | 6 | ||||
| -rw-r--r-- | lvm.c | 13 |
3 files changed, 13 insertions, 13 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lopcodes.h,v 1.16 1998/03/10 17:15:05 roberto Exp $ | 2 | ** $Id: lopcodes.h,v 1.16 1998/03/11 13:59:50 roberto Exp roberto $ |
| 3 | ** Opcodes for Lua virtual machine | 3 | ** Opcodes for Lua virtual machine |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -154,9 +154,8 @@ IFTUPJMPW,/* w x - (x!=nil)? PC-=w */ | |||
| 154 | IFFUPJMP,/* b x - (x==nil)? PC-=b */ | 154 | IFFUPJMP,/* b x - (x==nil)? PC-=b */ |
| 155 | IFFUPJMPW,/* w x - (x==nil)? PC-=w */ | 155 | IFFUPJMPW,/* w x - (x==nil)? PC-=w */ |
| 156 | 156 | ||
| 157 | CLOSURE,/* b proto v_b...v_1 c(proto) */ | 157 | CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */ |
| 158 | CLOSURE0,/* - proto c(proto) */ | 158 | CLOSUREW,/* w b v_b...v_1 closure(CNST[w], v_b...v_1) */ |
| 159 | CLOSURE1,/* - proto v_1 c(proto) */ | ||
| 160 | 159 | ||
| 161 | CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ | 160 | CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ |
| 162 | CALLFUNC0,/* b v_b...v_1 f - f(v1,...,v_b) */ | 161 | CALLFUNC0,/* b v_b...v_1 f - f(v1,...,v_b) */ |
| @@ -1,6 +1,6 @@ | |||
| 1 | %{ | 1 | %{ |
| 2 | /* | 2 | /* |
| 3 | ** $Id: lua.stx,v 1.34 1998/02/11 20:56:46 roberto Exp roberto $ | 3 | ** $Id: lua.stx,v 1.35 1998/03/09 21:49:52 roberto Exp roberto $ |
| 4 | ** Syntax analizer and code generator | 4 | ** Syntax analizer and code generator |
| 5 | ** See Copyright Notice in lua.h | 5 | ** See Copyright Notice in lua.h |
| 6 | */ | 6 | */ |
| @@ -554,8 +554,8 @@ static void func_onstack (TProtoFunc *f) | |||
| 554 | else { | 554 | else { |
| 555 | for (i=0; i<nupvalues; i++) | 555 | for (i=0; i<nupvalues; i++) |
| 556 | lua_pushvar((L->currState+1)->upvalues[i]); | 556 | lua_pushvar((L->currState+1)->upvalues[i]); |
| 557 | code_constant(c); | 557 | code_oparg(CLOSURE, 0, c, -nupvalues+1); |
| 558 | code_oparg(CLOSURE, 2, nupvalues, -nupvalues); | 558 | code_byte(nupvalues); |
| 559 | } | 559 | } |
| 560 | } | 560 | } |
| 561 | 561 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lvm.c,v 1.25 1998/03/09 21:49:52 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 1.26 1998/03/11 13:59:50 roberto Exp roberto $ |
| 3 | ** Lua virtual machine | 3 | ** Lua virtual machine |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -680,13 +680,14 @@ StkId luaV_execute (Closure *cl, TProtoFunc *tf, StkId base) | |||
| 680 | if (ttype(--S->top) == LUA_T_NIL) pc -= aux; | 680 | if (ttype(--S->top) == LUA_T_NIL) pc -= aux; |
| 681 | break; | 681 | break; |
| 682 | 682 | ||
| 683 | case CLOSURE: | 683 | case CLOSUREW: |
| 684 | aux = *pc++; goto closure; | 684 | aux = next_word(pc); goto closure; |
| 685 | 685 | ||
| 686 | case CLOSURE0: case CLOSURE1: | 686 | case CLOSURE: |
| 687 | aux -= CLOSURE0; | 687 | aux = *pc++; |
| 688 | closure: | 688 | closure: |
| 689 | luaV_closure(aux); | 689 | *S->top++ = consts[aux]; |
| 690 | luaV_closure(*pc++); | ||
| 690 | luaC_checkGC(); | 691 | luaC_checkGC(); |
| 691 | break; | 692 | break; |
| 692 | 693 | ||
