v8Util.createObjectWithName is no longer used
authorCheng Zhao <zcbenz@gmail.com>
Mon, 22 Feb 2016 03:51:41 +0000 (11:51 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 22 Feb 2016 05:05:58 +0000 (13:05 +0800)
atom/browser/lib/rpc-server.js
atom/common/api/atom_api_v8_util.cc

index 6478587..c3e5159 100644 (file)
@@ -162,7 +162,9 @@ var unwrapArgs = function(sender, args) {
           then: metaToValue(meta.then)
         });
       case 'object': {
-        let ret = v8Util.createObjectWithName(meta.name);
+        let ret = {};
+        Object.defineProperty(ret.constructor, 'name', { value: meta.name });
+
         ref = meta.members;
         for (i = 0, len = ref.length; i < len; i++) {
           member = ref[i];
index c86335a..f50d348 100644 (file)
@@ -2,49 +2,15 @@
 // Use of this source code is governed by the MIT license that can be
 // found in the LICENSE file.
 
-#include <map>
 #include <string>
 
 #include "atom/common/api/object_life_monitor.h"
 #include "atom/common/node_includes.h"
-#include "base/stl_util.h"
 #include "native_mate/dictionary.h"
 #include "v8/include/v8-profiler.h"
 
 namespace {
 
-// A Persistent that can be copied and will not free itself.
-template<class T>
-struct LeakedPersistentTraits {
-  typedef v8::Persistent<T, LeakedPersistentTraits<T> > LeakedPersistent;
-  static const bool kResetInDestructor = false;
-  template<class S, class M>
-  static V8_INLINE void Copy(const v8::Persistent<S, M>& source,
-                             LeakedPersistent* dest) {
-    // do nothing, just allow copy
-  }
-};
-
-// The handles are leaked on purpose.
-using FunctionTemplateHandle =
-    LeakedPersistentTraits<v8::FunctionTemplate>::LeakedPersistent;
-std::map<std::string, FunctionTemplateHandle> function_templates_;
-
-v8::Local<v8::Object> CreateObjectWithName(v8::Isolate* isolate,
-                                           const std::string& name) {
-  if (name == "Object")
-    return v8::Object::New(isolate);
-
-  if (ContainsKey(function_templates_, name))
-    return v8::Local<v8::FunctionTemplate>::New(
-        isolate, function_templates_[name])->GetFunction()->NewInstance();
-
-  v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate);
-  t->SetClassName(mate::StringToV8(isolate, name));
-  function_templates_[name] = FunctionTemplateHandle(isolate, t);
-  return t->GetFunction()->NewInstance();
-}
-
 v8::Local<v8::Value> GetHiddenValue(v8::Local<v8::Object> object,
                                     v8::Local<v8::String> key) {
   return object->GetHiddenValue(key);
@@ -78,7 +44,6 @@ void TakeHeapSnapshot(v8::Isolate* isolate) {
 void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
                 v8::Local<v8::Context> context, void* priv) {
   mate::Dictionary dict(context->GetIsolate(), exports);
-  dict.SetMethod("createObjectWithName", &CreateObjectWithName);
   dict.SetMethod("getHiddenValue", &GetHiddenValue);
   dict.SetMethod("setHiddenValue", &SetHiddenValue);
   dict.SetMethod("deleteHiddenValue", &DeleteHiddenValue);