At 10:30 AM -0800 2/26/02, Hong Zhang wrote: > > >That's (potentially) an awfully big table. But maybe I'm missing the >point. >> >If we're not trusting the bytecode to be safe, and this table is part of >the >> >bytecode, how do we know the table is safe? >> >> We vet the table at load time to make sure it's safe. That way we >> avoid the cost of checking that the destination is valid for every >> opcode branch and jump. Otherwise we need to check that the >> destination of a branch is actually an opcode. (To avoid jumping into >> data and suchlike things) > >The jump target table can be generated by linear scan the bytecode. So there >is no real benefit for including it in the class file, otherwise we have to >verify the table itself, which is another linear algorithm (at least).
Good point. If we can't trust the bytecode, it's not like we can trust the valid jump table anyway. >The KVM of Java includes pre-verify info, which serves similar purpose. The >reason behind is Java bytecode verification is (kind of) NP-complete. By >using >pre-verify info, the problem can be reduced to linear in most case. (No one >prove it mathmatically, but you got the idea.) Hmmm. Can you trust it? Seems like it wouldn't help drop the time, since you'd need to verify the pre-verify info, though I suppose verifying the information might be faster than constructing it from the bytecode. -- Dan --------------------------------------"it's like this"------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk