summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2017-02-02 23:23:49 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2017-02-13 19:16:14 +0100
commitc30fc8d49575b4c41ec0798ed64874b1daa5acd3 (patch)
tree2b8716407f49cb33018e640b15dd9ae0ac2f58fb /src
parentf2023d7b6f88d3e9c8fbcee0d2615afbc947f0ca (diff)
downloadandroid-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.cc51
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