History

Added context scopes

ksuprynowicz committed 4 years ago

Commit a4c69301 parent 2b06c0910 files · +300 −95Browse files

Showing the changes to libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp (1 of 10 files). Show all

Unified · Split

libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp+8−3
@@ -139,7 +139,7 @@ ScriptObjectV8Proxy* ScriptObjectV8Proxy::unwrapProxy(const V8ScriptValue& val) · 138 unmodified lines
139139 if (!v8Value->IsObject()) {
140140 return nullptr;
141141 }
142− v8::Local<v8::Object> v8Object = v8Value->ToObject(val.constGetContext()).ToLocalChecked();
142+ v8::Local<v8::Object> v8Object = v8::Local<v8::Object>::Cast(v8Value);
143143 if (v8Object->InternalFieldCount() != 2) {
144144 return nullptr;
145145 }
@@ -167,6 +167,7 @@ void ScriptObjectV8Proxy::investigate() { · 21 unmodified lines
167167 if (!qobject) return;
168168
169169 v8::HandleScope handleScope(_engine->getIsolate());
170+ v8::Context::Scope contextScope(_engine->getContext());
170171
171172 auto objectTemplate = _v8ObjectTemplate.Get(_engine->getIsolate());
172173 objectTemplate->SetInternalFieldCount(3);
@@ -228,13 +229,17 @@ void ScriptObjectV8Proxy::investigate() { · 55 unmodified lines
228229 break;
229230 }
230231
231− V8ScriptString name(_engine->getIsolate(), v8::String::NewFromUtf8(_engine->getIsolate(), szName.data(), v8::NewStringType::kNormal, szName.length()).ToLocalChecked());
232+ auto nameString = v8::String::NewFromUtf8(_engine->getIsolate(), szName.data(), v8::NewStringType::kNormal, szName.length()).ToLocalChecked();
233+ V8ScriptString name(_engine->getIsolate(), nameString);
232234 auto nameLookup = methodNames.find(name);
233235 if (isSignal) {
234236 if (nameLookup == methodNames.end()) {
235237 SignalDef& signalDef = _signals.insert(idx, SignalDef(_engine->getIsolate(), name.get())).value();
236238 signalDef.name = name;
237239 signalDef.signal = method;
240+ qDebug(scriptengine) << "Utf8Value 1: " << QString(*v8::String::Utf8Value(const_cast<v8::Isolate*>(_engine->getIsolate()), nameString));
241+ qDebug(scriptengine) << "Utf8Value 2: " << QString(*v8::String::Utf8Value(const_cast<v8::Isolate*>(_engine->getIsolate()), name.constGet()));
242+ qDebug(scriptengine) << "toQString: " << name.toQString();
238243 methodNames.insert(name, idx);
239244 } else {
240245 int originalMethodId = nameLookup.value();
@@ -474,7 +479,7 @@ ScriptVariantV8Proxy* ScriptVariantV8Proxy::unwrapProxy(const V8ScriptValue& val · 233 unmodified lines
474479 if (!v8Value->IsObject()) {
475480 return nullptr;
476481 }
477− v8::Local<v8::Object> v8Object = v8Value->ToObject(val.constGetContext()).ToLocalChecked();
482+ v8::Local<v8::Object> v8Object = v8::Local<v8::Object>::Cast(v8Value);
478483 if (v8Object->InternalFieldCount() != 2) {
479484 return nullptr;
480485 }