aboutsummaryrefslogtreecommitdiff
path: root/src/node_i18n.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-05-26 22:34:51 +0200
committerMichaël Zasso <targos@protonmail.com>2019-05-31 08:46:54 +0200
commit1a179e1736695a8a8dfcad97828df9160cbd4839 (patch)
tree51d80f4cf1261c55bc0fdc308e31fca633b3331e /src/node_i18n.cc
parentb9cc4072e640244d07f4202cc63a1620487118a6 (diff)
downloadandroid-node-v8-1a179e1736695a8a8dfcad97828df9160cbd4839.tar.gz
android-node-v8-1a179e1736695a8a8dfcad97828df9160cbd4839.tar.bz2
android-node-v8-1a179e1736695a8a8dfcad97828df9160cbd4839.zip
src: use ArrayBufferViewContents more frequently
Using `ArrayBufferViewContents` over `Buffer::Data()`/`Buffer::Length()` or `SPREAD_BUFFER_ARG` has the advantages of creating fewer individual variables to keep track off, not being a “magic” macro that creates variables, reducing code size, and being faster when receiving on-heap TypedArrays. PR-URL: https://github.com/nodejs/node/pull/27920 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'src/node_i18n.cc')
-rw-r--r--src/node_i18n.cc14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/node_i18n.cc b/src/node_i18n.cc
index 8ccda35056..ad5c828392 100644
--- a/src/node_i18n.cc
+++ b/src/node_i18n.cc
@@ -205,14 +205,13 @@ class ConverterObject : public BaseObject, Converter {
ConverterObject* converter;
ASSIGN_OR_RETURN_UNWRAP(&converter, args[0].As<Object>());
- SPREAD_BUFFER_ARG(args[1], input_obj);
+ ArrayBufferViewContents<char> input(args[1]);
int flags = args[2]->Uint32Value(env->context()).ToChecked();
UErrorCode status = U_ZERO_ERROR;
MaybeStackBuffer<UChar> result;
MaybeLocal<Object> ret;
- size_t limit = ucnv_getMinCharSize(converter->conv) *
- input_obj_length;
+ size_t limit = ucnv_getMinCharSize(converter->conv) * input.length();
if (limit > 0)
result.AllocateSufficientStorage(limit);
@@ -225,8 +224,8 @@ class ConverterObject : public BaseObject, Converter {
}
});
- const char* source = input_obj_data;
- size_t source_length = input_obj_length;
+ const char* source = input.data();
+ size_t source_length = input.length();
if (converter->unicode_ && !converter->ignoreBOM_ && !converter->bomSeen_) {
int32_t bomOffset = 0;
@@ -455,8 +454,7 @@ void Transcode(const FunctionCallbackInfo<Value>&args) {
UErrorCode status = U_ZERO_ERROR;
MaybeLocal<Object> result;
- CHECK(Buffer::HasInstance(args[0]));
- SPREAD_BUFFER_ARG(args[0], ts_obj);
+ ArrayBufferViewContents<char> input(args[0]);
const enum encoding fromEncoding = ParseEncoding(isolate, args[1], BUFFER);
const enum encoding toEncoding = ParseEncoding(isolate, args[2], BUFFER);
@@ -490,7 +488,7 @@ void Transcode(const FunctionCallbackInfo<Value>&args) {
}
result = tfn(env, EncodingName(fromEncoding), EncodingName(toEncoding),
- ts_obj_data, ts_obj_length, &status);
+ input.data(), input.length(), &status);
} else {
status = U_ILLEGAL_ARGUMENT_ERROR;
}