buffer: make additional changes to native API

Address comments and deprecations left in source files. These changes
include:

* Remove the deprecated API.
* Change Buffer::New() that did a copy of the data to Buffer::Copy()
* Change Buffer::Use() to Buffer::New()

PR-URL: https://github.com/nodejs/io.js/pull/1825
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
Trevor Norris 2015-06-02 12:53:30 -06:00 committed by Rod Vagg
parent 36f78f4c1c
commit 8664084166
7 changed files with 22 additions and 46 deletions

View File

@ -255,7 +255,7 @@ MaybeLocal<Object> New(Isolate* isolate,
} }
Local<Object> buf; Local<Object> buf;
if (Use(isolate, data, actual).ToLocal(&buf)) if (New(isolate, data, actual).ToLocal(&buf))
return scope.Escape(buf); return scope.Escape(buf);
// Object failed to be created. Clean up resources. // Object failed to be created. Clean up resources.
@ -319,7 +319,7 @@ MaybeLocal<Object> New(Environment* env, size_t length) {
} }
MaybeLocal<Object> New(Isolate* isolate, const char* data, size_t length) { MaybeLocal<Object> Copy(Isolate* isolate, const char* data, size_t length) {
Environment* env = Environment::GetCurrent(isolate); Environment* env = Environment::GetCurrent(isolate);
EscapableHandleScope handle_scope(env->isolate()); EscapableHandleScope handle_scope(env->isolate());
Local<Object> obj; Local<Object> obj;
@ -435,11 +435,11 @@ MaybeLocal<Object> New(Environment* env,
} }
MaybeLocal<Object> Use(Isolate* isolate, char* data, size_t length) { MaybeLocal<Object> New(Isolate* isolate, char* data, size_t length) {
Environment* env = Environment::GetCurrent(isolate); Environment* env = Environment::GetCurrent(isolate);
EscapableHandleScope handle_scope(env->isolate()); EscapableHandleScope handle_scope(env->isolate());
Local<Object> obj; Local<Object> obj;
if (Buffer::Use(env, data, length).ToLocal(&obj)) if (Buffer::New(env, data, length).ToLocal(&obj))
return handle_scope.Escape(obj); return handle_scope.Escape(obj);
return Local<Object>(); return Local<Object>();
} }

View File

@ -23,55 +23,30 @@ NODE_EXTERN char* Data(v8::Handle<v8::Object> val);
NODE_EXTERN size_t Length(v8::Handle<v8::Value> val); NODE_EXTERN size_t Length(v8::Handle<v8::Value> val);
NODE_EXTERN size_t Length(v8::Handle<v8::Object> val); NODE_EXTERN size_t Length(v8::Handle<v8::Object> val);
// public constructor - data is copied
NODE_EXTERN v8::MaybeLocal<v8::Object> Copy(v8::Isolate* isolate,
const char* data,
size_t len);
// public constructor // public constructor
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length); NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
NODE_DEPRECATED("Use New(isolate, ...)",
inline v8::MaybeLocal<v8::Object> New(size_t length) {
return New(v8::Isolate::GetCurrent(), length);
})
// public constructor from string // public constructor from string
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
v8::Handle<v8::String> string, v8::Handle<v8::String> string,
enum encoding enc = UTF8); enum encoding enc = UTF8);
NODE_DEPRECATED("Use New(isolate, ...)",
inline v8::MaybeLocal<v8::Object> New(
v8::Handle<v8::String> string,
enum encoding enc = UTF8) {
return New(v8::Isolate::GetCurrent(), string, enc);
})
// public constructor - data is copied
// TODO(trevnorris): should be something like Copy()
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
const char* data,
size_t len);
NODE_DEPRECATED("Use New(isolate, ...)",
inline v8::MaybeLocal<v8::Object> New(const char* data,
size_t len) {
return New(v8::Isolate::GetCurrent(), data, len);
})
// public constructor - data is used, callback is passed data on object gc // public constructor - data is used, callback is passed data on object gc
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
char* data, char* data,
size_t length, size_t length,
FreeCallback callback, FreeCallback callback,
void* hint); void* hint);
NODE_DEPRECATED("Use New(isolate, ...)",
inline v8::MaybeLocal<v8::Object> New(char* data,
size_t length,
FreeCallback callback,
void* hint) {
return New(v8::Isolate::GetCurrent(), data, length, callback, hint);
})
// public constructor - data is used. // public constructor - data is used.
// TODO(trevnorris): should be New() for consistency NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
NODE_EXTERN v8::MaybeLocal<v8::Object> Use(v8::Isolate* isolate,
char* data, char* data,
size_t len); size_t len);
NODE_DEPRECATED("Use Use(isolate, ...)",
inline v8::MaybeLocal<v8::Object> Use(char* data, size_t len) {
return Use(v8::Isolate::GetCurrent(), data, len);
})
// This is verbose to be explicit with inline commenting // This is verbose to be explicit with inline commenting
static inline bool IsWithinBounds(size_t off, size_t len, size_t max) { static inline bool IsWithinBounds(size_t off, size_t len, size_t max) {

View File

@ -2899,7 +2899,7 @@ void CipherBase::GetAuthTag(const FunctionCallbackInfo<Value>& args) {
unsigned int out_len = 0; unsigned int out_len = 0;
if (cipher->GetAuthTag(&out, &out_len)) { if (cipher->GetAuthTag(&out, &out_len)) {
Local<Object> buf = Buffer::Use(env, out, out_len).ToLocalChecked(); Local<Object> buf = Buffer::New(env, out, out_len).ToLocalChecked();
args.GetReturnValue().Set(buf); args.GetReturnValue().Set(buf);
} else { } else {
env->ThrowError("Attempting to get auth tag in unsupported state"); env->ThrowError("Attempting to get auth tag in unsupported state");
@ -4373,7 +4373,7 @@ void ECDH::ComputeSecret(const FunctionCallbackInfo<Value>& args) {
return env->ThrowError("Failed to compute ECDH key"); return env->ThrowError("Failed to compute ECDH key");
} }
Local<Object> buf = Buffer::Use(env, out, out_len).ToLocalChecked(); Local<Object> buf = Buffer::New(env, out, out_len).ToLocalChecked();
args.GetReturnValue().Set(buf); args.GetReturnValue().Set(buf);
} }
@ -4411,7 +4411,7 @@ void ECDH::GetPublicKey(const FunctionCallbackInfo<Value>& args) {
} }
Local<Object> buf = Local<Object> buf =
Buffer::Use(env, reinterpret_cast<char*>(out), size).ToLocalChecked(); Buffer::New(env, reinterpret_cast<char*>(out), size).ToLocalChecked();
args.GetReturnValue().Set(buf); args.GetReturnValue().Set(buf);
} }
@ -4438,7 +4438,7 @@ void ECDH::GetPrivateKey(const FunctionCallbackInfo<Value>& args) {
} }
Local<Object> buf = Local<Object> buf =
Buffer::Use(env, reinterpret_cast<char*>(out), size).ToLocalChecked(); Buffer::New(env, reinterpret_cast<char*>(out), size).ToLocalChecked();
args.GetReturnValue().Set(buf); args.GetReturnValue().Set(buf);
} }
@ -4841,7 +4841,7 @@ void RandomBytesCheck(RandomBytesRequest* req, Local<Value> argv[2]) {
size_t size; size_t size;
req->return_memory(&data, &size); req->return_memory(&data, &size);
argv[0] = Null(req->env()->isolate()); argv[0] = Null(req->env()->isolate());
argv[1] = Buffer::Use(req->env(), data, size).ToLocalChecked(); argv[1] = Buffer::New(req->env(), data, size).ToLocalChecked();
} }
} }

