That leaves Question #2 and an Extra Thought
2) 'special_generic_ivar' - a) Is this to trigger Garbage Collection
ONLY for Special Constant Values?
- b) If it is - Is it because there is no real
object in Object Space to trigger GC?
2a) 'Special Constant' Values are defined as?
aa) rb_special_const_p(obj) returns TRUE if 'obj' is
a Special Constant Value:
rb_special_const_p(obj)
VALUE obj
{
if (SPECIAL_CONST_P(obj)) return Qtrue;
return Qfalse;
}
bb) SPECIAL_CONST_P(obj) returns TRUE if
( IMMEDIATE_P(obj) || !RTEST(obj) ) is TRUE
IMMEDIATE_P(obj) is TRUE if ( (obj) & 03 ) is non-zero
!RTEST(obj) is TRUE if obj = is not QNIL & is not QFALSE
Now am I crazy or does "rb_special_const_p(obj)" return TRUE
only if:
1) lsb 0 = 1 (FIXNUM)
2) lsb 1 = 1 (SYMBOL, TRUE, or UNDEF)
3) !RTEST == TRUE if ( not NIL and not FALSE)
WHY are QNIL and QFALSE excluded in a test for
non-reference VALUES??
Did I fail LOGIC 101? (Hope Not, I a Computer Science Degree!)
--
GodFather -- 667 Neighbor of the Beast