src: enable v8 deprecation warnings and fix them
authorBen Noordhuis <info@bnoordhuis.nl>
Wed, 1 Jul 2015 21:47:37 +0000 (23:47 +0200)
committerRod Vagg <rod@vagg.org>
Sun, 6 Sep 2015 11:39:04 +0000 (21:39 +1000)
Turn on V8 API deprecation warnings.  Fix up the no-arg Isolate::New()
calls in src/node.cc and src/debug-agent.cc.

PR-URL: https://github.com/nodejs/io.js/pull/2091
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
node.gyp
src/debug-agent.cc
src/node.cc
src/node_internals.h

index 7716287..0bc27ae 100644 (file)
--- a/node.gyp
+++ b/node.gyp
         'NODE_ARCH="<(target_arch)"',
         'NODE_PLATFORM="<(OS)"',
         'NODE_WANT_INTERNALS=1',
+        # Warn when using deprecated V8 APIs.
+        'V8_DEPRECATION_WARNINGS=1',
       ],
 
 
index 39d8bfe..b99446f 100644 (file)
@@ -160,7 +160,10 @@ void Agent::Stop() {
 
 void Agent::WorkerRun() {
   static const char* argv[] = { "node", "--debug-agent" };
-  Isolate* isolate = Isolate::New();
+  Isolate::CreateParams params;
+  ArrayBufferAllocator array_buffer_allocator;
+  params.array_buffer_allocator = &array_buffer_allocator;
+  Isolate* isolate = Isolate::New(params);
   {
     Locker locker(isolate);
     Isolate::Scope isolate_scope(isolate);
index d62ed28..f460c8d 100644 (file)
@@ -152,38 +152,6 @@ static uv_async_t dispatch_debug_messages_async;
 static Isolate* node_isolate = nullptr;
 static v8::Platform* default_platform;
 
-class ArrayBufferAllocator : public ArrayBuffer::Allocator {
- public:
-  // Impose an upper limit to avoid out of memory errors that bring down
-  // the process.
-  static const size_t kMaxLength = 0x3fffffff;
-  static ArrayBufferAllocator the_singleton;
-  virtual ~ArrayBufferAllocator() = default;
-  virtual void* Allocate(size_t length) override;
-  virtual void* AllocateUninitialized(size_t length) override;
-  virtual void Free(void* data, size_t length) override;
- private:
-  ArrayBufferAllocator() = default;
-  DISALLOW_COPY_AND_ASSIGN(ArrayBufferAllocator);
-};
-
-ArrayBufferAllocator ArrayBufferAllocator::the_singleton;
-
-
-void* ArrayBufferAllocator::Allocate(size_t length) {
-  return calloc(length, 1);
-}
-
-
-void* ArrayBufferAllocator::AllocateUninitialized(size_t length) {
-  return malloc(length);
-}
-
-
-void ArrayBufferAllocator::Free(void* data, size_t length) {
-  free(data);
-}
-
 
 static void CheckImmediate(uv_check_t* handle) {
   Environment* env = Environment::from_immediate_check_handle(handle);
@@ -3711,8 +3679,6 @@ void Init(int* argc,
     V8::SetFlagsFromString(expose_debug_as, sizeof(expose_debug_as) - 1);
   }
 
-  V8::SetArrayBufferAllocator(&ArrayBufferAllocator::the_singleton);
-
   if (!use_debug_agent) {
     RegisterDebugSignalHandler();
   }
@@ -3914,7 +3880,10 @@ Environment* CreateEnvironment(Isolate* isolate,
 // node instance.
 static void StartNodeInstance(void* arg) {
   NodeInstanceData* instance_data = static_cast<NodeInstanceData*>(arg);
-  Isolate* isolate = Isolate::New();
+  Isolate::CreateParams params;
+  ArrayBufferAllocator array_buffer_allocator;
+  params.array_buffer_allocator = &array_buffer_allocator;
+  Isolate* isolate = Isolate::New(params);
   if (track_heap_objects) {
     isolate->GetHeapProfiler()->StartTrackingHeapObjects(true);
   }
index aa19866..5ea4e0b 100644 (file)
@@ -226,6 +226,20 @@ NODE_DEPRECATED("Use ThrowUVException(isolate)",
   return ThrowUVException(isolate, errorno, syscall, message, path);
 })
 
+struct ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
+  virtual void* Allocate(size_t size) {
+    return calloc(size, 1);
+  }
+
+  virtual void* AllocateUninitialized(size_t size) {
+    return malloc(size);
+  }
+
+  virtual void Free(void* data, size_t) {
+    free(data);
+  }
+};
+
 enum NodeInstanceType { MAIN, WORKER };
 
 class NodeInstanceData {