Skip to content

Commit

Permalink
src: update to v8 3.24 APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
indutny committed Mar 13, 2014
1 parent 1c7bf24 commit ce04c72
Show file tree
Hide file tree
Showing 37 changed files with 438 additions and 374 deletions.
75 changes: 38 additions & 37 deletions src/cares_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ namespace cares_wrap {

using v8::Array;
using v8::Context;
using v8::EscapableHandleScope;
using v8::Function;
using v8::FunctionCallbackInfo;
using v8::Handle;
Expand Down Expand Up @@ -194,8 +195,8 @@ static void ares_sockstate_cb(void* data,


static Local<Array> HostentToAddresses(Environment* env, struct hostent* host) {
HandleScope scope(env->isolate());
Local<Array> addresses = Array::New();
EscapableHandleScope scope(env->isolate());
Local<Array> addresses = Array::New(env->isolate());

char ip[INET6_ADDRSTRLEN];
for (uint32_t i = 0; host->h_addr_list[i] != NULL; ++i) {
Expand All @@ -204,20 +205,20 @@ static Local<Array> HostentToAddresses(Environment* env, struct hostent* host) {
addresses->Set(i, address);
}

return scope.Close(addresses);
return scope.Escape(addresses);
}


static Local<Array> HostentToNames(Environment* env, struct hostent* host) {
HandleScope scope(env->isolate());
Local<Array> names = Array::New();
EscapableHandleScope scope(env->isolate());
Local<Array> names = Array::New(env->isolate());

for (uint32_t i = 0; host->h_aliases[i] != NULL; ++i) {
Local<String> address = OneByteString(env->isolate(), host->h_aliases[i]);
names->Set(i, address);
}

return scope.Close(names);
return scope.Escape(names);
}


Expand All @@ -229,7 +230,7 @@ class QueryWrap : public AsyncWrap {

virtual ~QueryWrap() {
assert(!persistent().IsEmpty());
persistent().Dispose();
persistent().Reset();
}

// Subclasses should implement the appropriate Send method.
Expand Down Expand Up @@ -278,7 +279,7 @@ class QueryWrap : public AsyncWrap {
HandleScope handle_scope(env()->isolate());
Context::Scope context_scope(env()->context());
Local<Value> argv[] = {
Integer::New(0, env()->isolate()),
Integer::New(env()->isolate(), 0),
answer
};
MakeCallback(env()->oncomplete_string(), ARRAY_SIZE(argv), argv);
Expand All @@ -288,7 +289,7 @@ class QueryWrap : public AsyncWrap {
HandleScope handle_scope(env()->isolate());
Context::Scope context_scope(env()->context());
Local<Value> argv[] = {
Integer::New(0, env()->isolate()),
Integer::New(env()->isolate(), 0),
answer,
family
};
Expand Down Expand Up @@ -452,7 +453,7 @@ class QueryCnameWrap: public QueryWrap {

// A cname lookup always returns a single record but we follow the
// common API here.
Local<Array> result = Array::New(1);
Local<Array> result = Array::New(env()->isolate(), 1);
result->Set(0, OneByteString(env()->isolate(), host->h_name));
ares_free_hostent(host);

Expand Down Expand Up @@ -489,17 +490,17 @@ class QueryMxWrap: public QueryWrap {
return;
}

Local<Array> mx_records = Array::New();
Local<Array> mx_records = Array::New(env()->isolate());
Local<String> exchange_symbol = env()->exchange_string();
Local<String> priority_symbol = env()->priority_string();

ares_mx_reply* current = mx_start;
for (uint32_t i = 0; current != NULL; ++i, current = current->next) {
Local<Object> mx_record = Object::New();
Local<Object> mx_record = Object::New(env()->isolate());
mx_record->Set(exchange_symbol,
OneByteString(env()->isolate(), current->host));
mx_record->Set(priority_symbol,
Integer::New(current->priority, env()->isolate()));
Integer::New(env()->isolate(), current->priority));
mx_records->Set(i, mx_record);
}

Expand Down Expand Up @@ -574,7 +575,7 @@ class QueryTxtWrap: public QueryWrap {
return;
}

Local<Array> txt_records = Array::New();
Local<Array> txt_records = Array::New(env()->isolate());

ares_txt_reply* current = txt_out;
for (uint32_t i = 0; current != NULL; ++i, current = current->next) {
Expand Down Expand Up @@ -617,23 +618,23 @@ class QuerySrvWrap: public QueryWrap {
return;
}

Local<Array> srv_records = Array::New();
Local<Array> srv_records = Array::New(env()->isolate());
Local<String> name_symbol = env()->name_string();
Local<String> port_symbol = env()->port_string();
Local<String> priority_symbol = env()->priority_string();
Local<String> weight_symbol = env()->weight_string();

ares_srv_reply* current = srv_start;
for (uint32_t i = 0; current != NULL; ++i, current = current->next) {
Local<Object> srv_record = Object::New();
Local<Object> srv_record = Object::New(env()->isolate());
srv_record->Set(name_symbol,
OneByteString(env()->isolate(), current->host));
srv_record->Set(port_symbol,
Integer::New(current->port, env()->isolate()));
Integer::New(env()->isolate(), current->port));
srv_record->Set(priority_symbol,
Integer::New(current->priority, env()->isolate()));
Integer::New(env()->isolate(), current->priority));
srv_record->Set(weight_symbol,
Integer::New(current->weight, env()->isolate()));
Integer::New(env()->isolate(), current->weight));
srv_records->Set(i, srv_record);
}

Expand Down Expand Up @@ -672,7 +673,7 @@ class QueryNaptrWrap: public QueryWrap {
return;
}

Local<Array> naptr_records = Array::New();
Local<Array> naptr_records = Array::New(env()->isolate());
Local<String> flags_symbol = env()->flags_string();
Local<String> service_symbol = env()->service_string();
Local<String> regexp_symbol = env()->regexp_string();
Expand All @@ -682,7 +683,7 @@ class QueryNaptrWrap: public QueryWrap {

ares_naptr_reply* current = naptr_start;
for (uint32_t i = 0; current != NULL; ++i, current = current->next) {
Local<Object> naptr_record = Object::New();
Local<Object> naptr_record = Object::New(env()->isolate());
naptr_record->Set(flags_symbol,
OneByteString(env()->isolate(), current->flags));
naptr_record->Set(service_symbol,
Expand All @@ -692,9 +693,9 @@ class QueryNaptrWrap: public QueryWrap {
naptr_record->Set(replacement_symbol,
OneByteString(env()->isolate(), current->replacement));
naptr_record->Set(order_symbol,
Integer::New(current->order, env()->isolate()));
Integer::New(env()->isolate(), current->order));
naptr_record->Set(preference_symbol,
Integer::New(current->preference, env()->isolate()));
Integer::New(env()->isolate(), current->preference));
naptr_records->Set(i, naptr_record);
}

Expand Down Expand Up @@ -734,22 +735,22 @@ class QuerySoaWrap: public QueryWrap {
return;
}

Local<Object> soa_record = Object::New();
Local<Object> soa_record = Object::New(env()->isolate());

soa_record->Set(env()->nsname_string(),
OneByteString(env()->isolate(), soa_out->nsname));
soa_record->Set(env()->hostmaster_string(),
OneByteString(env()->isolate(), soa_out->hostmaster));
soa_record->Set(env()->serial_string(),
Integer::New(soa_out->serial, env()->isolate()));
Integer::New(env()->isolate(), soa_out->serial));
soa_record->Set(env()->refresh_string(),
Integer::New(soa_out->refresh, env()->isolate()));
Integer::New(env()->isolate(), soa_out->refresh));
soa_record->Set(env()->retry_string(),
Integer::New(soa_out->retry, env()->isolate()));
Integer::New(env()->isolate(), soa_out->retry));
soa_record->Set(env()->expire_string(),
Integer::New(soa_out->expire, env()->isolate()));
Integer::New(env()->isolate(), soa_out->expire));
soa_record->Set(env()->minttl_string(),
Integer::New(soa_out->minttl, env()->isolate()));
Integer::New(env()->isolate(), soa_out->minttl));

