Browse Source

src: enable v8 deprecation warnings and fix them

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>
v4.x
Ben Noordhuis 9 years ago
committed by Rod Vagg
parent
commit
b1a2d9509f
  1. 2
      node.gyp
  2. 5
      src/debug-agent.cc
  3. 39
      src/node.cc
  4. 14
      src/node_internals.h

2
node.gyp

@ -180,6 +180,8 @@
'NODE_ARCH="<(target_arch)"', 'NODE_ARCH="<(target_arch)"',
'NODE_PLATFORM="<(OS)"', 'NODE_PLATFORM="<(OS)"',
'NODE_WANT_INTERNALS=1', 'NODE_WANT_INTERNALS=1',
# Warn when using deprecated V8 APIs.
'V8_DEPRECATION_WARNINGS=1',
], ],

5
src/debug-agent.cc

@ -160,7 +160,10 @@ void Agent::Stop() {
void Agent::WorkerRun() { void Agent::WorkerRun() {
static const char* argv[] = { "node", "--debug-agent" }; 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); Locker locker(isolate);
Isolate::Scope isolate_scope(isolate); Isolate::Scope isolate_scope(isolate);

39
src/node.cc

@ -152,38 +152,6 @@ static uv_async_t dispatch_debug_messages_async;
static Isolate* node_isolate = nullptr; static Isolate* node_isolate = nullptr;
static v8::Platform* default_platform; 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) { static void CheckImmediate(uv_check_t* handle) {
Environment* env = Environment::from_immediate_check_handle(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::SetFlagsFromString(expose_debug_as, sizeof(expose_debug_as) - 1);
} }
V8::SetArrayBufferAllocator(&ArrayBufferAllocator::the_singleton);
if (!use_debug_agent) { if (!use_debug_agent) {
RegisterDebugSignalHandler(); RegisterDebugSignalHandler();
} }
@ -3914,7 +3880,10 @@ Environment* CreateEnvironment(Isolate* isolate,
// node instance. // node instance.
static void StartNodeInstance(void* arg) { static void StartNodeInstance(void* arg) {
NodeInstanceData* instance_data = static_cast<NodeInstanceData*>(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) { if (track_heap_objects) {
isolate->GetHeapProfiler()->StartTrackingHeapObjects(true); isolate->GetHeapProfiler()->StartTrackingHeapObjects(true);
} }

14
src/node_internals.h

@ -226,6 +226,20 @@ NODE_DEPRECATED("Use ThrowUVException(isolate)",
return ThrowUVException(isolate, errorno, syscall, message, path); 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 }; enum NodeInstanceType { MAIN, WORKER };
class NodeInstanceData { class NodeInstanceData {

Loading…
Cancel
Save