70
70
import com .oracle .graal .python .builtins .objects .bytes .BytesBuiltins .ExpectIntNode ;
71
71
import com .oracle .graal .python .builtins .objects .bytes .BytesBuiltins .SepExpectByteNode ;
72
72
import com .oracle .graal .python .builtins .objects .bytes .BytesNodes ;
73
+ import com .oracle .graal .python .builtins .objects .bytes .PByteArray ;
73
74
import com .oracle .graal .python .builtins .objects .bytes .PBytes ;
74
75
import com .oracle .graal .python .builtins .objects .cext .capi .CExtNodes ;
75
76
import com .oracle .graal .python .builtins .objects .cext .capi .NativeCAPISymbols ;
@@ -175,7 +176,7 @@ public void postInitialize(PythonCore core) {
175
176
// It's a weakref, it may go away and in that case we don't have to do
176
177
// anything
177
178
if (owner != null ) {
178
- MemoryViewNodes . ReleaseBufferOfManagedObjectNode . getUncached (). execute ( owner );
179
+ releaseBufferOfManagedObject ( owner , ConditionProfile . getUncached ());
179
180
}
180
181
return null ;
181
182
}
@@ -762,10 +763,10 @@ Object releaseSimple(PMemoryView self) {
762
763
763
764
@ Specialization (guards = {"self.getReference() != null" , "!self.getManagedBuffer().isForNative()" })
764
765
Object releaseManaged (PMemoryView self ,
765
- @ Cached MemoryViewNodes . ReleaseBufferOfManagedObjectNode release ) {
766
+ @ Cached ConditionProfile isByteArrayProfile ) {
766
767
checkExports (self );
767
768
if (checkShouldReleaseBuffer (self )) {
768
- release . execute (self .getOwner ());
769
+ releaseBufferOfManagedObject (self .getOwner (), isByteArrayProfile );
769
770
}
770
771
self .setReleased ();
771
772
return PNone .NONE ;
@@ -807,6 +808,7 @@ private void checkExports(PMemoryView self) {
807
808
@ Builtin (name = "itemsize" , minNumOfPositionalArgs = 1 , isGetter = true )
808
809
@ GenerateNodeFactory
809
810
public abstract static class ItemSizeNode extends PythonUnaryBuiltinNode {
811
+
810
812
@ Specialization
811
813
int get (PMemoryView self ) {
812
814
self .checkReleased (this );
@@ -817,6 +819,7 @@ int get(PMemoryView self) {
817
819
@ Builtin (name = "nbytes" , minNumOfPositionalArgs = 1 , isGetter = true )
818
820
@ GenerateNodeFactory
819
821
public abstract static class NBytesNode extends PythonUnaryBuiltinNode {
822
+
820
823
@ Specialization
821
824
int get (PMemoryView self ) {
822
825
self .checkReleased (this );
@@ -827,6 +830,7 @@ int get(PMemoryView self) {
827
830
@ Builtin (name = "obj" , minNumOfPositionalArgs = 1 , isGetter = true )
828
831
@ GenerateNodeFactory
829
832
public abstract static class ObjNode extends PythonUnaryBuiltinNode {
833
+
830
834
@ Specialization
831
835
Object get (PMemoryView self ) {
832
836
self .checkReleased (this );
@@ -837,6 +841,7 @@ Object get(PMemoryView self) {
837
841
@ Builtin (name = "format" , minNumOfPositionalArgs = 1 , isGetter = true )
838
842
@ GenerateNodeFactory
839
843
public abstract static class FormatNode extends PythonUnaryBuiltinNode {
844
+
840
845
@ Specialization
841
846
Object get (PMemoryView self ) {
842
847
self .checkReleased (this );
@@ -847,6 +852,7 @@ Object get(PMemoryView self) {
847
852
@ Builtin (name = "shape" , minNumOfPositionalArgs = 1 , isGetter = true )
848
853
@ GenerateNodeFactory
849
854
public abstract static class ShapeNode extends PythonUnaryBuiltinNode {
855
+
850
856
@ Specialization
851
857
Object get (PMemoryView self ,
852
858
@ Cached ConditionProfile nullProfile ) {
@@ -861,6 +867,7 @@ Object get(PMemoryView self,
861
867
@ Builtin (name = "strides" , minNumOfPositionalArgs = 1 , isGetter = true )
862
868
@ GenerateNodeFactory
863
869
public abstract static class StridesNode extends PythonUnaryBuiltinNode {
870
+
864
871
@ Specialization
865
872
Object get (PMemoryView self ,
866
873
@ Cached ConditionProfile nullProfile ) {
@@ -875,6 +882,7 @@ Object get(PMemoryView self,
875
882
@ Builtin (name = "suboffsets" , minNumOfPositionalArgs = 1 , isGetter = true )
876
883
@ GenerateNodeFactory
877
884
public abstract static class SuboffsetsNode extends PythonUnaryBuiltinNode {
885
+
878
886
@ Specialization
879
887
Object get (PMemoryView self ,
880
888
@ Cached ConditionProfile nullProfile ) {
@@ -889,6 +897,7 @@ Object get(PMemoryView self,
889
897
@ Builtin (name = "readonly" , minNumOfPositionalArgs = 1 , isGetter = true )
890
898
@ GenerateNodeFactory
891
899
public abstract static class ReadonlyNode extends PythonUnaryBuiltinNode {
900
+
892
901
@ Specialization
893
902
boolean get (PMemoryView self ) {
894
903
self .checkReleased (this );
@@ -899,6 +908,7 @@ boolean get(PMemoryView self) {
899
908
@ Builtin (name = "ndim" , minNumOfPositionalArgs = 1 , isGetter = true )
900
909
@ GenerateNodeFactory
901
910
public abstract static class NDimNode extends PythonUnaryBuiltinNode {
911
+
902
912
@ Specialization
903
913
int get (PMemoryView self ) {
904
914
self .checkReleased (this );
@@ -909,6 +919,7 @@ int get(PMemoryView self) {
909
919
@ Builtin (name = "c_contiguous" , minNumOfPositionalArgs = 1 , isGetter = true )
910
920
@ GenerateNodeFactory
911
921
public abstract static class CContiguousNode extends PythonUnaryBuiltinNode {
922
+
912
923
@ Specialization
913
924
boolean get (PMemoryView self ) {
914
925
self .checkReleased (this );
@@ -919,6 +930,7 @@ boolean get(PMemoryView self) {
919
930
@ Builtin (name = "f_contiguous" , minNumOfPositionalArgs = 1 , isGetter = true )
920
931
@ GenerateNodeFactory
921
932
public abstract static class FContiguousNode extends PythonUnaryBuiltinNode {
933
+
922
934
@ Specialization
923
935
boolean get (PMemoryView self ) {
924
936
self .checkReleased (this );
@@ -929,10 +941,17 @@ boolean get(PMemoryView self) {
929
941
@ Builtin (name = "contiguous" , minNumOfPositionalArgs = 1 , isGetter = true )
930
942
@ GenerateNodeFactory
931
943
public abstract static class ContiguousNode extends PythonUnaryBuiltinNode {
944
+
932
945
@ Specialization
933
946
boolean get (PMemoryView self ) {
934
947
self .checkReleased (this );
935
948
return self .isCContiguous () || self .isFortranContiguous ();
936
949
}
937
950
}
951
+
952
+ private static void releaseBufferOfManagedObject (Object object , ConditionProfile isByteArrayProfile ) {
953
+ if (isByteArrayProfile .profile (object instanceof PByteArray )) {
954
+ // TODO GR-26945
955
+ }
956
+ }
938
957
}
0 commit comments