diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-01-18 14:24:31 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-01-18 14:24:31 -0200 |
commit | 28f215ecf8b8d987f0bf64f3154b0e2fbc5e5168 (patch) | |
tree | 914cb9026d0aaff827d2bf00aed98ec9f71d8e6a /lcode.c | |
parent | d2fb34ac8865b2a7ec944a449d90145739030a98 (diff) | |
download | lua-28f215ecf8b8d987f0bf64f3154b0e2fbc5e5168.tar.gz lua-28f215ecf8b8d987f0bf64f3154b0e2fbc5e5168.tar.bz2 lua-28f215ecf8b8d987f0bf64f3154b0e2fbc5e5168.zip |
comments
Diffstat (limited to 'lcode.c')
-rw-r--r-- | lcode.c | 24 |
1 files changed, 13 insertions, 11 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lcode.c,v 2.149 2018/01/09 11:21:41 roberto Exp $ | 2 | ** $Id: lcode.c,v 2.149 2018/01/09 11:24:12 roberto Exp roberto $ |
3 | ** Code generator for Lua | 3 | ** Code generator for Lua |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -656,6 +656,7 @@ void luaK_setoneret (FuncState *fs, expdesc *e) { | |||
656 | 656 | ||
657 | /* | 657 | /* |
658 | ** Ensure that expression 'e' is not a variable. | 658 | ** Ensure that expression 'e' is not a variable. |
659 | ** (Expression still may have jump lists.) | ||
659 | */ | 660 | */ |
660 | void luaK_dischargevars (FuncState *fs, expdesc *e) { | 661 | void luaK_dischargevars (FuncState *fs, expdesc *e) { |
661 | switch (e->k) { | 662 | switch (e->k) { |
@@ -703,6 +704,7 @@ void luaK_dischargevars (FuncState *fs, expdesc *e) { | |||
703 | /* | 704 | /* |
704 | ** Ensures expression value is in register 'reg' (and therefore | 705 | ** Ensures expression value is in register 'reg' (and therefore |
705 | ** 'e' will become a non-relocatable expression). | 706 | ** 'e' will become a non-relocatable expression). |
707 | ** (Expression still may have jump lists.) | ||
706 | */ | 708 | */ |
707 | static void discharge2reg (FuncState *fs, expdesc *e, int reg) { | 709 | static void discharge2reg (FuncState *fs, expdesc *e, int reg) { |
708 | luaK_dischargevars(fs, e); | 710 | luaK_dischargevars(fs, e); |
@@ -749,6 +751,7 @@ static void discharge2reg (FuncState *fs, expdesc *e, int reg) { | |||
749 | 751 | ||
750 | /* | 752 | /* |
751 | ** Ensures expression value is in any register. | 753 | ** Ensures expression value is in any register. |
754 | ** (Expression still may have jump lists.) | ||
752 | */ | 755 | */ |
753 | static void discharge2anyreg (FuncState *fs, expdesc *e) { | 756 | static void discharge2anyreg (FuncState *fs, expdesc *e) { |
754 | if (e->k != VNONRELOC) { /* no fixed register yet? */ | 757 | if (e->k != VNONRELOC) { /* no fixed register yet? */ |
@@ -778,8 +781,8 @@ static int need_value (FuncState *fs, int list) { | |||
778 | 781 | ||
779 | 782 | ||
780 | /* | 783 | /* |
781 | ** Ensures final expression result (including results from its jump | 784 | ** Ensures final expression result (which includes results from its |
782 | ** lists) is in register 'reg'. | 785 | ** jump ** lists) is in register 'reg'. |
783 | ** If expression has jumps, need to patch these jumps either to | 786 | ** If expression has jumps, need to patch these jumps either to |
784 | ** its final position or to "load" instructions (for those tests | 787 | ** its final position or to "load" instructions (for those tests |
785 | ** that do not produce values). | 788 | ** that do not produce values). |
@@ -809,8 +812,7 @@ static void exp2reg (FuncState *fs, expdesc *e, int reg) { | |||
809 | 812 | ||
810 | 813 | ||
811 | /* | 814 | /* |
812 | ** Ensures final expression result (including results from its jump | 815 | ** Ensures final expression result is in next available register. |
813 | ** lists) is in next available register. | ||
814 | */ | 816 | */ |
815 | void luaK_exp2nextreg (FuncState *fs, expdesc *e) { | 817 | void luaK_exp2nextreg (FuncState *fs, expdesc *e) { |
816 | luaK_dischargevars(fs, e); | 818 | luaK_dischargevars(fs, e); |
@@ -821,8 +823,8 @@ void luaK_exp2nextreg (FuncState *fs, expdesc *e) { | |||
821 | 823 | ||
822 | 824 | ||
823 | /* | 825 | /* |
824 | ** Ensures final expression result (including results from its jump | 826 | ** Ensures final expression result is in some (any) register |
825 | ** lists) is in some (any) register and return that register. | 827 | ** and return that register. |
826 | */ | 828 | */ |
827 | int luaK_exp2anyreg (FuncState *fs, expdesc *e) { | 829 | int luaK_exp2anyreg (FuncState *fs, expdesc *e) { |
828 | luaK_dischargevars(fs, e); | 830 | luaK_dischargevars(fs, e); |
@@ -840,8 +842,8 @@ int luaK_exp2anyreg (FuncState *fs, expdesc *e) { | |||
840 | 842 | ||
841 | 843 | ||
842 | /* | 844 | /* |
843 | ** Ensures final expression result is either in a register or in an | 845 | ** Ensures final expression result is either in a register |
844 | ** upvalue. | 846 | ** or in an upvalue. |
845 | */ | 847 | */ |
846 | void luaK_exp2anyregup (FuncState *fs, expdesc *e) { | 848 | void luaK_exp2anyregup (FuncState *fs, expdesc *e) { |
847 | if (e->k != VUPVAL || hasjumps(e)) | 849 | if (e->k != VUPVAL || hasjumps(e)) |
@@ -850,8 +852,8 @@ void luaK_exp2anyregup (FuncState *fs, expdesc *e) { | |||
850 | 852 | ||
851 | 853 | ||
852 | /* | 854 | /* |
853 | ** Ensures final expression result is either in a register or it is | 855 | ** Ensures final expression result is either in a register |
854 | ** a constant. | 856 | ** or it is a constant. |
855 | */ | 857 | */ |
856 | void luaK_exp2val (FuncState *fs, expdesc *e) { | 858 | void luaK_exp2val (FuncState *fs, expdesc *e) { |
857 | if (hasjumps(e)) | 859 | if (hasjumps(e)) |