Enter context before calling callback

This commit is contained in:
Cheng Zhao
2015-05-29 13:41:59 +08:00
parent 1696237a3f
commit ad207eeabb
2 changed files with 48 additions and 0 deletions

View File

@@ -28,6 +28,8 @@ struct V8FunctionInvoker<v8::Local<V>()> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> val(holder->Call(holder, 0, NULL));
return handle_scope.Escape(val);
}
@@ -40,6 +42,8 @@ struct V8FunctionInvoker<R()> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> val(holder->Call(holder, 0, NULL));
Converter<R>::FromV8(isolate, val, &ret);
return ret;
@@ -52,6 +56,8 @@ struct V8FunctionInvoker<void()> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
holder->Call(holder, 0, NULL);
}
};
@@ -62,6 +68,8 @@ struct V8FunctionInvoker<v8::Local<V>(P1)> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
};
@@ -77,6 +85,8 @@ struct V8FunctionInvoker<R(P1)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
};
@@ -92,6 +102,8 @@ struct V8FunctionInvoker<void(P1)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
};
@@ -106,6 +118,8 @@ struct V8FunctionInvoker<v8::Local<V>(P1, P2)> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -122,6 +136,8 @@ struct V8FunctionInvoker<R(P1, P2)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -138,6 +154,8 @@ struct V8FunctionInvoker<void(P1, P2)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -153,6 +171,8 @@ struct V8FunctionInvoker<v8::Local<V>(P1, P2, P3)> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -171,6 +191,8 @@ struct V8FunctionInvoker<R(P1, P2, P3)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -189,6 +211,8 @@ struct V8FunctionInvoker<void(P1, P2, P3)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -205,6 +229,8 @@ struct V8FunctionInvoker<v8::Local<V>(P1, P2, P3, P4)> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -224,6 +250,8 @@ struct V8FunctionInvoker<R(P1, P2, P3, P4)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -243,6 +271,8 @@ struct V8FunctionInvoker<void(P1, P2, P3, P4)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -261,6 +291,8 @@ struct V8FunctionInvoker<v8::Local<V>(P1, P2, P3, P4, P5)> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -282,6 +314,8 @@ struct V8FunctionInvoker<R(P1, P2, P3, P4, P5)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -302,6 +336,8 @@ struct V8FunctionInvoker<void(P1, P2, P3, P4, P5)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -321,6 +357,8 @@ struct V8FunctionInvoker<v8::Local<V>(P1, P2, P3, P4, P5, P6)> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -343,6 +381,8 @@ struct V8FunctionInvoker<R(P1, P2, P3, P4, P5, P6)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),
@@ -365,6 +405,8 @@ struct V8FunctionInvoker<void(P1, P2, P3, P4, P5, P6)> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
v8::Local<v8::Value> args[] = {
ConvertToV8(isolate, a1),
ConvertToV8(isolate, a2),

View File

@@ -35,6 +35,8 @@ struct V8FunctionInvoker<v8::Local<V>($for ARG , [[P$(ARG)]])> {
Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
$if ARITY == 0 [[
v8::Local<v8::Value> val(holder->Call(holder, 0, NULL));
@@ -59,6 +61,8 @@ struct V8FunctionInvoker<R($for ARG , [[P$(ARG)]])> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
$if ARITY == 0 [[
v8::Local<v8::Value> val(holder->Call(holder, 0, NULL));
@@ -84,6 +88,8 @@ struct V8FunctionInvoker<void($for ARG , [[P$(ARG)]])> {
Locker locker(isolate);
MATE_HANDLE_SCOPE(isolate);
v8::Local<v8::Function> holder = function->NewHandle();
v8::Local<v8::Context> context = holder->CreationContext();
v8::Context::Scope context_scope(context);
$if ARITY == 0 [[
holder->Call(holder, 0, NULL);