Fixing another bug in the method inlining improvement
parent
416707f327
commit
3ed4a82475
|
@ -61,16 +61,19 @@ M: callable splicing-nodes splicing-body ;
|
||||||
[ nip t ] [ 2drop f f ] if
|
[ nip t ] [ 2drop f f ] if
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
|
:: find-method-call ( class generic -- subclass/f ? )
|
||||||
|
object generic method-classes
|
||||||
|
[| last-class new-class |
|
||||||
|
class new-class classes-intersect? [
|
||||||
|
new-class class class< [
|
||||||
|
last-class new-class class-min
|
||||||
|
] [ object f ] if
|
||||||
|
] [ last-class t ] if
|
||||||
|
] all? ;
|
||||||
|
|
||||||
:: split-method-call ( class generic -- quot/f )
|
:: split-method-call ( class generic -- quot/f )
|
||||||
class object = [ f ] [
|
class object = [ f ] [
|
||||||
object generic method-classes
|
class generic find-method-call
|
||||||
[| last-class new-class |
|
|
||||||
class new-class classes-intersect? [
|
|
||||||
new-class class class<= [
|
|
||||||
last-class new-class class-min
|
|
||||||
] [ object f ] if
|
|
||||||
] [ last-class t ] if
|
|
||||||
] all?
|
|
||||||
[ generic split-code ] [ drop f ] if
|
[ generic split-code ] [ drop f ] if
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
|
|
|
@ -997,3 +997,5 @@ UNION: ?fixnum fixnum POSTPONE: f ;
|
||||||
|
|
||||||
[ t ] [ [ { ?fixnum } declare >fixnum ] { >fixnum } inlined? ] unit-test
|
[ t ] [ [ { ?fixnum } declare >fixnum ] { >fixnum } inlined? ] unit-test
|
||||||
[ f ] [ [ { integer } declare >fixnum ] { >fixnum } inlined? ] unit-test
|
[ f ] [ [ { integer } declare >fixnum ] { >fixnum } inlined? ] unit-test
|
||||||
|
|
||||||
|
[ f ] [ [ { word } declare parent-word ] { parent-word } inlined? ] unit-test
|
||||||
|
|
Loading…
Reference in New Issue