From 8c7809d024e85d0a8acfb794a4db41b0e4bc13e6 Mon Sep 17 00:00:00 2001 From: Shinya Sato Date: Mon, 2 May 2022 09:49:01 +0900 Subject: v0.8.2-1 --- src/inpla.y | 368 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 183 insertions(+), 185 deletions(-) (limited to 'src/inpla.y') diff --git a/src/inpla.y b/src/inpla.y index c84703f..b681b03 100644 --- a/src/inpla.y +++ b/src/inpla.y @@ -22,8 +22,8 @@ // ---------------------------------------------- -#define VERSION "0.8.2" -#define BUILT_DATE "28 Apr. 2022" +#define VERSION "0.8.2-1" +#define BUILT_DATE "2 May 2022" // ------------------------------------------------------------------ @@ -153,13 +153,13 @@ static char *Errormsg = NULL; %} %union{ - int intval; + long longval; char *chval; Ast *ast; } %token NAME AGENT -%token INT_LITERAL +%token INT_LITERAL %token STRING_LITERAL %token LP RP LC RC LB RB COMMA CROSS DELIMITER ABR %token COLON @@ -2358,7 +2358,7 @@ void CodeAddr_init(void) { #define MAX_IMCODE_SEQUENCE 1024 struct IMCode_tag { int opcode; - int operand1, operand2, operand3, operand4, operand5, operand6, operand7; + long operand1, operand2, operand3, operand4, operand5, operand6, operand7; } IMCode[MAX_IMCODE_SEQUENCE]; int IMCode_n; @@ -2373,26 +2373,26 @@ void IMCode_genCode0(int opcode) { IMCode[IMCode_n++].opcode = opcode; IMCODE_OVERFLOW_CHECK } -void IMCode_genCode1(int opcode, int operand1) { +void IMCode_genCode1(int opcode, long operand1) { IMCode[IMCode_n].operand1 = operand1; IMCode[IMCode_n++].opcode = opcode; IMCODE_OVERFLOW_CHECK } -void IMCode_genCode2(int opcode, int operand1, int operand2) { +void IMCode_genCode2(int opcode, long operand1, long operand2) { IMCode[IMCode_n].operand1 = operand1; IMCode[IMCode_n].operand2 = operand2; IMCode[IMCode_n++].opcode = opcode; IMCODE_OVERFLOW_CHECK } -void IMCode_genCode3(int opcode, int operand1, int operand2, int operand3) { +void IMCode_genCode3(int opcode, long operand1, long operand2, long operand3) { IMCode[IMCode_n].operand1 = operand1; IMCode[IMCode_n].operand2 = operand2; IMCode[IMCode_n].operand3 = operand3; IMCode[IMCode_n++].opcode = opcode; IMCODE_OVERFLOW_CHECK } -void IMCode_genCode4(int opcode, int operand1, int operand2, int operand3, - int operand4) { +void IMCode_genCode4(int opcode, long operand1, long operand2, long operand3, + long operand4) { IMCode[IMCode_n].operand1 = operand1; IMCode[IMCode_n].operand2 = operand2; IMCode[IMCode_n].operand3 = operand3; @@ -2400,8 +2400,8 @@ void IMCode_genCode4(int opcode, int operand1, int operand2, int operand3, IMCode[IMCode_n++].opcode = opcode; IMCODE_OVERFLOW_CHECK } -void IMCode_genCode5(int opcode, int operand1, int operand2, int operand3, - int operand4, int operand5) { +void IMCode_genCode5(int opcode, long operand1, long operand2, long operand3, + long operand4, long operand5) { IMCode[IMCode_n].operand1 = operand1; IMCode[IMCode_n].operand2 = operand2; IMCode[IMCode_n].operand3 = operand3; @@ -2410,8 +2410,8 @@ void IMCode_genCode5(int opcode, int operand1, int operand2, int operand3, IMCode[IMCode_n++].opcode = opcode; IMCODE_OVERFLOW_CHECK } -void IMCode_genCode6(int opcode, int operand1, int operand2, int operand3, - int operand4, int operand5, int operand6) { +void IMCode_genCode6(int opcode, long operand1, long operand2, long operand3, + long operand4, long operand5, long operand6) { IMCode[IMCode_n].operand1 = operand1; IMCode[IMCode_n].operand2 = operand2; IMCode[IMCode_n].operand3 = operand3; @@ -2421,8 +2421,8 @@ void IMCode_genCode6(int opcode, int operand1, int operand2, int operand3, IMCode[IMCode_n++].opcode = opcode; IMCODE_OVERFLOW_CHECK } -void IMCode_genCode7(int opcode, int operand1, int operand2, int operand3, - int operand4, int operand5, int operand6, int operand7) { +void IMCode_genCode7(int opcode, long operand1, long operand2, long operand3, + long operand4, long operand5, long operand6, long operand7) { IMCode[IMCode_n].operand1 = operand1; IMCode[IMCode_n].operand2 = operand2; IMCode[IMCode_n].operand3 = operand3; @@ -2498,47 +2498,47 @@ void IMCode_puts(int n) { switch (imcode->opcode) { case OP_MKNAME: - printf("%s var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld\n", string_opcode[imcode->opcode], imcode->operand1); break; case OP_MKGNAME: - printf("%s id:%d var%d; \"%s\"\n", string_opcode[imcode->opcode], + printf("%s id:%ld var%ld; \"%s\"\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, IdTable_get_name(imcode->operand1)); break; case OP_MKAGENT0: - printf("%s id:%d var%d\n", string_opcode[imcode->opcode], + printf("%s id:%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2); break; case OP_MKAGENT1: - printf("%s id:%d var%d var%d\n", string_opcode[imcode->opcode], + printf("%s id:%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3); break; case OP_MKAGENT2: - printf("%s id:%d var%d var%d var%d\n", string_opcode[imcode->opcode], + printf("%s id:%ld var%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4); break; case OP_MKAGENT3: - printf("%s id:%d var%d var%d var%d var%d\n", string_opcode[imcode->opcode], + printf("%s id:%ld var%ld var%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4, imcode->operand5); break; case OP_MKAGENT4: - printf("%s id:%d var%d var%d var%d var%d var%d \n", string_opcode[imcode->opcode], + printf("%s id:%ld var%ld var%ld var%ld var%ld var%ld \n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4, imcode->operand5, imcode->operand6); break; case OP_MKAGENT5: - printf("%s id:%d var%d var%d var%d var%d var%d var%d \n", string_opcode[imcode->opcode], + printf("%s id:%ld var%ld var%ld var%ld var%ld var%ld var%ld \n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4, imcode->operand5, imcode->operand6, imcode->operand7); @@ -2546,36 +2546,36 @@ void IMCode_puts(int n) { case OP_REUSEAGENT0: - printf("%s var%d id:%d\n", string_opcode[imcode->opcode], + printf("%s var%ld id:%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2); break; case OP_REUSEAGENT1: - printf("%s var%d id:%d var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld id:%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3); break; case OP_REUSEAGENT2: - printf("%s var%d id:%d var%d var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld id:%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4); break; case OP_REUSEAGENT3: - printf("%s var%d id:%d var%d var%d var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld id:%ld var%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4, imcode->operand5); break; case OP_REUSEAGENT4: - printf("%s var%d id:%d var%d var%d var%d var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld id:%ld var%ld var%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4, imcode->operand5, imcode->operand6); break; case OP_REUSEAGENT5: - printf("%s var%d id:%d var%d var%d var%d var%d var%d\n", + printf("%s var%ld id:%ld var%ld var%ld var%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4, imcode->operand5, @@ -2584,7 +2584,7 @@ void IMCode_puts(int n) { case OP_LABEL: - printf("%s%d:\n", string_opcode[imcode->opcode], + printf("%s%ld:\n", string_opcode[imcode->opcode], imcode->operand1); break; @@ -2612,7 +2612,7 @@ void IMCode_puts(int n) { case OP_LOOP_RREC2: case OP_LOOP_RREC1_FREE_R: case OP_LOOP_RREC2_FREE_R: - printf("%s var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld\n", string_opcode[imcode->opcode], imcode->operand1); break; @@ -2632,7 +2632,7 @@ void IMCode_puts(int n) { case OP_NE_R0: case OP_CNCTGN: case OP_SUBSTGN: - printf("%s var%d var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2); break; @@ -2641,14 +2641,14 @@ void IMCode_puts(int n) { case OP_PUSHI: case OP_LOADI: case OP_EQI_R0: - printf("%s $%d var%d\n", string_opcode[imcode->opcode], + printf("%s $%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2); break; case OP_LOOP_RREC: case OP_LOOP_RREC_FREE_R: - printf("%s var%d $%d\n", string_opcode[imcode->opcode], + printf("%s var%ld $%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2); break; @@ -2664,7 +2664,7 @@ void IMCode_puts(int n) { case OP_LE: case OP_EQ: case OP_NE: - printf("%s var%d var%d var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld var%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3); break; @@ -2673,7 +2673,7 @@ void IMCode_puts(int n) { case OP_ADDI: case OP_SUBI: case OP_EQI: - printf("%s var%d $%d var%d\n", string_opcode[imcode->opcode], + printf("%s var%ld $%ld var%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, imcode->operand3); break; @@ -2682,7 +2682,7 @@ void IMCode_puts(int n) { case OP_JMPEQ0: case OP_JMPNEQ0: case OP_JMPCNCT_CONS: - printf("%s var%d %s%d\n", string_opcode[imcode->opcode], + printf("%s var%ld %s%ld\n", string_opcode[imcode->opcode], imcode->operand1, string_opcode[OP_LABEL],imcode->operand2); break; @@ -2690,26 +2690,26 @@ void IMCode_puts(int n) { // arity is 3: opcode var1 id2 LABEL3 case OP_JMPCNCT: - printf("%s var%d id:%d %s%d\n", string_opcode[imcode->opcode], + printf("%s var%ld id:%ld %s%ld\n", string_opcode[imcode->opcode], imcode->operand1, imcode->operand2, string_opcode[OP_LABEL],imcode->operand3); break; // others case OP_JMPEQ0_R0: - printf("%s %s%d\n", string_opcode[imcode->opcode], + printf("%s %s%ld\n", string_opcode[imcode->opcode], string_opcode[OP_LABEL],imcode->operand1); break; case OP_JMP: - printf("%s %s%d\n", string_opcode[imcode->opcode], + printf("%s %s%ld\n", string_opcode[imcode->opcode], string_opcode[OP_LABEL],imcode->operand1); break; default: - printf("CODE %d %d %d %d %d %d\n", + printf("CODE %ld %ld %ld %ld %ld %ld\n", imcode->operand1, imcode->operand2, imcode->operand3, imcode->operand4, imcode->operand5, imcode->operand6); } @@ -3831,7 +3831,7 @@ int CmEnv_Optimise_check_occurence_in_block(int localvar, int CmEnv_Optimise_VMCode_CopyPropagation_LOADI(int target_imcode_addr) { struct IMCode_tag *imcode; - int load_i, load_to; + long load_i, load_to; load_i = IMCode[target_imcode_addr].operand1; load_to = IMCode[target_imcode_addr].operand2; @@ -4214,7 +4214,7 @@ int CmEnv_generate_VMCode(void **code) { switch (imcode->opcode) { case OP_MKNAME: { // printf("OP_MKNAME var%d\n", imcode->operand1); - int dest = imcode->operand1; + long dest = imcode->operand1; #ifdef OPTIMISE_IMCODE dest = CmEnv_get_newreg(dest); @@ -4228,7 +4228,7 @@ int CmEnv_generate_VMCode(void **code) { // printf("OP_MKGNAME sym:%d var%d (as `%s')\n", // imcode->operand1, imcode->operand2, // CmEnv.bind[imcode->operand1].name); - int dest = imcode->operand2; + long dest = imcode->operand2; #ifdef OPTIMISE_IMCODE dest = CmEnv_get_newreg(dest); @@ -4244,7 +4244,7 @@ int CmEnv_generate_VMCode(void **code) { case OP_MKAGENT0: { // printf("OP_MKAGENT0 id var%d:%d\n", // imcode->operand1, imcode->operand2); - int dest = imcode->operand2; + long dest = imcode->operand2; #ifdef OPTIMISE_IMCODE dest = CmEnv_get_newreg(dest); @@ -4258,8 +4258,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_MKAGENT1: { // printf("OP_MKAGENT1 id:%d var%d var%d\n", // imcode->operand1, imcode->operand2, imcode->operand3); - int src1 = imcode->operand2; - int dest = imcode->operand3; + long src1 = imcode->operand2; + long dest = imcode->operand3; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4293,9 +4293,9 @@ int CmEnv_generate_VMCode(void **code) { // imcode->operand1, imcode->operand2, // imcode->operand3, imcode->operand4); - int src1 = imcode->operand2; - int src2 = imcode->operand3; - int dest = imcode->operand4; + long src1 = imcode->operand2; + long src2 = imcode->operand3; + long dest = imcode->operand4; #ifdef OPTIMISE_IMCODE @@ -4338,10 +4338,10 @@ int CmEnv_generate_VMCode(void **code) { // printf("OP_MKAGENT3 id:%d var%d var%d var%d var%d \n", // imcode->operand1, imcode->operand2, // imcode->operand3, imcode->operand4, imcode->operand5); - int src1 = imcode->operand2; - int src2 = imcode->operand3; - int src3 = imcode->operand4; - int dest = imcode->operand5; + long src1 = imcode->operand2; + long src2 = imcode->operand3; + long src3 = imcode->operand4; + long dest = imcode->operand5; #ifdef OPTIMISE_IMCODE @@ -4389,11 +4389,11 @@ int CmEnv_generate_VMCode(void **code) { // printf("OP_MKAGENT4 var%d id:%d var%d var%d var%d var%d\n", // imcode->operand1, imcode->operand2, // imcode->operand3, imcode->operand4, imcode->operand5); - int src1 = imcode->operand2; - int src2 = imcode->operand3; - int src3 = imcode->operand4; - int src4 = imcode->operand5; - int dest = imcode->operand6; + long src1 = imcode->operand2; + long src2 = imcode->operand3; + long src3 = imcode->operand4; + long src4 = imcode->operand5; + long dest = imcode->operand6; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4435,12 +4435,12 @@ int CmEnv_generate_VMCode(void **code) { // printf("OP_MKAGENT5 var%d id:%d var%d var%d var%d var%d\n", // imcode->operand1, imcode->operand2, // imcode->operand3, imcode->operand4, imcode->operand5); - int src1 = imcode->operand2; - int src2 = imcode->operand3; - int src3 = imcode->operand4; - int src4 = imcode->operand5; - int src5 = imcode->operand6; - int dest = imcode->operand7; + long src1 = imcode->operand2; + long src2 = imcode->operand3; + long src3 = imcode->operand4; + long src4 = imcode->operand5; + long src5 = imcode->operand6; + long dest = imcode->operand7; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4505,8 +4505,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_REUSEAGENT1: { // printf("OP_REUSEAGENT1 var%d id:%d var%d\n", // imcode->operand1, imcode->operand2, imcode->operand3); - int dest = imcode->operand1; - int src1 = imcode->operand3; + long dest = imcode->operand1; + long src1 = imcode->operand3; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4522,9 +4522,9 @@ int CmEnv_generate_VMCode(void **code) { } case OP_REUSEAGENT2: { - int dest = imcode->operand1; - int src1 = imcode->operand3; - int src2 = imcode->operand4; + long dest = imcode->operand1; + long src1 = imcode->operand3; + long src2 = imcode->operand4; #ifdef OPTIMISE_IMCODE @@ -4552,10 +4552,10 @@ int CmEnv_generate_VMCode(void **code) { // printf("OP_REUSEAGENT3 var%d id:%d var%d var%d var%d\n", // imcode->operand1, imcode->operand2, // imcode->operand3, imcode->operand4, imcode->operand5); - int dest = imcode->operand1; - int src1 = imcode->operand3; - int src2 = imcode->operand4; - int src3 = imcode->operand5; + long dest = imcode->operand1; + long src1 = imcode->operand3; + long src2 = imcode->operand4; + long src3 = imcode->operand5; #ifdef OPTIMISE_IMCODE @@ -4589,11 +4589,11 @@ int CmEnv_generate_VMCode(void **code) { // printf("OP_REUSEAGENT3 var%d id:%d var%d var%d var%d\n", // imcode->operand1, imcode->operand2, // imcode->operand3, imcode->operand4, imcode->operand5); - int dest = imcode->operand1; - int src1 = imcode->operand3; - int src2 = imcode->operand4; - int src3 = imcode->operand5; - int src4 = imcode->operand6; + long dest = imcode->operand1; + long src1 = imcode->operand3; + long src2 = imcode->operand4; + long src3 = imcode->operand5; + long src4 = imcode->operand6; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4633,12 +4633,12 @@ int CmEnv_generate_VMCode(void **code) { // printf("OP_REUSEAGENT3 var%d id:%d var%d var%d var%d\n", // imcode->operand1, imcode->operand2, // imcode->operand3, imcode->operand4, imcode->operand5); - int dest = imcode->operand1; - int src1 = imcode->operand3; - int src2 = imcode->operand4; - int src3 = imcode->operand5; - int src4 = imcode->operand6; - int src5 = imcode->operand7; + long dest = imcode->operand1; + long src1 = imcode->operand3; + long src2 = imcode->operand4; + long src3 = imcode->operand5; + long src4 = imcode->operand6; + long src5 = imcode->operand7; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4687,8 +4687,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_LOAD: { // OP_LOAD src1 dest - int src1 = imcode->operand1; - int dest = imcode->operand2; + long src1 = imcode->operand1; + long dest = imcode->operand2; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4713,8 +4713,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_LOAD_META: { // OP_LOAD_META src1 dest // the dest is used as it is - int src1 = imcode->operand1; - int dest = imcode->operand2; + long src1 = imcode->operand1; + long dest = imcode->operand2; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4744,7 +4744,7 @@ int CmEnv_generate_VMCode(void **code) { case OP_LOADI: { // OP_LOADI int1 dest - int dest = imcode->operand2; + long dest = imcode->operand2; #ifdef OPTIMISE_IMCODE dest = CmEnv_get_newreg(dest); @@ -4762,8 +4762,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_MYPUSH: { // printf("OP_PUSH var%d var%d\n", // imcode->operand1, imcode->operand2); - int src1 = imcode->operand1; - int src2 = imcode->operand2; + long src1 = imcode->operand1; + long src2 = imcode->operand2; #ifdef OPTIMISE_IMCODE @@ -4799,7 +4799,7 @@ int CmEnv_generate_VMCode(void **code) { case OP_JMPNEQ0: case OP_JMPCNCT_CONS: { // OP_JMPEQ0 reg label - int src1 = imcode->operand1; + long src1 = imcode->operand1; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4834,9 +4834,9 @@ int CmEnv_generate_VMCode(void **code) { case OP_EQ: case OP_NE: { // op src1 src2 dest - int src1 = imcode->operand1; - int src2 = imcode->operand2; - int dest = imcode->operand3; + long src1 = imcode->operand1; + long src2 = imcode->operand2; + long dest = imcode->operand3; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4862,8 +4862,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_ADDI: case OP_SUBI: { // op src1 $2 dest - int src1 = imcode->operand1; - int dest = imcode->operand3; + long src1 = imcode->operand1; + long dest = imcode->operand3; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4884,8 +4884,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_EQI: { // op src1 int2fix($2) dest - int src1 = imcode->operand1; - int dest = imcode->operand3; + long src1 = imcode->operand1; + long dest = imcode->operand3; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4908,8 +4908,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_EQ_R0: case OP_NE_R0: { // op src1 src2 - int src1 = imcode->operand1; - int src2 = imcode->operand2; + long src1 = imcode->operand1; + long src2 = imcode->operand2; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4948,7 +4948,7 @@ int CmEnv_generate_VMCode(void **code) { #endif - int src1 = imcode->operand1; + long src1 = imcode->operand1; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4968,8 +4968,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_DEC: case OP_RAND: { // op src dest - int src1 = imcode->operand1; - int dest = imcode->operand2; + long src1 = imcode->operand1; + long dest = imcode->operand2; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -4999,7 +4999,7 @@ int CmEnv_generate_VMCode(void **code) { case OP_PUSHI: { // OP src1 int2 - int src1 = imcode->operand1; + long src1 = imcode->operand1; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -5032,7 +5032,7 @@ int CmEnv_generate_VMCode(void **code) { case OP_LOOP_RREC2_FREE_R: { // printf("OP_LOOP_RREC1 var%d\n", // imcode->operand1); - int src1 = imcode->operand1; + long src1 = imcode->operand1; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -5050,7 +5050,7 @@ int CmEnv_generate_VMCode(void **code) { case OP_LOOP_RREC_FREE_R: { // printf("OP_LOOP_RREC1 var%d $%d\n", // imcode->operand1, imcode->operand2); - int src1 = imcode->operand1; + long src1 = imcode->operand1; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -5068,7 +5068,7 @@ int CmEnv_generate_VMCode(void **code) { // OP_JMPCNCT var id label // printf("OP_JMPCNCT var%d id:%d $%d\n", // imcode->operand1, imcode->operand2, imcode->operand3); - int src1 = imcode->operand1; + long src1 = imcode->operand1; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -5100,8 +5100,8 @@ int CmEnv_generate_VMCode(void **code) { case OP_SUBSTGN: { // printf("OP_CNCTGN var%d $%d\n", // imcode->operand1, imcode->operand2); - int src1 = imcode->operand1; - int src2 = imcode->operand2; + long src1 = imcode->operand1; + long src2 = imcode->operand2; #ifdef OPTIMISE_IMCODE src1 = CmEnv_using_reg(src1); @@ -5159,7 +5159,7 @@ int CmEnv_generate_VMCode(void **code) { // two pass for label for (int i=0; iid) { case AST_INT: - IMCode_genCode2(OP_LOADI, ptr->intval, target); + IMCode_genCode2(OP_LOADI, ptr->longval, target); return 1; break; @@ -5883,7 +5882,7 @@ int Compile_term_on_ast(Ast *ptr, int target) { int i, arity; int alloc[MAX_PORT]; - + if (ptr == NULL) { return -1; } @@ -5901,8 +5900,7 @@ int Compile_term_on_ast(Ast *ptr, int target) { case AST_INT: result = CmEnv_newvar(); - - IMCode_genCode2(OP_LOADI, ptr->intval, result); + IMCode_genCode2(OP_LOADI, ptr->longval, result); return result; break; @@ -6038,7 +6036,6 @@ int Compile_term_on_ast(Ast *ptr, int target) { case AST_AGENT: - if (target == -1) { result = CmEnv_newvar(); } else { @@ -6046,6 +6043,7 @@ int Compile_term_on_ast(Ast *ptr, int target) { } int id = IdTable_getid_builtin_funcAgent(ptr); + if (id == -1) { id = NameTable_get_set_id_with_IdTable_forAgent((char *)ptr->left->sym); } @@ -6547,7 +6545,7 @@ int Compile_stmlist_on_ast(Ast *at) { } else if (ptr->right->id == AST_INT) { // y is an integer - IMCode_genCode2(OP_LOADI, ptr->right->intval, toRegLeft); + IMCode_genCode2(OP_LOADI, ptr->right->longval, toRegLeft); } else { // y is an expression @@ -7986,8 +7984,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { // puts("ADD src1 src2 dest"); pc++; { - int i = FIX2INT(reg[(unsigned long)code[pc++]]); - int j = FIX2INT(reg[(unsigned long)code[pc++]]); + long i = FIX2INT(reg[(unsigned long)code[pc++]]); + long j = FIX2INT(reg[(unsigned long)code[pc++]]); reg[(unsigned long)code[pc++]] = INT2FIX(i+j); } @@ -7997,8 +7995,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { // puts("SUB src1 src2 dest"); pc++; { - int i = FIX2INT(reg[(unsigned long)code[pc++]]); - int j = FIX2INT(reg[(unsigned long)code[pc++]]); + long i = FIX2INT(reg[(unsigned long)code[pc++]]); + long j = FIX2INT(reg[(unsigned long)code[pc++]]); reg[(unsigned long)code[pc++]] = INT2FIX(i-j); } @@ -8009,8 +8007,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { // puts("ADDI src int dest"); pc++; { - int i = FIX2INT(reg[(unsigned long)code[pc++]]); - int j = (unsigned long)code[pc++]; + long i = FIX2INT(reg[(unsigned long)code[pc++]]); + long j = (unsigned long)code[pc++]; reg[(unsigned long)code[pc++]] = INT2FIX(i+j); } @@ -8021,8 +8019,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { // puts("SUBI src int dest"); pc++; { - int i = FIX2INT(reg[(unsigned long)code[pc++]]); - int j = (unsigned long)code[pc++]; + long i = FIX2INT(reg[(unsigned long)code[pc++]]); + long j = (unsigned long)code[pc++]; reg[(unsigned long)code[pc++]] = INT2FIX(i-j); } @@ -8033,8 +8031,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { // puts("MUL src1 src2 dest"); pc++; { - int i = FIX2INT(reg[(unsigned long)code[pc++]]); - int j = FIX2INT(reg[(unsigned long)code[pc++]]); + long i = FIX2INT(reg[(unsigned long)code[pc++]]); + long j = FIX2INT(reg[(unsigned long)code[pc++]]); reg[(unsigned long)code[pc++]] = INT2FIX(i*j); } @@ -8045,8 +8043,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { // puts("DIV src1 src2 dest"); pc++; { - int i = FIX2INT(reg[(unsigned long)code[pc++]]); - int j = FIX2INT(reg[(unsigned long)code[pc++]]); + long i = FIX2INT(reg[(unsigned long)code[pc++]]); + long j = FIX2INT(reg[(unsigned long)code[pc++]]); reg[(unsigned long)code[pc++]] = INT2FIX(i/j); } @@ -8056,8 +8054,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { // puts("MOD src1 src2 dest"); pc++; { - int i = FIX2INT(reg[(unsigned long)code[pc++]]); - int j = FIX2INT(reg[(unsigned long)code[pc++]]); + long i = FIX2INT(reg[(unsigned long)code[pc++]]); + long j = FIX2INT(reg[(unsigned long)code[pc++]]); reg[(unsigned long)code[pc++]] = INT2FIX(i%j); } @@ -8069,8 +8067,8 @@ void *exec_code(int mode, VirtualMachine * restrict vm, void * restrict *code) { { // int i = FIX2INT(reg[(unsigned long)code[pc++]]); // int j = FIX2INT(reg[(unsigned long)code[pc++]]); - int i = reg[(unsigned long)code[pc++]]; - int j = reg[(unsigned long)code[pc++]]; + long i = reg[(unsigned long)code[pc++]]; + long j = reg[(unsigned long)code[pc++]]; if (iport[1]); - int m = FIX2INT(a2); + long n = FIX2INT(AGENT(a1)->port[1]); + long m = FIX2INT(a2); a2 = INT2FIX(m+n); VALUE a1port0 = AGENT(a1)->port[0]; free_Agent(a1); @@ -8716,8 +8714,8 @@ loop_a2IsFixnum: COUNTUP_INTERACTION(vm); // r << Sub(m,n) - int n = FIX2INT(AGENT(a1)->port[1]); - int m = FIX2INT(a2); + long n = FIX2INT(AGENT(a1)->port[1]); + long m = FIX2INT(a2); a2 = INT2FIX(m-n); VALUE a1port0 = AGENT(a1)->port[0]; free_Agent(a1); @@ -8739,8 +8737,8 @@ loop_a2IsFixnum: COUNTUP_INTERACTION(vm); // r << Mult(m,n) - int n = FIX2INT(AGENT(a1)->port[1]); - int m = FIX2INT(a2); + long n = FIX2INT(AGENT(a1)->port[1]); + long m = FIX2INT(a2); a2 = INT2FIX(m*n); VALUE a1port0 = AGENT(a1)->port[0]; free_Agent(a1); @@ -8762,8 +8760,8 @@ loop_a2IsFixnum: COUNTUP_INTERACTION(vm); // r << DIV(m,n) - int n = FIX2INT(AGENT(a1)->port[1]); - int m = FIX2INT(a2); + long n = FIX2INT(AGENT(a1)->port[1]); + long m = FIX2INT(a2); a2 = INT2FIX(m/n); VALUE a1port0 = AGENT(a1)->port[0]; free_Agent(a1); @@ -8785,8 +8783,8 @@ loop_a2IsFixnum: COUNTUP_INTERACTION(vm); // r << MOD(m,n) - int n = FIX2INT(AGENT(a1)->port[1]); - int m = FIX2INT(a2); + long n = FIX2INT(AGENT(a1)->port[1]); + long m = FIX2INT(a2); a2 = INT2FIX(m%n); VALUE a1port0 = AGENT(a1)->port[0]; free_Agent(a1); @@ -9567,7 +9565,6 @@ int exec(Ast *at) { Ast_RewriteOptimisation_eqlist(at); - // Syntax error check { Ast *tmp_at=at; @@ -10060,8 +10057,9 @@ int main(int argc, char *argv[]) Hoop_init_size, 1 << Hoop_init_size); printf(" -Xmt Set multiple heap increment to 2^ (Defalut: %2u (=%4u))\n", Hoop_increasing_magnitude, 1 << Hoop_increasing_magnitude); - printf(" 0: the same size heap is inserted when it runs up.\n"); - printf(" 1: the twice (=2^1) size heap is inserted.\n"); + printf(" 0: the same (=2^0) size heap is inserted when it runs up.\n"); + printf(" 1: the heap size is twice (=2^1).\n"); + printf(" 2: the size is four times (=2^2).\n"); #else //v0.5.6 printf(" -c Set size of heaps (Defalut: %10u)\n", heap_size); -- cgit v1.2.3