src: internalize binding function property names
authorBen Noordhuis <info@bnoordhuis.nl>
Fri, 25 Sep 2015 10:19:53 +0000 (12:19 +0200)
committerRod Vagg <rod@vagg.org>
Wed, 30 Sep 2015 06:02:13 +0000 (16:02 +1000)
Internalized strings are created in the old space and that is where they
eventually would end up anyway when created as normal strings.

PR-URL: https://github.com/nodejs/node/pull/3060
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
src/env-inl.h

index 34d0531..a3f4a79 100644 (file)
@@ -478,7 +478,10 @@ inline void Environment::SetMethod(v8::Local<v8::Object> that,
                                    v8::FunctionCallback callback) {
   v8::Local<v8::Function> function =
       NewFunctionTemplate(callback)->GetFunction();
-  v8::Local<v8::String> name_string = v8::String::NewFromUtf8(isolate(), name);
+  // kInternalized strings are created in the old space.
+  const v8::NewStringType type = v8::NewStringType::kInternalized;
+  v8::Local<v8::String> name_string =
+      v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
   that->Set(name_string, function);
   function->SetName(name_string);  // NODE_SET_METHOD() compatibility.
 }
@@ -489,7 +492,10 @@ inline void Environment::SetProtoMethod(v8::Local<v8::FunctionTemplate> that,
   v8::Local<v8::Signature> signature = v8::Signature::New(isolate(), that);
   v8::Local<v8::Function> function =
       NewFunctionTemplate(callback, signature)->GetFunction();
-  v8::Local<v8::String> name_string = v8::String::NewFromUtf8(isolate(), name);
+  // kInternalized strings are created in the old space.
+  const v8::NewStringType type = v8::NewStringType::kInternalized;
+  v8::Local<v8::String> name_string =
+      v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
   that->PrototypeTemplate()->Set(name_string, function);
   function->SetName(name_string);  // NODE_SET_PROTOTYPE_METHOD() compatibility.
 }
@@ -499,7 +505,10 @@ inline void Environment::SetTemplateMethod(v8::Local<v8::FunctionTemplate> that,
                                            v8::FunctionCallback callback) {
   v8::Local<v8::Function> function =
       NewFunctionTemplate(callback)->GetFunction();
-  v8::Local<v8::String> name_string = v8::String::NewFromUtf8(isolate(), name);
+  // kInternalized strings are created in the old space.
+  const v8::NewStringType type = v8::NewStringType::kInternalized;
+  v8::Local<v8::String> name_string =
+      v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
   that->Set(name_string, function);
   function->SetName(name_string);  // NODE_SET_METHOD() compatibility.
 }