@@ -446,23 +446,26 @@ static Object doPythonClassUncached(@SuppressWarnings("unused") CExtContext cext
446
446
return PythonClassNativeWrapper .wrap (object , getNameNode .execute (object ));
447
447
}
448
448
449
- @ Specialization (guards = {"cachedClass == object.getClass()" , "!isClass(object)" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, limit = "3" )
449
+ @ Specialization (guards = {"cachedClass == object.getClass()" , "!isClass(object, lib )" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, limit = "3" )
450
450
static Object runAbstractObjectCached (@ SuppressWarnings ("unused" ) CExtContext cextContext , PythonAbstractObject object ,
451
451
@ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ,
452
- @ Cached ("object.getClass()" ) Class <? extends PythonAbstractObject > cachedClass ) {
452
+ @ Cached ("object.getClass()" ) Class <? extends PythonAbstractObject > cachedClass ,
453
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
453
454
assert object != PNone .NO_VALUE ;
454
455
return PythonObjectNativeWrapper .wrap (CompilerDirectives .castExact (object , cachedClass ), noWrapperProfile );
455
456
}
456
457
457
- @ Specialization (guards = {"!isClass(object)" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, replaces = "runAbstractObjectCached" )
458
+ @ Specialization (guards = {"!isClass(object, lib )" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, replaces = "runAbstractObjectCached" , limit = "3 " )
458
459
static Object runAbstractObject (@ SuppressWarnings ("unused" ) CExtContext cextContext , PythonAbstractObject object ,
459
- @ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ) {
460
+ @ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ,
461
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
460
462
assert object != PNone .NO_VALUE ;
461
463
return PythonObjectNativeWrapper .wrap (object , noWrapperProfile );
462
464
}
463
465
464
- @ Specialization (guards = {"isForeignTruffleObject(object)" , "!isNativeWrapper(object)" , "!isNativeNull(object)" })
465
- static Object doForeignObject (@ SuppressWarnings ("unused" ) CExtContext cextContext , TruffleObject object ) {
466
+ @ Specialization (guards = {"isForeignObject(object, lib)" , "!isNativeWrapper(object)" , "!isNativeNull(object)" }, limit = "3" )
467
+ static Object doForeignObject (@ SuppressWarnings ("unused" ) CExtContext cextContext , TruffleObject object ,
468
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
466
469
return TruffleObjectNativeWrapper .wrap (object );
467
470
}
468
471
@@ -681,25 +684,28 @@ static Object doPythonClassUncached(@SuppressWarnings("unused") CExtContext cext
681
684
return PythonClassNativeWrapper .wrapNewRef (object , getNameNode .execute (object ));
682
685
}
683
686
684
- @ Specialization (guards = {"cachedClass == object.getClass()" , "!isClass(object)" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, limit = "3" )
687
+ @ Specialization (guards = {"cachedClass == object.getClass()" , "!isClass(object, lib )" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, limit = "3" )
685
688
static Object runAbstractObjectCached (@ SuppressWarnings ("unused" ) CExtContext cextContext , PythonAbstractObject object ,
686
689
@ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ,
687
- @ Cached ("object.getClass()" ) Class <? extends PythonAbstractObject > cachedClass ) {
690
+ @ Cached ("object.getClass()" ) Class <? extends PythonAbstractObject > cachedClass ,
691
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
688
692
assert object != PNone .NO_VALUE ;
689
693
return PythonObjectNativeWrapper .wrapNewRef (CompilerDirectives .castExact (object , cachedClass ), noWrapperProfile );
690
694
}
691
695
692
- @ Specialization (guards = {"!isClass(object)" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, replaces = "runAbstractObjectCached" )
696
+ @ Specialization (guards = {"!isClass(object, lib )" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, replaces = "runAbstractObjectCached" , limit = "3 " )
693
697
static Object runAbstractObject (@ SuppressWarnings ("unused" ) CExtContext cextContext , PythonAbstractObject object ,
694
- @ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ) {
698
+ @ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ,
699
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
695
700
assert object != PNone .NO_VALUE ;
696
701
return PythonObjectNativeWrapper .wrapNewRef (object , noWrapperProfile );
697
702
}
698
703
699
- @ Specialization (guards = {"isForeignTruffleObject(object)" , "!isNativeWrapper(object)" , "!isNativeNull(object)" })
700
- static Object doForeignObject (CExtContext cextContext , TruffleObject object ) {
704
+ @ Specialization (guards = {"isForeignObject(object, lib)" , "!isNativeWrapper(object)" , "!isNativeNull(object)" }, limit = "3" )
705
+ static Object doForeignObject (CExtContext cextContext , TruffleObject object ,
706
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
701
707
// this will always be a new wrapper; it's implicitly always a new reference in any case
702
- return ToSulongNode .doForeignObject (cextContext , object );
708
+ return ToSulongNode .doForeignObject (cextContext , object , lib );
703
709
}
704
710
705
711
@ Specialization (guards = "isFallback(object, lib)" , limit = "1" )
@@ -837,25 +843,28 @@ static Object doPythonClassUncached(@SuppressWarnings("unused") CExtContext cext
837
843
return PythonClassNativeWrapper .wrapNewRef (object , getNameNode .execute (object ));
838
844
}
839
845
840
- @ Specialization (guards = {"cachedClass == object.getClass()" , "!isClass(object)" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, limit = "3" )
846
+ @ Specialization (guards = {"cachedClass == object.getClass()" , "!isClass(object, lib )" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, limit = "3" )
841
847
static Object runAbstractObjectCached (@ SuppressWarnings ("unused" ) CExtContext cextContext , PythonAbstractObject object ,
842
848
@ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ,
843
- @ Cached ("object.getClass()" ) Class <? extends PythonAbstractObject > cachedClass ) {
849
+ @ Cached ("object.getClass()" ) Class <? extends PythonAbstractObject > cachedClass ,
850
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
844
851
assert object != PNone .NO_VALUE ;
845
852
return PythonObjectNativeWrapper .wrapNewRef (CompilerDirectives .castExact (object , cachedClass ), noWrapperProfile );
846
853
}
847
854
848
- @ Specialization (guards = {"!isClass(object)" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, replaces = "runAbstractObjectCached" )
855
+ @ Specialization (guards = {"!isClass(object, lib )" , "!isNativeObject(object)" , "!isSpecialSingleton(object)" }, replaces = "runAbstractObjectCached" , limit = "3 " )
849
856
static Object runAbstractObject (@ SuppressWarnings ("unused" ) CExtContext cextContext , PythonAbstractObject object ,
850
- @ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ) {
857
+ @ Cached ("createBinaryProfile()" ) ConditionProfile noWrapperProfile ,
858
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
851
859
assert object != PNone .NO_VALUE ;
852
860
return PythonObjectNativeWrapper .wrapNewRef (object , noWrapperProfile );
853
861
}
854
862
855
- @ Specialization (guards = {"isForeignTruffleObject(object)" , "!isNativeWrapper(object)" , "!isNativeNull(object)" })
856
- static Object doForeignObject (CExtContext cextContext , TruffleObject object ) {
863
+ @ Specialization (guards = {"isForeignObject(object, lib)" , "!isNativeWrapper(object)" , "!isNativeNull(object)" }, limit = "3" )
864
+ static Object doForeignObject (CExtContext cextContext , TruffleObject object ,
865
+ @ SuppressWarnings ("unused" ) @ CachedLibrary ("object" ) InteropLibrary lib ) {
857
866
// this will always be a new wrapper; it's implicitly always a new reference in any case
858
- return ToSulongNode .doForeignObject (cextContext , object );
867
+ return ToSulongNode .doForeignObject (cextContext , object , lib );
859
868
}
860
869
861
870
@ Specialization (guards = "isFallback(object, lib)" , limit = "1" )
0 commit comments