Practical example to reproduce:
- Install/get an image with SimulationStudio (for instance, the image from this bundle should do it)
- Do it:
Simulator evaluate: [1 + 2]
- Expected behavior: Answers
3
- Actual behavior: crash (
UnsupportedSpecializationException: Unexpected values provided for ContextObjectWriteNodeGen)
Minimal example to debug:
- Do it:
thisContext privSender: Object new.
- Expected behavior: A
cannotReturn: is put on the stack (and subsequently, the current project is emergency-exited because the debugger cannot display the stack, but the VM keeps alive - see OSVM for reference)
- Actual behavior: VM crashes, same error as above
It would be nice if TruffleSqueak could be more robust with regard to unusual contexts - just like the OpenSmalltalk VM, which does not raise an error unless the interpreter actually attempts to return to an invalid sender on the context.
For some background: SimulationStudio is relying on the possibility to put arbitrary objects (subinstances of Context) on the stack to modify the behavior of the image-side simulator while reusing the Context interface. These objects are never actually interpreted by the VM, but the simulation protocol on Context can handle them like regular contexts.
Practical example to reproduce:
3UnsupportedSpecializationException: Unexpected values provided forContextObjectWriteNodeGen)Minimal example to debug:
cannotReturn:is put on the stack (and subsequently, the current project is emergency-exited because the debugger cannot display the stack, but the VM keeps alive - see OSVM for reference)It would be nice if TruffleSqueak could be more robust with regard to unusual contexts - just like the OpenSmalltalk VM, which does not raise an error unless the interpreter actually attempts to return to an invalid sender on the context.
For some background: SimulationStudio is relying on the possibility to put arbitrary objects (subinstances of
Context) on the stack to modify the behavior of the image-side simulator while reusing theContextinterface. These objects are never actually interpreted by the VM, but the simulation protocol onContextcan handle them like regular contexts.