version 1.37, 2007/12/31 17:34:59
|
version 1.39, 2008/08/09 13:24:25
|
Line 6
|
Line 6
|
|
|
Gforth is free software; you can redistribute it and/or |
Gforth is free software; you can redistribute it and/or |
modify it under the terms of the GNU General Public License |
modify it under the terms of the GNU General Public License |
as published by the Free Software Foundation; either version 2 |
as published by the Free Software Foundation, either version 3 |
of the License, or (at your option) any later version. |
of the License, or (at your option) any later version. |
|
|
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
Line 15
|
Line 15
|
GNU General Public License for more details. |
GNU General Public License for more details. |
|
|
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
along with this program; if not, write to the Free Software |
along with this program; if not, see http://www.gnu.org/licenses/. |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
|
|
|
|
This files defines macros for threading. Many sets of macros are |
This files defines macros for threading. Many sets of macros are |
Line 136 before_goto: goto *real_ca; after_goto:
|
Line 135 before_goto: goto *real_ca; after_goto:
|
# define SET_IP(p) do {ip=(p); cfa=*ip;} while(0) |
# define SET_IP(p) do {ip=(p); cfa=*ip;} while(0) |
# define NEXT_INST (cfa) |
# define NEXT_INST (cfa) |
# define INC_IP(const_inc) do {cfa=IP[const_inc]; ip+=(const_inc);} while(0) |
# define INC_IP(const_inc) do {cfa=IP[const_inc]; ip+=(const_inc);} while(0) |
# define DEF_CA Label ca; |
# define DEF_CA Label MAYBE_UNUSED ca; |
# define NEXT_P1 do {\ |
# define NEXT_P1 do {\ |
if (DEBUG_DITC && (cfa<=vm_prims+DOESJUMP || cfa>=vm_prims+npriminfos)) \ |
if (DEBUG_DITC && (cfa<=vm_prims+DOESJUMP || cfa>=vm_prims+npriminfos)) \ |
fprintf(stderr,"NEXT encountered prim %p at ip=%p\n", cfa, ip); \ |
fprintf(stderr,"NEXT encountered prim %p at ip=%p\n", cfa, ip); \ |
Line 187 before_goto: goto *real_ca; after_goto:
|
Line 186 before_goto: goto *real_ca; after_goto:
|
*/ |
*/ |
#define KILLS asm("":"=X"(cfa)); |
#define KILLS asm("":"=X"(cfa)); |
|
|
#warning direct threading scheme 8: cfa dead, i386 hack |
/* #warning direct threading scheme 8: cfa dead, i386 hack */ |
# define NEXT_P0 |
# define NEXT_P0 |
# define CFA cfa |
# define CFA cfa |
# define IP (ip) |
# define IP (ip) |
Line 203 before_goto: goto *real_ca; after_goto:
|
Line 202 before_goto: goto *real_ca; after_goto:
|
#else |
#else |
/* indirect THREADED */ |
/* indirect THREADED */ |
|
|
#warning indirect threading scheme 8: low latency,cisc |
/* #warning indirect threading scheme 8: low latency,cisc */ |
# define NEXT_P0 |
# define NEXT_P0 |
# define CFA cfa |
# define CFA cfa |
# define IP (ip) |
# define IP (ip) |