These opcodes are used for optimizations and cached for the lifetime of the PHP process (across multiple requests).
These opcodes are used for optimizations and cached for the lifetime of the PHP process (across multiple requests).
Lower level bytecode lacks these higher level references (it usually has a lot of indices that index into raw lookup tables, but no real symbols that refer to results of computations and other variables).
Can you point me to some paper/reference about this? AFAIK it doesn't matter whether you have an AST or bytecode. Optimizations are done on an IR anyways.
That’s how I’ve always see “AST” used, but not the following:
yet can express the required data flows and dependencies so the trivial substitutions/replacements/caching and refactorings can be done at this level.
Is what you describe some flavor of ‘augmented’ AST? Does that have a name other than AST?