summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/scripting/engine_v8.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mongo/scripting/engine_v8.cpp b/src/mongo/scripting/engine_v8.cpp
index 5aa40b1abf0..4512ea02bac 100644
--- a/src/mongo/scripting/engine_v8.cpp
+++ b/src/mongo/scripting/engine_v8.cpp
@@ -603,8 +603,7 @@ namespace mongo {
// execution terminated
return v8::Undefined();
- v8::Local<v8::External> f =
- v8::External::Cast(*args.Callee()->Get(scope->strLitToV8("_v8_function")));
+ v8::Local<v8::External> f = v8::Local<v8::External>::Cast(args.Data());
v8Function function = (v8Function)(f->Value());
v8::Handle<v8::Value> ret;
string exceptionText;
@@ -1163,8 +1162,9 @@ namespace mongo {
}
v8::Handle<v8::FunctionTemplate> V8Scope::createV8Function(v8Function func) {
- v8::Handle<v8::FunctionTemplate> ft = v8::FunctionTemplate::New(v8Callback);
- ft->Set(strLitToV8("_v8_function"), v8::External::New(reinterpret_cast<void*>(func)),
+ v8::Handle<v8::Value> funcHandle = v8::External::New(reinterpret_cast<void*>(func));
+ v8::Handle<v8::FunctionTemplate> ft = v8::FunctionTemplate::New(v8Callback, funcHandle);
+ ft->Set(strLitToV8("_v8_function"), v8::Boolean::New(true),
static_cast<v8::PropertyAttribute>(v8::DontEnum | v8::ReadOnly));
return ft;
}