|
73 | 73 | import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
|
74 | 74 | import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
|
75 | 75 | import com.oracle.graal.python.builtins.objects.cext.capi.CApiGuards;
|
76 |
| -import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes; |
| 76 | +import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.PCallCapiFunction; |
77 | 77 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.ToSulongNode;
|
78 | 78 | import com.oracle.graal.python.builtins.objects.cext.capi.NativeMember;
|
79 | 79 | import com.oracle.graal.python.builtins.objects.cext.capi.PySequenceArrayWrapper;
|
80 | 80 | import com.oracle.graal.python.builtins.objects.cext.capi.PythonNativeWrapper;
|
81 | 81 | import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
|
82 | 82 | import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
|
83 |
| -import com.oracle.graal.python.builtins.objects.cext.common.CArrayWrappers; |
84 | 83 | import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.GetByteArrayNode;
|
85 | 84 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
|
86 | 85 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemScalarNode;
|
87 | 86 | import com.oracle.graal.python.builtins.objects.ints.PInt;
|
88 |
| -import com.oracle.graal.python.builtins.objects.str.PString; |
89 | 87 | import com.oracle.graal.python.builtins.objects.str.StringBuiltins.EncodeNode;
|
90 | 88 | import com.oracle.graal.python.builtins.objects.str.StringBuiltins.ModNode;
|
91 | 89 | import com.oracle.graal.python.lib.PyBytesCheckNode;
|
|
97 | 95 | import com.oracle.graal.python.nodes.PRaiseNode;
|
98 | 96 | import com.oracle.graal.python.nodes.classes.IsSubtypeNode;
|
99 | 97 | import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
|
| 98 | +import com.oracle.graal.python.nodes.object.InlinedGetClassNode.GetPythonObjectClassNode; |
100 | 99 | import com.oracle.graal.python.nodes.util.CastToByteNode;
|
101 |
| -import com.oracle.graal.python.nodes.util.CastToTruffleStringNode; |
102 | 100 | import com.oracle.graal.python.runtime.exception.PythonErrorType;
|
103 | 101 | import com.oracle.graal.python.runtime.sequence.storage.ByteSequenceStorage;
|
104 | 102 | import com.oracle.graal.python.runtime.sequence.storage.SequenceStorage;
|
@@ -132,7 +130,7 @@ Object doOther(PythonAbstractNativeObject obj,
|
132 | 130 | @Bind("this") Node inliningTarget,
|
133 | 131 | @Cached PyBytesCheckNode check,
|
134 | 132 | @Cached ToSulongNode toSulongNode,
|
135 |
| - @Cached CExtNodes.PCallCapiFunction callMemberGetterNode) { |
| 133 | + @Cached PCallCapiFunction callMemberGetterNode) { |
136 | 134 | if (check.execute(inliningTarget, obj)) {
|
137 | 135 | return callMemberGetterNode.call(NativeMember.OB_SIZE.getGetterFunctionName(), toSulongNode.execute(obj));
|
138 | 136 | }
|
@@ -407,21 +405,20 @@ static Object doBytes(PBytes bytes) {
|
407 | 405 | }
|
408 | 406 |
|
409 | 407 | @Specialization
|
410 |
| - static Object doUnicode(PString str, |
411 |
| - @Cached CastToTruffleStringNode castToStringNode) { |
412 |
| - return new CArrayWrappers.CStringWrapper(castToStringNode.execute(str)); |
413 |
| - } |
414 |
| - |
415 |
| - @Specialization |
416 |
| - static Object doNative(PythonAbstractNativeObject obj, |
417 |
| - @Cached CExtNodes.ToSulongNode toSulong, |
418 |
| - @Cached CExtNodes.PCallCapiFunction callMemberGetterNode) { |
419 |
| - return callMemberGetterNode.call(NativeMember.OB_SVAL.getGetterFunctionName(), toSulong.execute(obj)); |
| 408 | + Object doNative(PythonAbstractNativeObject obj, |
| 409 | + @Cached GetPythonObjectClassNode getClassNode, |
| 410 | + @Cached IsSubtypeNode isSubtypeNode, |
| 411 | + @Cached ToSulongNode toSulong, |
| 412 | + @Cached PCallCapiFunction callMemberGetterNode) { |
| 413 | + if (isSubtypeNode.execute(getClassNode.execute(this, obj), PythonBuiltinClassType.PBytes)) { |
| 414 | + return callMemberGetterNode.call(NativeMember.OB_SVAL.getGetterFunctionName(), toSulong.execute(obj)); |
| 415 | + } |
| 416 | + return doError(obj); |
420 | 417 | }
|
421 | 418 |
|
422 | 419 | @Fallback
|
423 |
| - Object doUnicode(Object o) { |
424 |
| - throw raise(PythonErrorType.TypeError, ErrorMessages.EXPECTED_S_P_FOUND, "bytes", o); |
| 420 | + Object doError(Object obj) { |
| 421 | + throw raise(PythonErrorType.TypeError, ErrorMessages.EXPECTED_S_P_FOUND, "bytes", obj); |
425 | 422 | }
|
426 | 423 | }
|
427 | 424 | }
|
0 commit comments