ares_free_data(soa_out);

Expand Down Expand Up @@ -816,7 +817,7 @@ class GetHostByNameWrap: public QueryWrap {
HandleScope scope(env()->isolate());

Local<Array> addresses = HostentToAddresses(env(), host);
Local<Integer> family = Integer::New(host->h_addrtype, env()->isolate());
Local<Integer> family = Integer::New(env()->isolate(), host->h_addrtype);

this->CallOnComplete(addresses, family);
}
Expand Down Expand Up @@ -853,7 +854,7 @@ void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) {
Context::Scope context_scope(env->context());

Local<Value> argv[] = {
Integer::New(status, env->isolate()),
Integer::New(env->isolate(), status),
Null(env->isolate())
};

Expand All @@ -868,7 +869,7 @@ void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) {
}

// Create the response array.
Local<Array> results = Array::New(n);
Local<Array> results = Array::New(env->isolate(), n);

char ip[INET6_ADDRSTRLEN];
const char *addr;
Expand Down Expand Up @@ -947,7 +948,7 @@ static void IsIP(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());

String::AsciiValue ip(args[0]);
String::Utf8Value ip(args[0]);
char address_buffer[sizeof(struct in6_addr)];

int rc = 0;
Expand Down Expand Up @@ -1014,7 +1015,7 @@ static void GetServers(const FunctionCallbackInfo<Value>& args) {
HandleScope handle_scope(args.GetIsolate());
Environment* env = Environment::GetCurrent(args.GetIsolate());

Local<Array> server_array = Array::New();
Local<Array> server_array = Array::New(env->isolate());

ares_addr_node* servers;

Expand Down Expand Up @@ -1160,11 +1161,11 @@ static void Initialize(Handle<Object> target,
NODE_SET_METHOD(target, "setServers", SetServers);

target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "AF_INET"),
Integer::New(AF_INET, env->isolate()));
Integer::New(env->isolate(), AF_INET));
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "AF_INET6"),
Integer::New(AF_INET6, env->isolate()));
Integer::New(env->isolate(), AF_INET6));
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "AF_UNSPEC"),
Integer::New(AF_UNSPEC, env->isolate()));
Integer::New(env->isolate(), AF_UNSPEC));
}

} // namespace cares_wrap
Expand Down
18 changes: 9 additions & 9 deletions src/env-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,23 +70,23 @@ inline uint64_t Environment::GCInfo::timestamp() const {

inline Environment::IsolateData* Environment::IsolateData::Get(
v8::Isolate* isolate) {
return static_cast<IsolateData*>(isolate->GetData());
return static_cast<IsolateData*>(isolate->GetData(kIsolateSlot));
}

inline Environment::IsolateData* Environment::IsolateData::GetOrCreate(
v8::Isolate* isolate) {
IsolateData* isolate_data = Get(isolate);
if (isolate_data == NULL) {
isolate_data = new IsolateData(isolate);
isolate->SetData(isolate_data);
isolate->SetData(kIsolateSlot, isolate_data);
}
isolate_data->ref_count_ += 1;
return isolate_data;
}

inline void Environment::IsolateData::Put() {
if (--ref_count_ == 0) {
isolate()->SetData(NULL);
isolate()->SetData(kIsolateSlot, NULL);
delete this;
}
}
Expand Down Expand Up @@ -230,8 +230,8 @@ inline Environment::Environment(v8::Local<v8::Context> context)
// We'll be creating new objects so make sure we've entered the context.
v8::HandleScope handle_scope(isolate());
v8::Context::Scope context_scope(context);
set_binding_cache_object(v8::Object::New());
set_module_load_list_array(v8::Array::New());
set_binding_cache_object(v8::Object::New(isolate()));
set_module_load_list_array(v8::Array::New(isolate()));
RB_INIT(&cares_task_list_);
QUEUE_INIT(&gc_tracker_queue_);
}
Expand All @@ -240,7 +240,7 @@ inline Environment::~Environment() {
v8::HandleScope handle_scope(isolate());

context()->SetAlignedPointerInEmbedderData(kContextEmbedderDataIndex, NULL);
#define V(PropertyName, TypeName) PropertyName ## _.Dispose();
#define V(PropertyName, TypeName) PropertyName ## _.Reset();
ENVIRONMENT_STRONG_PERSISTENT_PROPERTIES(V)
#undef V
isolate_data()->Put();
Expand Down Expand Up @@ -370,7 +370,7 @@ inline Environment::IsolateData* Environment::isolate_data() const {
#define THROW_ERROR(fun) \
do { \
v8::HandleScope scope(isolate); \
v8::ThrowException(fun(OneByteString(isolate, errmsg))); \
isolate->ThrowException(fun(OneByteString(isolate, errmsg))); \
} \
while (0)

Expand Down Expand Up @@ -404,15 +404,15 @@ inline void Environment::ThrowErrnoException(int errorno,
const char* syscall,
const char* message,
const char* path) {
v8::ThrowException(
isolate()->ThrowException(
ErrnoException(isolate(), errorno, syscall, message, path));
}

inline void Environment::ThrowUVException(int errorno,
const char* syscall,
const char* message,
const char* path) {
v8::ThrowException(
isolate()->ThrowException(
UVException(isolate(), errorno, syscall, message, path));
}

Expand Down
2 changes: 2 additions & 0 deletions src/env.h
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,8 @@ class Environment {
#undef V

private:
static const int kIsolateSlot = 0;

class GCInfo;
class IsolateData;
inline explicit Environment(v8::Local<v8::Context> context);
Expand Down
4 changes: 2 additions & 2 deletions src/fs_event_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ void FSEventWrap::Initialize(Handle<Object> target,
Handle<Context> context) {
Environment* env = Environment::GetCurrent(context);

Local<FunctionTemplate> t = FunctionTemplate::New(New);
Local<FunctionTemplate> t = FunctionTemplate::New(env->isolate(), New);
t->InstanceTemplate()->SetInternalFieldCount(1);
t->SetClassName(env->fsevent_string());

Expand Down Expand Up @@ -172,7 +172,7 @@ void FSEventWrap::OnEvent(uv_fs_event_t* handle, const char* filename,
}

Local<Value> argv[] = {
Integer::New(status, env->isolate()),
Integer::New(env->isolate(), status),
event_string,
Null(env->isolate())
};
Expand Down
2 changes: 1 addition & 1 deletion src/handle_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ void HandleWrap::OnClose(uv_handle_t* handle) {
}

object->SetAlignedPointerInInternalField(0, NULL);
wrap->persistent().Dispose();
wrap->persistent().Reset();
delete wrap;
}

Expand Down
Loading

0 comments on commit ce04c72

Please sign in to comment.