[EMAIL PROTECTED] wrote:
Leo --
I don't know much about the CG core, but prederef and JIT should be able to work with dynamic optables. For prederef and JIT, optable mucking does expire your prederefed and JITted blocks (in general), but for conventional use (preamble setup), you don't pay a price during mainline execution once you've set up your optable.
Yep [ JITlike cg_core ]
... If so, then the hypothetical dynamic core construction approach just described would approach the speed of the CG core, but would fall somewhat short on workloads that involve lots of non-inline ops (FWIW, there are more inline ops than not in the current *.ops files).
Exactly here is the problem. Allmost all non integer/float stuff is unimplemented in JIT. You don't pay the price per non-inline ops, but per op not in JIT. In CG the op functions are not functions but code pieces, which get jumped too. JITed code (as long as implemented) is a linear sequence of the functions bodies (or better there asm equivalencies).
Then, you get CG (-esque) speed along with the dynamic capabilities. Its cheating, to be sure, but I like that kind of cheating. :)
If we are able to build such a system, yes.
But see "Of mops and microops" for yet another approach.
By splitting current opcodes to more fine grained pieces, we would
need less different ops alltogether, and it could be really fast.
Regards, -- Gregor
leo