|
Hi list,
>From previous discussion, where Eliot mentioned about removal push/pop
remappable oop oddity and modifying GC to make it work w/o it, i'm
just thinking
- there was no need in having these methods from the very start.
Any oop at any time can be temporary pushed on stack and then popped
back again using #pop:/#push: methods.
Of course, primitives need to be careful to not override the
arguments, which can be reused in method when primitive fails - so
they should push values past the arguments.
But in most cases, a primitive creates new object(s) at the point,
where it needs to form a returned value - at this point most things is
done: arguments is read & already popped out of stack, values
calculated etc etc. So it is safe to put temporary values on stack,
making GC happy and without need in use push/popRemmappableOop.
Going in this way, there is no need in adding safety schemes, like
reserving extra free space and delaying GC before primitive finishes
working.
--
Best regards,
Igor Stasenko AKA sig.
|