|
68 | 68 | import com.oracle.graal.python.builtins.objects.PNone;
|
69 | 69 | import com.oracle.graal.python.builtins.objects.bytes.BytesBuiltins;
|
70 | 70 | import com.oracle.graal.python.builtins.objects.bytes.BytesBuiltins.DecodeNode;
|
| 71 | +import com.oracle.graal.python.builtins.objects.bytes.PBytes; |
71 | 72 | import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
|
72 | 73 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
|
73 | 74 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.PRaiseNativeNode;
|
74 | 75 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.ToNewRefNode;
|
75 | 76 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.TransformExceptionToNativeNode;
|
| 77 | +import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.EncodeNativeStringNode; |
76 | 78 | import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.GetByteArrayNode;
|
77 | 79 | import com.oracle.graal.python.builtins.objects.ints.PInt;
|
78 | 80 | import com.oracle.graal.python.builtins.objects.memoryview.PMemoryView;
|
|
109 | 111 | import com.oracle.graal.python.util.OverflowException;
|
110 | 112 | import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
|
111 | 113 | import com.oracle.truffle.api.dsl.Cached;
|
| 114 | +import com.oracle.truffle.api.dsl.Cached.Shared; |
112 | 115 | import com.oracle.truffle.api.dsl.GenerateNodeFactory;
|
113 | 116 | import com.oracle.truffle.api.dsl.NodeFactory;
|
114 | 117 | import com.oracle.truffle.api.dsl.Specialization;
|
@@ -815,4 +818,23 @@ Object doDecode(VirtualFrame frame, PMemoryView mv, String encoding, String erro
|
815 | 818 | }
|
816 | 819 | }
|
817 | 820 | }
|
| 821 | + |
| 822 | + @Builtin(name = "PyUnicode_EncodeFSDefault", minNumOfPositionalArgs = 1) |
| 823 | + @GenerateNodeFactory |
| 824 | + abstract static class PyUnicodeEncodeFSDefaultNode extends PythonBuiltinNode { |
| 825 | + @Specialization |
| 826 | + PBytes fromObject(String s, |
| 827 | + @Shared("encode") @Cached EncodeNativeStringNode encode) { |
| 828 | + byte[] array = encode.execute(StandardCharsets.UTF_8, s, "replace"); |
| 829 | + return factory().createBytes(array); |
| 830 | + } |
| 831 | + |
| 832 | + @Specialization |
| 833 | + PBytes fromObject(Object s, |
| 834 | + @Cached CastToJavaStringNode castStr, |
| 835 | + @Shared("encode") @Cached EncodeNativeStringNode encode) { |
| 836 | + byte[] array = encode.execute(StandardCharsets.UTF_8, castStr.execute(s), "replace"); |
| 837 | + return factory().createBytes(array); |
| 838 | + } |
| 839 | + } |
818 | 840 | }
|
0 commit comments