|
54 | 54 | import java.nio.charset.CharacterCodingException;
|
55 | 55 | import java.nio.charset.Charset;
|
56 | 56 | import java.nio.charset.CharsetDecoder;
|
57 |
| -import java.nio.charset.CharsetEncoder; |
58 | 57 | import java.nio.charset.CoderResult;
|
59 | 58 | import java.nio.charset.CodingErrorAction;
|
60 | 59 | import java.nio.charset.StandardCharsets;
|
|
81 | 80 | import com.oracle.graal.python.builtins.objects.bytes.PIBytesLike;
|
82 | 81 | import com.oracle.graal.python.builtins.objects.cext.CArrayWrappers.CByteArrayWrapper;
|
83 | 82 | import com.oracle.graal.python.builtins.objects.cext.CArrayWrappers.CStringWrapper;
|
84 |
| -import com.oracle.graal.python.builtins.objects.cext.common.CExtParseArgumentsNode; |
85 | 83 | import com.oracle.graal.python.builtins.objects.cext.CExtNodes;
|
86 | 84 | import com.oracle.graal.python.builtins.objects.cext.CExtNodes.CastToJavaDoubleNode;
|
87 | 85 | import com.oracle.graal.python.builtins.objects.cext.CExtNodes.GetNativeNullNode;
|
|
111 | 109 | import com.oracle.graal.python.builtins.objects.cext.PythonNativeWrapper;
|
112 | 110 | import com.oracle.graal.python.builtins.objects.cext.PythonNativeWrapperLibrary;
|
113 | 111 | import com.oracle.graal.python.builtins.objects.cext.UnicodeObjectNodes.UnicodeAsWideCharNode;
|
114 |
| -import com.oracle.graal.python.builtins.objects.cext.common.VaListWrapper; |
115 | 112 | import com.oracle.graal.python.builtins.objects.cext.common.CExtAsPythonObjectNode;
|
| 113 | +import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.EncodeNativeStringNode; |
116 | 114 | import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.PCallCExtFunction;
|
117 | 115 | import com.oracle.graal.python.builtins.objects.cext.common.CExtContext;
|
| 116 | +import com.oracle.graal.python.builtins.objects.cext.common.CExtParseArgumentsNode; |
| 117 | +import com.oracle.graal.python.builtins.objects.cext.common.VaListWrapper; |
118 | 118 | import com.oracle.graal.python.builtins.objects.code.PCode;
|
119 | 119 | import com.oracle.graal.python.builtins.objects.common.HashingCollectionNodes;
|
120 | 120 | import com.oracle.graal.python.builtins.objects.common.IndexNodes.NormalizeIndexNode;
|
@@ -1268,19 +1268,19 @@ protected NativeEncoderNode(Charset charset) {
|
1268 | 1268 | }
|
1269 | 1269 |
|
1270 | 1270 | @Specialization(guards = "isNoValue(errors)")
|
1271 |
| - Object doUnicode(VirtualFrame frame, PString s, @SuppressWarnings("unused") PNone errors, Object error_marker) { |
1272 |
| - return doUnicode(frame, s, "strict", error_marker); |
| 1271 | + Object doUnicode(VirtualFrame frame, PString s, @SuppressWarnings("unused") PNone errors, Object error_marker, |
| 1272 | + @Shared("encodeNode") @Cached EncodeNativeStringNode encodeNativeStringNode) { |
| 1273 | + return doUnicode(frame, s, "strict", error_marker, encodeNativeStringNode); |
1273 | 1274 | }
|
1274 | 1275 |
|
1275 | 1276 | @Specialization
|
1276 |
| - Object doUnicode(VirtualFrame frame, PString s, String errors, Object error_marker) { |
| 1277 | + Object doUnicode(VirtualFrame frame, PString s, String errors, Object error_marker, |
| 1278 | + @Shared("encodeNode") @Cached EncodeNativeStringNode encodeNativeStringNode) { |
1277 | 1279 | try {
|
1278 |
| - return factory().createBytes(doEncode(s, errors)); |
| 1280 | + return encodeNativeStringNode.execute(charset, s, errors); |
1279 | 1281 | } catch (PException e) {
|
1280 | 1282 | transformToNative(frame, e);
|
1281 | 1283 | return error_marker;
|
1282 |
| - } catch (CharacterCodingException e) { |
1283 |
| - return raiseNative(frame, error_marker, PythonErrorType.UnicodeEncodeError, "%m", e); |
1284 | 1284 | }
|
1285 | 1285 | }
|
1286 | 1286 |
|
|
0 commit comments