Overview
| Comment: | Optimize message blocks that begin with a goto instruction to a label that comes before it. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
7cde381dd58b46a4a8228c41e1427047 |
| User & Date: | user on 2023-03-14 20:53:42.142 |
| Other Links: | manifest | tags |
Context
|
2023-03-29
| ||
| 03:22 | Add the variant of the {edit} macro to edit an argument of a macro which is currently being expanded. check-in: 0548d34afe user: user tags: trunk | |
|
2023-03-14
| ||
| 20:53 | Optimize message blocks that begin with a goto instruction to a label that comes before it. check-in: 7cde381dd5 user: user tags: trunk | |
|
2023-01-31
| ||
| 19:26 | Add 'mm' binding ALT with middle mouse button to write coordinates to the Misc value of MRU. check-in: 67716681cf user: user tags: trunk | |
Changes
Modified class.c
from [69d6373aa3]
to [f3693b1dc0].
| ︙ | ︙ | |||
1996 1997 1998 1999 2000 2001 2002 |
}
static void class_definition(int cla,sqlite3_stmt*vst) {
Hash*hash=calloc(LOCAL_HASH_SIZE,sizeof(Hash));
Class*cl=classes[cla];
int ptr=0;
int compat=0;
| | | 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 |
}
static void class_definition(int cla,sqlite3_stmt*vst) {
Hash*hash=calloc(LOCAL_HASH_SIZE,sizeof(Hash));
Class*cl=classes[cla];
int ptr=0;
int compat=0;
int i,j;
char disp=0;
if(!hash) fatal("Allocation failed\n");
if(!cl) fatal("Confusion of class definition somehow\n");
if(cl->cflags&(CF_NOCLASS1|CF_NOCLASS2)) {
cl->cflags=0;
} else {
ParseError("Duplicate definition of class $%s\n",cl->name);
|
| ︙ | ︙ | |||
2139 2140 2141 2142 2143 2144 2145 |
cl->codes[cl->messages[MSG_KEY]+i]=ptr;
if(cl->cflags&CF_INPUT) keymask[i>>3]|=1<<(i&7);
}
cl->codes[ptr++]=OP_QUEEN;
ptr=parse_instructions(cla,ptr,hash,compat);
break;
case 0x0200 ... 0x02FF:
| | < | > > | > > > > > > > > > > | 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 |
cl->codes[cl->messages[MSG_KEY]+i]=ptr;
if(cl->cflags&CF_INPUT) keymask[i>>3]|=1<<(i&7);
}
cl->codes[ptr++]=OP_QUEEN;
ptr=parse_instructions(cla,ptr,hash,compat);
break;
case 0x0200 ... 0x02FF:
i=tokenv&255;
goto message;
case 0xC000 ... 0xFFFF:
i=tokenv+256-0xC000;
message:
set_message_ptr(cla,i,ptr);
nxttok();
pushback=1;
if(tokenv==OP_LABEL && tokent==(TF_NAME|TF_ABNORMAL|TF_EQUAL)) {
j=look_hash(hash,LOCAL_HASH_SIZE,0x8000,0xFFFF,*labelptr,"labels");
if(!j) j=*labelptr,++*labelptr;
if(labelptr[j-0x8000]!=0xFFFF) {
set_message_ptr(cla,i,labelptr[j-0x8000]);
pushback=0;
}
}
ptr=parse_instructions(cla,ptr,hash,compat);
break;
default: ParseError("Invalid directly inside of a class definition\n");
}
} else {
ParseError("Invalid directly inside of a class definition\n");
}
|
| ︙ | ︙ |