
the trick is arranging to pay something at runtime for it only when you're actually using it.
When tracing is in effect, switch to another copy of ceval2() which contains extra code to do whatever grubby things are needed to detect the start of a line using the line starts table. (Search it before executing each opcode, expand it into a parallel array of flags, or whatever.) The two versions of ceval2() could be generated from the same source file with some #defines. Greg Ewing, Computer Science Dept, +--------------------------------------+ University of Canterbury, | A citizen of NewZealandCorp, a | Christchurch, New Zealand | wholly-owned subsidiary of USA Inc. | greg@cosc.canterbury.ac.nz +--------------------------------------+