Diff for /gforth/engine/main.c between versions 1.64 and 1.65

version 1.64, 2002/09/01 15:15:07 version 1.65, 2002/09/15 20:30:01
Line 83  int optind = 1; Line 83  int optind = 1;
   
 Address code_area=0;  Address code_area=0;
 Address code_here=0; /* does for code-area what HERE does for the dictionary */  Address code_here=0; /* does for code-area what HERE does for the dictionary */
   Address start_flush=0; /* start of unflushed code */
   
 static int no_super=0;   /* true if compile_prim should not fuse prims */  static int no_super=0;   /* true if compile_prim should not fuse prims */
 static int no_dynamic=1; /* true if compile_prim should not generate code */  static int no_dynamic=1; /* true if compile_prim should not generate code */
Line 363  void alloc_stacks(ImageHeader * header) Line 364  void alloc_stacks(ImageHeader * header)
   header->fp_stack_base=my_alloc(fsize);    header->fp_stack_base=my_alloc(fsize);
   header->return_stack_base=my_alloc(rsize);    header->return_stack_base=my_alloc(rsize);
   header->locals_stack_base=my_alloc(lsize);    header->locals_stack_base=my_alloc(lsize);
   code_here = code_area = my_alloc(dictsize);    code_here = start_flush = code_area = my_alloc(dictsize);
 }  }
   
 #warning You can ignore the warnings about clobbered variables in go_forth  #warning You can ignore the warnings about clobbered variables in go_forth
Line 516  Label compile_prim(Label prim) Line 517  Label compile_prim(Label prim)
       memcpy(code_here, last_jump, IND_JUMP_LENGTH);        memcpy(code_here, last_jump, IND_JUMP_LENGTH);
       code_here += IND_JUMP_LENGTH;        code_here += IND_JUMP_LENGTH;
       last_jump = 0;        last_jump = 0;
         FLUSH_ICACHE(start_flush, code_here-start_flush);
         start_flush=code_here;
     }      }
     return prim;      return prim;
   }    }
Line 526  Label compile_prim(Label prim) Line 529  Label compile_prim(Label prim)
   memcpy(code_here, (Address)prim, priminfos[i].length);    memcpy(code_here, (Address)prim, priminfos[i].length);
   code_here += priminfos[i].length;    code_here += priminfos[i].length;
   last_jump = (priminfos[i].super_end) ? 0 : (prim+priminfos[i].length);    last_jump = (priminfos[i].super_end) ? 0 : (prim+priminfos[i].length);
     if (last_jump == 0) {
       FLUSH_ICACHE(start_flush, code_here-start_flush);
       start_flush=code_here;
     }
   return (Label)old_code_here;    return (Label)old_code_here;
 #else /* !defined(DOUBLY_INDIRECT), no code replication */  #else /* !defined(DOUBLY_INDIRECT), no code replication */
 #if !defined(INDIRECT_THREADED)  #if !defined(INDIRECT_THREADED)

Removed from v.1.64  
changed lines
  Added in v.1.65


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>