|
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