mirror of
https://github.com/sqlite/sqlite.git
synced 2025-12-24 14:17:58 +03:00
Registerification of the VDBE is complete. The operand stack has been
removed from the code. All instructions operate out of registers only. (CVS 4718) FossilOrigin-Name: 706b41b70bd1e2030e6fa44358c38a26c5cf0985
This commit is contained in:
@@ -51,7 +51,6 @@
|
||||
sub("\r","",name)
|
||||
op[name] = -1
|
||||
jump[name] = 0
|
||||
nopush[name] = 0
|
||||
out2_prerelease[name] = 0
|
||||
in1[name] = 0
|
||||
in2[name] = 0
|
||||
@@ -68,9 +67,7 @@
|
||||
}
|
||||
x = $i
|
||||
sub(",","",x)
|
||||
if(x=="no-push"){
|
||||
nopush[name] = 1
|
||||
}else if(x=="jump"){
|
||||
if(x=="jump"){
|
||||
jump[name] = 1
|
||||
}else if(x=="out2-prerelease"){
|
||||
out2_prerelease[name] = 1
|
||||
@@ -130,16 +127,16 @@ END {
|
||||
for(name in op){
|
||||
x = op[name]
|
||||
a0 = a1 = a2 = a3 = a4 = a5 = a6 = a7 = 0
|
||||
a8 = a9 = a10 = a11 = a12 = a13 = a14 = a15 = 0
|
||||
# a8 = a9 = a10 = a11 = a12 = a13 = a14 = a15 = 0
|
||||
if( jump[name] ) a0 = 1;
|
||||
if( nopush[name]==0 ) a1 = 2;
|
||||
if( out2_prerelease[name] ) a2 = 4;
|
||||
if( in1[name] ) a3 = 8;
|
||||
if( in2[name] ) a4 = 16;
|
||||
if( in3[name] ) a5 = 32;
|
||||
if( out2[name] ) a6 = 64;
|
||||
if( out3[name] ) a7 = 128;
|
||||
bv[x] = a0+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15;
|
||||
if( out2_prerelease[name] ) a1 = 2;
|
||||
if( in1[name] ) a2 = 4;
|
||||
if( in2[name] ) a3 = 8;
|
||||
if( in3[name] ) a4 = 16;
|
||||
if( out2[name] ) a5 = 32;
|
||||
if( out3[name] ) a6 = 64;
|
||||
# bv[x] = a0+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15;
|
||||
bv[x] = a0+a1+a2+a3+a4+a5+a6;
|
||||
}
|
||||
print "\n"
|
||||
print "/* Properties such as \"out2\" or \"jump\" that are specified in"
|
||||
@@ -147,17 +144,16 @@ END {
|
||||
print "** are encoded into bitvectors as follows:"
|
||||
print "*/"
|
||||
print "#define OPFLG_JUMP 0x0001 /* jump: P2 holds jmp target */"
|
||||
print "#define OPFLG_PUSH 0x0002 /* ~no-push: Does not push */"
|
||||
print "#define OPFLG_OUT2_PRERELEASE 0x0004 /* out2-prerelease: */"
|
||||
print "#define OPFLG_IN1 0x0008 /* in1: P1 is an input */"
|
||||
print "#define OPFLG_IN2 0x0010 /* in2: P2 is an input */"
|
||||
print "#define OPFLG_IN3 0x0020 /* in3: P3 is an input */"
|
||||
print "#define OPFLG_OUT2 0x0040 /* out2: P2 is an output */"
|
||||
print "#define OPFLG_OUT3 0x0080 /* out3: P3 is an output */"
|
||||
print "#define OPFLG_OUT2_PRERELEASE 0x0002 /* out2-prerelease: */"
|
||||
print "#define OPFLG_IN1 0x0004 /* in1: P1 is an input */"
|
||||
print "#define OPFLG_IN2 0x0008 /* in2: P2 is an input */"
|
||||
print "#define OPFLG_IN3 0x0010 /* in3: P3 is an input */"
|
||||
print "#define OPFLG_OUT2 0x0020 /* out2: P2 is an output */"
|
||||
print "#define OPFLG_OUT3 0x0040 /* out3: P3 is an output */"
|
||||
print "#define OPFLG_INITIALIZER {\\"
|
||||
for(i=0; i<=max; i++){
|
||||
if( i%8==0 ) printf("/* %3d */",i)
|
||||
printf " 0x%04x,", bv[i]
|
||||
printf " 0x%02x,", bv[i]
|
||||
if( i%8==7 ) printf("\\\n");
|
||||
}
|
||||
print "}"
|
||||
|
||||
Reference in New Issue
Block a user