mirror of https://github.com/lukechilds/node.git
Browse Source
Add a regression test for https://github.com/nodejs/io.js/pull/1827. PR-URL: https://github.com/nodejs/io.js/pull/1828 Reviewed-By: Trevor Norris <trev.norris@gmail.com>v2.3.1-release
3 changed files with 47 additions and 0 deletions
@ -0,0 +1,27 @@ |
|||||
|
#include "node.h" |
||||
|
#include "v8.h" |
||||
|
#include "v8-profiler.h" |
||||
|
|
||||
|
namespace { |
||||
|
|
||||
|
inline void Test(const v8::FunctionCallbackInfo<v8::Value>& args) { |
||||
|
v8::Isolate* const isolate = args.GetIsolate(); |
||||
|
const v8::HeapSnapshot* const heap_snapshot = |
||||
|
isolate->GetHeapProfiler()->TakeHeapSnapshot(v8::String::Empty(isolate)); |
||||
|
struct : public v8::OutputStream { |
||||
|
WriteResult WriteAsciiChunk(char*, int) override { return kContinue; } |
||||
|
void EndOfStream() override {} |
||||
|
} output_stream; |
||||
|
heap_snapshot->Serialize(&output_stream, v8::HeapSnapshot::kJSON); |
||||
|
const_cast<v8::HeapSnapshot*>(heap_snapshot)->Delete(); |
||||
|
} |
||||
|
|
||||
|
inline void Initialize(v8::Local<v8::Object> binding) { |
||||
|
v8::Isolate* const isolate = binding->GetIsolate(); |
||||
|
binding->Set(v8::String::NewFromUtf8(isolate, "test"), |
||||
|
v8::FunctionTemplate::New(isolate, Test)->GetFunction()); |
||||
|
} |
||||
|
|
||||
|
NODE_MODULE(test, Initialize) |
||||
|
|
||||
|
} // anonymous namespace
|
@ -0,0 +1,8 @@ |
|||||
|
{ |
||||
|
'targets': [ |
||||
|
{ |
||||
|
'target_name': 'binding', |
||||
|
'sources': [ 'binding.cc' ] |
||||
|
} |
||||
|
] |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const binding = require('./build/Release/binding'); |
||||
|
|
||||
|
// Create an AsyncWrap object.
|
||||
|
const timer = setTimeout(function() {}, 1); |
||||
|
timer.unref(); |
||||
|
|
||||
|
// Stress-test the heap profiler.
|
||||
|
binding.test(); |
||||
|
|
||||
|
clearTimeout(timer); |
Loading…
Reference in new issue