summaryrefslogtreecommitdiff
path: root/indra/llcommon/llcoros.cpp
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2024-07-18 07:45:50 +0300
committerAndrey Lihatskiy <alihatskiy@productengine.com>2024-07-18 07:45:50 +0300
commitadc058a6e06c8f532f4c0406c65694e87d86d707 (patch)
tree58ce8199ebe45200152a557e6801c61cbde34b92 /indra/llcommon/llcoros.cpp
parent5482d6a92fcc2eb4f8506a521c2386849a2e9172 (diff)
parenta65bc46b138b89200586b29fe729cbc7b0f0c8c4 (diff)
Merge branch 'release/maint-b' into marchcat/b-develop
# Conflicts: # autobuild.xml # indra/cmake/JsonCpp.cmake # indra/llimage/llimageworker.cpp # indra/llmessage/CMakeLists.txt # indra/llprimitive/llmodel.cpp # indra/llprimitive/llmodelloader.cpp # indra/llprimitive/llmodelloader.h # indra/llwindow/llkeyboard.cpp # indra/llwindow/llkeyboard.h # indra/llwindow/llkeyboardheadless.cpp # indra/llwindow/llkeyboardheadless.h # indra/llwindow/llkeyboardsdl.cpp # indra/llwindow/llkeyboardsdl.h # indra/llwindow/llwindowsdl.cpp # indra/llwindow/llwindowsdl.h # indra/newview/app_settings/shaders/class1/deferred/screenSpaceReflUtil.glsl # indra/newview/llappviewerlinux_api_dbus.cpp # indra/newview/llconversationloglist.cpp # indra/newview/lldirpicker.cpp # indra/newview/llfilepicker.cpp # indra/newview/llfloateremojipicker.cpp # indra/newview/llfloaterpreferencesgraphicsadvanced.cpp # indra/newview/llmodelpreview.cpp # indra/newview/lloutfitslist.cpp # indra/newview/llpanelface.cpp # indra/newview/llviewerobject.h # indra/newview/llxmlrpctransaction.cpp # indra/newview/viewer_manifest.py
Diffstat (limited to 'indra/llcommon/llcoros.cpp')
-rw-r--r--indra/llcommon/llcoros.cpp55
1 files changed, 3 insertions, 52 deletions
diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp
index 1539b48bd3..3fe7e09e7e 100644
--- a/indra/llcommon/llcoros.cpp
+++ b/indra/llcommon/llcoros.cpp
@@ -140,7 +140,7 @@ LLCoros::LLCoros():
// Previously we used
// boost::context::guarded_stack_allocator::default_stacksize();
// empirically this is insufficient.
- mStackSize(1024*1024),
+ mStackSize(512*1024),
// mCurrent does NOT own the current CoroData instance -- it simply
// points to it. So initialize it with a no-op deleter.
mCurrent{ [](CoroData*){} }
@@ -172,7 +172,7 @@ void LLCoros::cleanupSingleton()
// don't use llcoro::suspend() because that module depends
// on this one
// This will yield current(main) thread and will let active
- // corutines run once
+ // coroutines run once
boost::this_fiber::yield();
}
printActiveCoroutines("after pumping");
@@ -303,55 +303,6 @@ std::string LLCoros::launch(const std::string& prefix, const callable_t& callabl
return name;
}
-namespace
-{
-
-#if LL_WINDOWS
-
-static const U32 STATUS_MSC_EXCEPTION = 0xE06D7363; // compiler specific
-
-U32 exception_filter(U32 code, struct _EXCEPTION_POINTERS *exception_infop)
-{
- if (code == STATUS_MSC_EXCEPTION)
- {
- // C++ exception, go on
- return EXCEPTION_CONTINUE_SEARCH;
- }
- else
- {
- // handle it
- return EXCEPTION_EXECUTE_HANDLER;
- }
-}
-
-void sehandle(const LLCoros::callable_t& callable)
-{
- __try
- {
- callable();
- }
- __except (exception_filter(GetExceptionCode(), GetExceptionInformation()))
- {
- // convert to C++ styled exception
- // Note: it might be better to use _se_set_translator
- // if you want exception to inherit full callstack
- char integer_string[512];
- sprintf(integer_string, "SEH, code: %lu\n", GetExceptionCode());
- throw std::exception(integer_string);
- }
-}
-
-#else // ! LL_WINDOWS
-
-inline void sehandle(const LLCoros::callable_t& callable)
-{
- callable();
-}
-
-#endif // ! LL_WINDOWS
-
-} // anonymous namespace
-
// Top-level wrapper around caller's coroutine callable.
// Normally we like to pass strings and such by const reference -- but in this
// case, we WANT to copy both the name and the callable to our local stack!
@@ -365,7 +316,7 @@ void LLCoros::toplevel(std::string name, callable_t callable)
// run the code the caller actually wants in the coroutine
try
{
- sehandle(callable);
+ LL::seh::catcher(callable);
}
catch (const Stop& exc)
{