[truetype] Add rudimentary tracing for bytecode instructions.
* src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New array. (TT_RunIns): Trace opcodes.
This commit is contained in:
parent
6305b869d8
commit
462ddb4072
@ -1,3 +1,11 @@
|
||||
2010-07-01 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[truetype] Add rudimentary tracing for bytecode instructions.
|
||||
|
||||
* src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New
|
||||
array.
|
||||
(TT_RunIns): Trace opcodes.
|
||||
|
||||
2010-06-30 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Fix Savannah bug #30263.
|
||||
|
@ -1112,6 +1112,287 @@
|
||||
};
|
||||
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
static
|
||||
const char* const opcode_name[256] =
|
||||
{
|
||||
"SVTCA y",
|
||||
"SVTCA x",
|
||||
"SPvTCA y",
|
||||
"SPvTCA x",
|
||||
"SFvTCA y",
|
||||
"SFvTCA x",
|
||||
"SPvTL ||",
|
||||
"SPvTL +",
|
||||
"SFvTL ||",
|
||||
"SFvTL +",
|
||||
"SPvFS",
|
||||
"SFvFS",
|
||||
"GPV",
|
||||
"GFV",
|
||||
"SFvTPv",
|
||||
"ISECT",
|
||||
|
||||
"SRP0",
|
||||
"SRP1",
|
||||
"SRP2",
|
||||
"SZP0",
|
||||
"SZP1",
|
||||
"SZP2",
|
||||
"SZPS",
|
||||
"SLOOP",
|
||||
"RTG",
|
||||
"RTHG",
|
||||
"SMD",
|
||||
"ELSE",
|
||||
"JMPR",
|
||||
"SCvTCi",
|
||||
"SSwCi",
|
||||
"SSW",
|
||||
|
||||
"DUP",
|
||||
"POP",
|
||||
"CLEAR",
|
||||
"SWAP",
|
||||
"DEPTH",
|
||||
"CINDEX",
|
||||
"MINDEX",
|
||||
"AlignPTS",
|
||||
"INS_$28",
|
||||
"UTP",
|
||||
"LOOPCALL",
|
||||
"CALL",
|
||||
"FDEF",
|
||||
"ENDF",
|
||||
"MDAP[0]",
|
||||
"MDAP[1]",
|
||||
|
||||
"IUP[0]",
|
||||
"IUP[1]",
|
||||
"SHP[0]",
|
||||
"SHP[1]",
|
||||
"SHC[0]",
|
||||
"SHC[1]",
|
||||
"SHZ[0]",
|
||||
"SHZ[1]",
|
||||
"SHPIX",
|
||||
"IP",
|
||||
"MSIRP[0]",
|
||||
"MSIRP[1]",
|
||||
"AlignRP",
|
||||
"RTDG",
|
||||
"MIAP[0]",
|
||||
"MIAP[1]",
|
||||
|
||||
"NPushB",
|
||||
"NPushW",
|
||||
"WS",
|
||||
"RS",
|
||||
"WCvtP",
|
||||
"RCvt",
|
||||
"GC[0]",
|
||||
"GC[1]",
|
||||
"SCFS",
|
||||
"MD[0]",
|
||||
"MD[1]",
|
||||
"MPPEM",
|
||||
"MPS",
|
||||
"FlipON",
|
||||
"FlipOFF",
|
||||
"DEBUG",
|
||||
|
||||
"LT",
|
||||
"LTEQ",
|
||||
"GT",
|
||||
"GTEQ",
|
||||
"EQ",
|
||||
"NEQ",
|
||||
"ODD",
|
||||
"EVEN",
|
||||
"IF",
|
||||
"EIF",
|
||||
"AND",
|
||||
"OR",
|
||||
"NOT",
|
||||
"DeltaP1",
|
||||
"SDB",
|
||||
"SDS",
|
||||
|
||||
"ADD",
|
||||
"SUB",
|
||||
"DIV",
|
||||
"MUL",
|
||||
"ABS",
|
||||
"NEG",
|
||||
"FLOOR",
|
||||
"CEILING",
|
||||
"ROUND[0]",
|
||||
"ROUND[1]",
|
||||
"ROUND[2]",
|
||||
"ROUND[3]",
|
||||
"NROUND[0]",
|
||||
"NROUND[1]",
|
||||
"NROUND[2]",
|
||||
"NROUND[3]",
|
||||
|
||||
"WCvtF",
|
||||
"DeltaP2",
|
||||
"DeltaP3",
|
||||
"DeltaCn[0]",
|
||||
"DeltaCn[1]",
|
||||
"DeltaCn[2]",
|
||||
"SROUND",
|
||||
"S45Round",
|
||||
"JROT",
|
||||
"JROF",
|
||||
"ROFF",
|
||||
"INS_$7B",
|
||||
"RUTG",
|
||||
"RDTG",
|
||||
"SANGW",
|
||||
"AA",
|
||||
|
||||
"FlipPT",
|
||||
"FlipRgON",
|
||||
"FlipRgOFF",
|
||||
"INS_$83",
|
||||
"INS_$84",
|
||||
"ScanCTRL",
|
||||
"SDVPTL[0]",
|
||||
"SDVPTL[1]",
|
||||
"GetINFO",
|
||||
"IDEF",
|
||||
"ROLL",
|
||||
"MAX",
|
||||
"MIN",
|
||||
"ScanTYPE",
|
||||
"InstCTRL",
|
||||
"INS_$8F",
|
||||
|
||||
"INS_$90",
|
||||
"INS_$91",
|
||||
"INS_$92",
|
||||
"INS_$93",
|
||||
"INS_$94",
|
||||
"INS_$95",
|
||||
"INS_$96",
|
||||
"INS_$97",
|
||||
"INS_$98",
|
||||
"INS_$99",
|
||||
"INS_$9A",
|
||||
"INS_$9B",
|
||||
"INS_$9C",
|
||||
"INS_$9D",
|
||||
"INS_$9E",
|
||||
"INS_$9F",
|
||||
|
||||
"INS_$A0",
|
||||
"INS_$A1",
|
||||
"INS_$A2",
|
||||
"INS_$A3",
|
||||
"INS_$A4",
|
||||
"INS_$A5",
|
||||
"INS_$A6",
|
||||
"INS_$A7",
|
||||
"INS_$A8",
|
||||
"INS_$A9",
|
||||
"INS_$AA",
|
||||
"INS_$AB",
|
||||
"INS_$AC",
|
||||
"INS_$AD",
|
||||
"INS_$AE",
|
||||
"INS_$AF",
|
||||
|
||||
"PushB[0]",
|
||||
"PushB[1]",
|
||||
"PushB[2]",
|
||||
"PushB[3]",
|
||||
"PushB[4]",
|
||||
"PushB[5]",
|
||||
"PushB[6]",
|
||||
"PushB[7]",
|
||||
"PushW[0]",
|
||||
"PushW[1]",
|
||||
"PushW[2]",
|
||||
"PushW[3]",
|
||||
"PushW[4]",
|
||||
"PushW[5]",
|
||||
"PushW[6]",
|
||||
"PushW[7]",
|
||||
|
||||
"MDRP[00]",
|
||||
"MDRP[01]",
|
||||
"MDRP[02]",
|
||||
"MDRP[03]",
|
||||
"MDRP[04]",
|
||||
"MDRP[05]",
|
||||
"MDRP[06]",
|
||||
"MDRP[07]",
|
||||
"MDRP[08]",
|
||||
"MDRP[09]",
|
||||
"MDRP[10]",
|
||||
"MDRP[11]",
|
||||
"MDRP[12]",
|
||||
"MDRP[13]",
|
||||
"MDRP[14]",
|
||||
"MDRP[15]",
|
||||
|
||||
"MDRP[16]",
|
||||
"MDRP[17]",
|
||||
"MDRP[18]",
|
||||
"MDRP[19]",
|
||||
"MDRP[20]",
|
||||
"MDRP[21]",
|
||||
"MDRP[22]",
|
||||
"MDRP[23]",
|
||||
"MDRP[24]",
|
||||
"MDRP[25]",
|
||||
"MDRP[26]",
|
||||
"MDRP[27]",
|
||||
"MDRP[28]",
|
||||
"MDRP[29]",
|
||||
"MDRP[30]",
|
||||
"MDRP[31]",
|
||||
|
||||
"MIRP[00]",
|
||||
"MIRP[01]",
|
||||
"MIRP[02]",
|
||||
"MIRP[03]",
|
||||
"MIRP[04]",
|
||||
"MIRP[05]",
|
||||
"MIRP[06]",
|
||||
"MIRP[07]",
|
||||
"MIRP[08]",
|
||||
"MIRP[09]",
|
||||
"MIRP[10]",
|
||||
"MIRP[11]",
|
||||
"MIRP[12]",
|
||||
"MIRP[13]",
|
||||
"MIRP[14]",
|
||||
"MIRP[15]",
|
||||
|
||||
"MIRP[16]",
|
||||
"MIRP[17]",
|
||||
"MIRP[18]",
|
||||
"MIRP[19]",
|
||||
"MIRP[20]",
|
||||
"MIRP[21]",
|
||||
"MIRP[22]",
|
||||
"MIRP[23]",
|
||||
"MIRP[24]",
|
||||
"MIRP[25]",
|
||||
"MIRP[26]",
|
||||
"MIRP[27]",
|
||||
"MIRP[28]",
|
||||
"MIRP[29]",
|
||||
"MIRP[30]",
|
||||
"MIRP[31]"
|
||||
};
|
||||
|
||||
#endif /* FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
static
|
||||
const FT_Char opcode_length[256] =
|
||||
{
|
||||
@ -4571,7 +4852,7 @@
|
||||
}
|
||||
|
||||
def->opc = (FT_Byte)args[0];
|
||||
def->start = CUR.IP+1;
|
||||
def->start = CUR.IP + 1;
|
||||
def->range = CUR.curRange;
|
||||
def->active = TRUE;
|
||||
|
||||
@ -6773,7 +7054,7 @@
|
||||
call = CUR.callStack + CUR.callTop++;
|
||||
|
||||
call->Caller_Range = CUR.curRange;
|
||||
call->Caller_IP = CUR.IP+1;
|
||||
call->Caller_IP = CUR.IP + 1;
|
||||
call->Cur_Count = 1;
|
||||
call->Cur_Restart = def->start;
|
||||
|
||||
@ -7142,6 +7423,10 @@
|
||||
{
|
||||
CUR.opcode = CUR.code[CUR.IP];
|
||||
|
||||
FT_TRACE7(( " " ));
|
||||
FT_TRACE7(( opcode_name[CUR.opcode] ));
|
||||
FT_TRACE7(( "\n" ));
|
||||
|
||||
if ( ( CUR.length = opcode_length[CUR.opcode] ) < 0 )
|
||||
{
|
||||
if ( CUR.IP + 1 > CUR.codeSize )
|
||||
|
Loading…
Reference in New Issue
Block a user