History

Fix V8 scope performance issue on libnode22

ksuprynowicz committed 11 months ago

Commit a9bd0781 parent 4aad6b218 files · +298 −349Browse files

Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 18 files). Show all

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+47−42
@@ -470,49 +470,54 @@ void EntityScriptServer::resetEntitiesScriptEngine() { · 469 unmodified lines
470 auto newManager = scriptManagerFactory(ScriptManager::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName);470 auto newManager = scriptManagerFactory(ScriptManager::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName);
471 auto newEngine = newManager->engine();471 auto newEngine = newManager->engine();
472 472
473 auto webSocketServerConstructorValue = newEngine->newFunction(WebSocketServerClass::constructor);473 {
474 newEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);474 auto guard = newEngine->getScopeGuard();
475 475 {
476 newEngine->registerGlobalObject("SoundCache", DependencyManager::get<SoundCacheScriptingInterface>().data());476 auto webSocketServerConstructorValue = newEngine->newFunction(WebSocketServerClass::constructor);
477 newEngine->registerGlobalObject("AvatarList", DependencyManager::get<AvatarHashMap>().data());477 newEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);
478 478 }
479 // connect this script engines printedMessage signal to the global ScriptEngines these various messages
480 auto scriptEngines = DependencyManager::get<ScriptEngines>().data();
481 connect(newManager.get(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage);
482 connect(newManager.get(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage);
483 connect(newManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
484 connect(newManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
485
486 // Make script engine messages available through ScriptDiscoveryService
487 connect(newManager.get(), &ScriptManager::infoEntityMessage, scriptEngines, &ScriptEngines::infoEntityMessage);
488 connect(newManager.get(), &ScriptManager::printedEntityMessage, scriptEngines, &ScriptEngines::printedEntityMessage);
489 connect(newManager.get(), &ScriptManager::errorEntityMessage, scriptEngines, &ScriptEngines::errorEntityMessage);
490 connect(newManager.get(), &ScriptManager::warningEntityMessage, scriptEngines, &ScriptEngines::warningEntityMessage);
491
492 connect(newManager.get(), &ScriptManager::infoEntityMessage,
493 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
494 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_INFO);
495 });
496 connect(newManager.get(), &ScriptManager::printedEntityMessage,
497 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
498 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_PRINT);
499 });
500 connect(newManager.get(), &ScriptManager::errorEntityMessage,
501 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
502 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_ERROR);
503 });
504 connect(newManager.get(), &ScriptManager::warningEntityMessage,
505 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
506 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_WARNING);
507 });
508
509 connect(newManager.get(), &ScriptManager::update, this, [this] {
510 _entityViewer.queryOctree();
511 _entityViewer.getTree()->preUpdate();
512 _entityViewer.getTree()->update();
513 });
514 479
515 scriptEngines->runScriptInitializers(newManager);480 newEngine->registerGlobalObject("SoundCache", DependencyManager::get<SoundCacheScriptingInterface>().data());
481 newEngine->registerGlobalObject("AvatarList", DependencyManager::get<AvatarHashMap>().data());
482
483 // connect this script engines printedMessage signal to the global ScriptEngines these various messages
484 auto scriptEngines = DependencyManager::get<ScriptEngines>().data();
485 connect(newManager.get(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage);
486 connect(newManager.get(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage);
487 connect(newManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
488 connect(newManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
489
490 // Make script engine messages available through ScriptDiscoveryService
491 connect(newManager.get(), &ScriptManager::infoEntityMessage, scriptEngines, &ScriptEngines::infoEntityMessage);
492 connect(newManager.get(), &ScriptManager::printedEntityMessage, scriptEngines, &ScriptEngines::printedEntityMessage);
493 connect(newManager.get(), &ScriptManager::errorEntityMessage, scriptEngines, &ScriptEngines::errorEntityMessage);
494 connect(newManager.get(), &ScriptManager::warningEntityMessage, scriptEngines, &ScriptEngines::warningEntityMessage);
495
496 connect(newManager.get(), &ScriptManager::infoEntityMessage,
497 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
498 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_INFO);
499 });
500 connect(newManager.get(), &ScriptManager::printedEntityMessage,
501 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
502 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_PRINT);
503 });
504 connect(newManager.get(), &ScriptManager::errorEntityMessage,
505 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
506 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_ERROR);
507 });
508 connect(newManager.get(), &ScriptManager::warningEntityMessage,
509 [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
510 addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_WARNING);
511 });
512
513 connect(newManager.get(), &ScriptManager::update, this, [this] {
514 _entityViewer.queryOctree();
515 _entityViewer.getTree()->preUpdate();
516 _entityViewer.getTree()->update();
517 });
518
519 scriptEngines->runScriptInitializers(newManager);
520 }
516 newManager->runInThread();521 newManager->runInThread();
517 std::shared_ptr<EntitiesScriptEngineProvider> newEngineSP = newManager;522 std::shared_ptr<EntitiesScriptEngineProvider> newEngineSP = newManager;
518 // On the entity script server, these are the same523 // On the entity script server, these are the same