diff options
author | johnvg | 2002-10-21 12:53:11 +0000 |
---|---|---|
committer | johnvg | 2002-10-21 12:53:11 +0000 |
commit | 4b695b8117b314f573a06fa93c47fbcc5c003dcf (patch) | |
tree | fdb3062770576e23faf94d5a39730dc2fca51b12 /backendC/CleanCompilerSources/instructions.c | |
parent | add boxed records (diff) |
add new instructions for boxed records
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1253 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'backendC/CleanCompilerSources/instructions.c')
-rw-r--r-- | backendC/CleanCompilerSources/instructions.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/backendC/CleanCompilerSources/instructions.c b/backendC/CleanCompilerSources/instructions.c index e37f2a4..d6a53f3 100644 --- a/backendC/CleanCompilerSources/instructions.c +++ b/backendC/CleanCompilerSources/instructions.c @@ -259,6 +259,7 @@ static void TreatWaitListAfterFill (int offset, FillKind fkind) #define put_arguments_nnn_b(n1,n2,n3) FPrintF (OutFile,"%d %d %d",(n1),(n2),(n3)) #define put_arguments_nnnn_b(n1,n2,n3,n4) FPrintF (OutFile,"%d %d %d %d",(n1),(n2),(n3),(n4)) #define put_arguments_nnnnn_b(n1,n2,n3,n4,n5) FPrintF (OutFile,"%d %d %d %d %d",(n1),(n2),(n3),(n4),(n5)) +#define put_arguments_nnnnnnn_b(n1,n2,n3,n4,n5,n6,n7) FPrintF (OutFile,"%d %d %d %d %d %d %d",(n1),(n2),(n3),(n4),(n5),(n6),(n7)) #define put_arguments_n__b(n1) FPrintF (OutFile,"%d ",(n1)) #define put_arguments_nn__b(n1,n2) FPrintF (OutFile,"%d %d ",(n1),(n2)) #define put_arguments__n_b(n1) FPrintF (OutFile," %d",(n1)) @@ -568,6 +569,7 @@ enum { #define Ipush_r_args_u "push_r_args_u" #define Ipush_r_args_a "push_r_args_a" #define Ipush_r_args_b "push_r_args_b" +#define Ipush_r_arg_u "push_r_arg_u" #define Irepl_arg "repl_arg" #define Irepl_args "repl_args" #define Irepl_r_args "repl_r_args" @@ -583,6 +585,7 @@ enum { #define Ifillh "fillh" #define Ifill1 "fill1" #define Ifill2 "fill2" +#define Ifill3 "fill3" #define Ibuild "build" #define Ibuildh "buildh" @@ -1744,7 +1747,7 @@ void GenPushRArgsU (int offset,int n_a_args,int n_b_args) } } -void GenPushRArgA (int offset, int tot_nr_a_args, int tot_nr_b_args, int args_nr, int nr_a_args) +void GenPushRArgA (int offset,int tot_nr_a_args,int tot_nr_b_args,int args_nr,int nr_a_args) { if (nr_a_args > 0){ put_instruction_b (push_r_args_a); @@ -1752,7 +1755,7 @@ void GenPushRArgA (int offset, int tot_nr_a_args, int tot_nr_b_args, int args_nr } } -void GenPushRArgB (int offset, int tot_nr_a_args, int tot_nr_b_args, int args_nr, int nr_b_args) +void GenPushRArgB (int offset,int tot_nr_a_args,int tot_nr_b_args,int args_nr,int nr_b_args) { if (nr_b_args > 0){ put_instruction_b (push_r_args_b); @@ -1760,6 +1763,12 @@ void GenPushRArgB (int offset, int tot_nr_a_args, int tot_nr_b_args, int args_nr } } +void GenPushRArgU (int offset,int tot_nr_a_args,int tot_nr_b_args,int args_a_nr,int nr_a_args,int args_b_nr,int nr_b_args) +{ + put_instruction_b (push_r_arg_u); + put_arguments_nnnnnnn_b (offset,tot_nr_a_args,tot_nr_b_args,args_a_nr,nr_a_args,args_b_nr,nr_b_args); +} + void GenReplRArgs (int nr_a_args, int nr_b_args) { if (nr_a_args + nr_b_args > 0){ @@ -1903,6 +1912,13 @@ void GenFill2 (Label symblab,int arity,int offset,char bits[]) FPrintF (OutFile," %d %d %s",arity,offset,bits); } +void GenFill3 (Label symblab,int arity,int offset,char bits[]) +{ + put_instruction_ (Ifill3); + GenLabel (symblab); + FPrintF (OutFile, " %d %d %s",arity,offset,bits); +} + void GenBuild (Label symblab,int arity,Label contlab) { put_instruction_b (build); |