Summary
Extract the interpreter call-path methods from FunctionValue / GeneratorValue so those shared units stop depending on the evaluator.
Why
Goccia.Values.FunctionValue.pas and Goccia.Values.GeneratorValue.pas uses Goccia.Evaluator and call EvaluateExpression on their interpreter call paths, while the VM uses its own TGocciaBytecodeFunctionValue.Call. Those references keep the evaluator linked into every binary.
Current behavior
The shared value units embed interpreter-only Call / ExecuteFunctionBody paths that call into the evaluator.
Expected behavior
- The interpreter call paths are removed or relocated so
FunctionValue / GeneratorValue no longer use the evaluator.
Scope notes
Summary
Extract the interpreter call-path methods from
FunctionValue/GeneratorValueso those shared units stop depending on the evaluator.Why
Goccia.Values.FunctionValue.pasandGoccia.Values.GeneratorValue.pasuses Goccia.Evaluatorand callEvaluateExpressionon their interpreter call paths, while the VM uses its ownTGocciaBytecodeFunctionValue.Call. Those references keep the evaluator linked into every binary.Current behavior
The shared value units embed interpreter-only
Call/ExecuteFunctionBodypaths that call into the evaluator.Expected behavior
FunctionValue/GeneratorValueno longerusethe evaluator.Scope notes