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
139 if (!v8Value->IsObject()) {139 if (!v8Value->IsObject()) {
140 return nullptr;140 return nullptr;
141 }141 }
142 v8::Local<v8::Object> v8Object = v8Value->ToObject(val.constGetContext()).ToLocalChecked();142 v8::Local<v8::Object> v8Object = v8::Local<v8::Object>::Cast(v8Value);
143 if (v8Object->InternalFieldCount() != 2) {143 if (v8Object->InternalFieldCount() != 2) {
144 return nullptr;144 return nullptr;
145 }145 }
@@ -167,6 +167,7 @@ void ScriptObjectV8Proxy::investigate() { · 21 unmodified lines
167 if (!qobject) return;167 if (!qobject) return;
168 168
169 v8::HandleScope handleScope(_engine->getIsolate());169 v8::HandleScope handleScope(_engine->getIsolate());
170 v8::Context::Scope contextScope(_engine->getContext());
170 171
171 auto objectTemplate = _v8ObjectTemplate.Get(_engine->getIsolate());172 auto objectTemplate = _v8ObjectTemplate.Get(_engine->getIsolate());
172 objectTemplate->SetInternalFieldCount(3);173 objectTemplate->SetInternalFieldCount(3);
@@ -228,13 +229,17 @@ void ScriptObjectV8Proxy::investigate() { · 55 unmodified lines
228 break;229 break;
229 }230 }
230 231
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);
232 auto nameLookup = methodNames.find(name);234 auto nameLookup = methodNames.find(name);
233 if (isSignal) {235 if (isSignal) {
234 if (nameLookup == methodNames.end()) {236 if (nameLookup == methodNames.end()) {
235 SignalDef& signalDef = _signals.insert(idx, SignalDef(_engine->getIsolate(), name.get())).value();237 SignalDef& signalDef = _signals.insert(idx, SignalDef(_engine->getIsolate(), name.get())).value();
236 signalDef.name = name;238 signalDef.name = name;
237 signalDef.signal = method;239 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();
238 methodNames.insert(name, idx);243 methodNames.insert(name, idx);
239 } else {244 } else {
240 int originalMethodId = nameLookup.value();245 int originalMethodId = nameLookup.value();
@@ -474,7 +479,7 @@ ScriptVariantV8Proxy* ScriptVariantV8Proxy::unwrapProxy(const V8ScriptValue& val · 233 unmodified lines
474 if (!v8Value->IsObject()) {479 if (!v8Value->IsObject()) {
475 return nullptr;480 return nullptr;
476 }481 }
477 v8::Local<v8::Object> v8Object = v8Value->ToObject(val.constGetContext()).ToLocalChecked();482 v8::Local<v8::Object> v8Object = v8::Local<v8::Object>::Cast(v8Value);
478 if (v8Object->InternalFieldCount() != 2) {483 if (v8Object->InternalFieldCount() != 2) {
479 return nullptr;484 return nullptr;
480 }485 }