diff --git a/src/rtScriptV8/rtScriptV8.cpp b/src/rtScriptV8/rtScriptV8.cpp index 6e8dd244b3..e250bfa363 100755 --- a/src/rtScriptV8/rtScriptV8.cpp +++ b/src/rtScriptV8/rtScriptV8.cpp @@ -106,6 +106,8 @@ extern "C" const char U_DATA_API SMALL_ICUDATA_ENTRY_POINT[]; #pragma GCC diagnostic pop #endif +static rtAtomic sNextId = 100; + class V8ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { public: virtual void* Allocate(size_t size) @@ -202,6 +204,8 @@ class rtV8Context: rtIScriptContext // V8 int mRefCount; + rtAtomic mId; + const char *js_file; std::string js_script; }; @@ -432,9 +436,13 @@ rtV8Context::rtV8Context(Isolate *isolate, Platform *platform, uv_loop_t *loop) Isolate::Scope isolate_scope(mIsolate); HandleScope handle_scope(mIsolate); + mId = rtAtomicInc(&sNextId); + // Create a new context. Local localContext = Context::New(mIsolate); + localContext->SetEmbedderData(HandleMap::kContextIdIndex, Integer::New(mIsolate, mId)); + mContext.Reset(mIsolate, localContext); // local to persistent Context::Scope contextScope(localContext);