summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2016-04-19 15:31:29 +0200
committerMichaƫl Zasso <targos@protonmail.com>2016-06-29 09:07:38 +0200
commit35ee1d17d6f84a28ac99a744492bb6c1e1d20e1d (patch)
treecf8c422867886e51a129fd55f5cf695ef3333315 /deps
parentb88dee2768d605e97882b8997ddc518148e638a0 (diff)
downloadandroid-node-v8-35ee1d17d6f84a28ac99a744492bb6c1e1d20e1d.tar.gz
android-node-v8-35ee1d17d6f84a28ac99a744492bb6c1e1d20e1d.tar.bz2
android-node-v8-35ee1d17d6f84a28ac99a744492bb6c1e1d20e1d.zip
v8: warn in Template::Set() on improper use
The next major release will make it a fatal error to use non-primitive values in function templates and object templates. Print a warning that includes the C and JS stack trace to tell people to upgrade their add-ons. The C stack trace is only printed on platforms that support it (the BSDs, OS X and Linux+glibc.) The warning can be disabled with the new `--nowarn_template_set` flag. Refs: https://github.com/nodejs/node/issues/6216 PR-URL: https://github.com/nodejs/node/pull/6277 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps')
-rw-r--r--deps/v8/src/api.cc10
-rw-r--r--deps/v8/src/flag-definitions.h3
2 files changed, 13 insertions, 0 deletions
diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc
index f7d3a1db0f..5d326981cd 100644
--- a/deps/v8/src/api.cc
+++ b/deps/v8/src/api.cc
@@ -1036,6 +1036,16 @@ void Template::Set(v8::Local<Name> name, v8::Local<Data> value,
i::Handle<i::FunctionTemplateInfo>::cast(templ)->set_do_not_cache(true);
}
}
+ if (i::FLAG_warn_template_set &&
+ value_obj->IsJSReceiver() &&
+ !value_obj->IsTemplateInfo()) {
+ base::OS::PrintError(
+ "(node) v8::%sTemplate::Set() with non-primitive values is deprecated\n"
+ "(node) and will stop working in the next major release.\n",
+ templ->IsFunctionTemplateInfo() ? "Function" : "Object");
+ isolate->PrintStack(stderr, i::Isolate::kPrintStackConcise);
+ base::DumpBacktrace();
+ }
// TODO(dcarney): split api to allow values of v8::Value or v8::TemplateInfo.
i::ApiNatives::AddDataProperty(isolate, templ, Utils::OpenHandle(*name),
value_obj,
diff --git a/deps/v8/src/flag-definitions.h b/deps/v8/src/flag-definitions.h
index 68088ade4d..8450c0c0f9 100644
--- a/deps/v8/src/flag-definitions.h
+++ b/deps/v8/src/flag-definitions.h
@@ -172,6 +172,9 @@ struct MaybeBoolFlag {
//
#define FLAG FLAG_FULL
+DEFINE_BOOL(warn_template_set, true,
+ "warn on deprecated v8::Template::Set() use")
+
DEFINE_BOOL(experimental_extras, false,
"enable code compiled in via v8_experimental_extra_library_files")