View File

@ -223,7 +223,7 @@ void StreamWrap::OnReadImpl(ssize_t nread,
CHECK_EQ(pending, UV_UNKNOWN_HANDLE); CHECK_EQ(pending, UV_UNKNOWN_HANDLE);
} }
Local<Object> obj = Buffer::Use(env, base, nread).ToLocalChecked(); Local<Object> obj = Buffer::New(env, base, nread).ToLocalChecked();
wrap->EmitData(nread, obj, pending_obj); wrap->EmitData(nread, obj, pending_obj);
} }

View File

@ -704,7 +704,8 @@ Local<Value> StringBytes::Encode(Isolate* isolate,
switch (encoding) { switch (encoding) {
case BUFFER: case BUFFER:
{ {
Local<Object> vbuf = Buffer::New(isolate, buf, buflen).ToLocalChecked(); Local<Object> vbuf =
Buffer::Copy(isolate, buf, buflen).ToLocalChecked();
return scope.Escape(vbuf); return scope.Escape(vbuf);
} }

View File

@ -660,7 +660,7 @@ void TLSWrap::OnReadSelf(ssize_t nread,
TLSWrap* wrap = static_cast<TLSWrap*>(ctx); TLSWrap* wrap = static_cast<TLSWrap*>(ctx);
Local<Object> buf_obj; Local<Object> buf_obj;
if (buf != nullptr) if (buf != nullptr)
buf_obj = Buffer::Use(wrap->env(), buf->base, buf->len).ToLocalChecked(); buf_obj = Buffer::New(wrap->env(), buf->base, buf->len).ToLocalChecked();
wrap->EmitData(nread, buf_obj, Local<Object>()); wrap->EmitData(nread, buf_obj, Local<Object>());
} }

View File

@ -408,7 +408,7 @@ void UDPWrap::OnRecv(uv_udp_t* handle,
} }
char* base = static_cast<char*>(realloc(buf->base, nread)); char* base = static_cast<char*>(realloc(buf->base, nread));
argv[2] = Buffer::Use(env, base, nread).ToLocalChecked(); argv[2] = Buffer::New(env, base, nread).ToLocalChecked();
argv[3] = AddressToJS(env, addr); argv[3] = AddressToJS(env, addr);
wrap->MakeCallback(env->onmessage_string(), ARRAY_SIZE(argv), argv); wrap->MakeCallback(env->onmessage_string(), ARRAY_SIZE(argv), argv);
} }