diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2017-02-02 23:23:49 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2017-02-13 19:16:14 +0100 |
commit | c30fc8d49575b4c41ec0798ed64874b1daa5acd3 (patch) | |
tree | 2b8716407f49cb33018e640b15dd9ae0ac2f58fb /src | |
parent | f2023d7b6f88d3e9c8fbcee0d2615afbc947f0ca (diff) | |
download | android-node-v8-c30fc8d49575b4c41ec0798ed64874b1daa5acd3.tar.gz android-node-v8-c30fc8d49575b4c41ec0798ed64874b1daa5acd3.tar.bz2 android-node-v8-c30fc8d49575b4c41ec0798ed64874b1daa5acd3.zip |
src: support UTF-8 in compiled-in JS source files
Detect it when source files in lib/ are not ASCII. Decode them as UTF-8
and store them as UTF-16 in the binary so they can be used as external
string resources without non-ASCII characters getting mangled.
Fixes: https://github.com/nodejs/node/issues/10673
PR-URL: https://github.com/nodejs/node/pull/11129
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/node_javascript.cc | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/src/node_javascript.cc b/src/node_javascript.cc deleted file mode 100644 index 3f6d6c82a8..0000000000 --- a/src/node_javascript.cc +++ /dev/null @@ -1,51 +0,0 @@ -#include "node.h" -#include "node_natives.h" -#include "v8.h" -#include "env.h" -#include "env-inl.h" - -namespace node { - -using v8::Local; -using v8::NewStringType; -using v8::Object; -using v8::String; - -// id##_data is defined in node_natives.h. -#define V(id) \ - static struct : public String::ExternalOneByteStringResource { \ - const char* data() const override { \ - return reinterpret_cast<const char*>(id##_data); \ - } \ - size_t length() const override { return sizeof(id##_data); } \ - void Dispose() override { /* Default calls `delete this`. */ } \ - } id##_external_data; -NODE_NATIVES_MAP(V) -#undef V - -Local<String> MainSource(Environment* env) { - auto maybe_string = - String::NewExternalOneByte( - env->isolate(), - &internal_bootstrap_node_external_data); - return maybe_string.ToLocalChecked(); -} - -void DefineJavaScript(Environment* env, Local<Object> target) { - auto context = env->context(); -#define V(id) \ - do { \ - auto key = \ - String::NewFromOneByte( \ - env->isolate(), id##_name, NewStringType::kNormal, \ - sizeof(id##_name)).ToLocalChecked(); \ - auto value = \ - String::NewExternalOneByte( \ - env->isolate(), &id##_external_data).ToLocalChecked(); \ - CHECK(target->Set(context, key, value).FromJust()); \ - } while (0); - NODE_NATIVES_MAP(V) -#undef V -} - -} // namespace node |