id summary reporter owner description type status priority milestone component resolution keywords cc cvshead 105 STC compiled forces result of #<, #<=, ... to be a boolean jan vrany "..regardless of what a message actually returns. For example, assume following code: {{{ (self popI < 0) then:[ self goto: targetPC ] }}} when compiled by stc, result of `self popI < 0` is always a boolean (and always `false`) even if `#<` method returns another object! This is because STC tries to be smart and inlines fast !SmallInteger comparison to avoid send in common cases. It checks for both, receiver and argument being small integers but in a bad way: the code looks like: {{{ ( (isSmallInteger(rec) && isSmallInteger(arg)) // both smallints? ? __intVal(rec) < __intVal(arg) // if so, do a fast compare : __SSEND1(rec, @symbol(<), arg)== __STX_true // if not, perform a send ) ? __STX_true : __STX_false) }}} Of course, the check `==_STX_true) ? __STX_true : __STX_false` should be moved to inner branch doing the fast smallint compare. " defect new major stc 0