1334713347</f></getName>
1334813348 <meta><m n=":directlyUsed"/></meta>
1334913349 </class>
13350+ <class path="sys.thread.ThreadCallbackManager" params="" file="/home/runner/work/haxe/haxe/std/sys/thread/ThreadCallback.hx" module="sys.thread.ThreadCallback">
13351+ <onStartCallback><x path="Null"><c path="sys.thread.ThreadCallbackStack"><f a=""><x path="Void"/></f></c></x></onStartCallback>
13352+ <onJobDoneCallback><x path="Null"><c path="sys.thread.ThreadCallbackStack"><f a=""><x path="Void"/></f></c></x></onJobDoneCallback>
13353+ <onExitCallback><x path="Null"><c path="sys.thread.ThreadCallbackStack"><f a=""><x path="Void"/></f></c></x></onExitCallback>
13354+ <onAbortCallback><x path="Null"><c path="sys.thread.ThreadCallbackStack"><f a="">
13355+ <c path="haxe.Exception"/>
13356+ <x path="Void"/>
13357+ </f></c></x></onAbortCallback>
13358+ <callOnStart public="1" set="method" line="119"><f a=""><x path="Void"/></f></callOnStart>
13359+ <callOnJobDone public="1" set="method" line="123"><f a=""><x path="Void"/></f></callOnJobDone>
13360+ <callOnExit public="1" set="method" line="127"><f a=""><x path="Void"/></f></callOnExit>
13361+ <callOnAbort public="1" set="method" line="131"><f a="e">
13362+ <c path="haxe.Exception"/>
13363+ <x path="Void"/>
13364+ </f></callOnAbort>
13365+ <onStart public="1" set="method" line="135"><f a="f">
13366+ <f a=""><x path="Void"/></f>
13367+ <c path="sys.thread.IThreadCallbackHandle"/>
13368+ </f></onStart>
13369+ <onJobDone public="1" set="method" line="140"><f a="f">
13370+ <f a=""><x path="Void"/></f>
13371+ <c path="sys.thread.IThreadCallbackHandle"/>
13372+ </f></onJobDone>
13373+ <onExit public="1" set="method" line="145"><f a="f">
13374+ <f a=""><x path="Void"/></f>
13375+ <c path="sys.thread.IThreadCallbackHandle"/>
13376+ </f></onExit>
13377+ <onAbort public="1" set="method" line="150"><f a="f">
13378+ <f a="">
13379+ <c path="haxe.Exception"/>
13380+ <x path="Void"/>
13381+ </f>
13382+ <c path="sys.thread.IThreadCallbackHandle"/>
13383+ </f></onAbort>
13384+ <new public="1" set="method" line="117"><f a=""><x path="Void"/></f></new>
13385+ <meta><m n=":directlyUsed"/></meta>
13386+ </class>
1335013387 <class path="sys.thread.Thread" params="" file="/home/runner/work/haxe/haxe/std/sys/thread/Thread.hx">
1335113388 <threads static="1">
1335213389 <c path="Array"><c path="sys.thread.Thread"/></c>
@@ -13364,11 +13401,11 @@
1336413401 <x path="Int"/>
1336513402 <meta><m n=":keep"/></meta>
1336613403 </idCounter>
13367- <onJobStartCallback static="1">
13368- <x path="Null"><f a=""><x path="Void"/></f></x >
13404+ <globalCallbacks static="1">
13405+ <c path="sys.thread.ThreadCallbackManager"/ >
1336913406 <meta><m n=":keep"/></meta>
13370- </onJobStartCallback >
13371- <readMessage public="1" set="method" line="104 " static="1">
13407+ </globalCallbacks >
13408+ <readMessage public="1" set="method" line="130 " static="1">
1337213409 <f a="blocking">
1337313410 <x path="Bool"/>
1337413411 <x path="Null"><d/></x>
@@ -13379,49 +13416,65 @@
1337913416 <c path="sys.thread.Tls"><c path="sys.thread.Thread"/></c>
1338013417 <meta><m n=":keep"/></meta>
1338113418 </currentTLS>
13382- <current public="1" set="method" line="121 " static="1">
13419+ <current public="1" set="method" line="147 " static="1">
1338313420 <f a=""><c path="sys.thread.Thread"/></f>
1338413421 <meta><m n=":keep"/></meta>
1338513422 <haxe_doc>Returns the current thread.
1338613423 If you are calling this function from a native thread that is not the main thread and was not created by `Thread.create`, this will return you
1338713424 a native thread with a `null` EvenLoop and `isNative` set to true. You need to call `disposeNative()` on such value on thread termination.</haxe_doc>
1338813425 </current>
13389- <main public="1" get="inline" set="null" line="138 " static="1">
13426+ <main public="1" get="inline" set="null" line="164 " static="1">
1339013427 <f a=""><c path="sys.thread.Thread"/></f>
1339113428 <meta><m n=":keep"/></meta>
1339213429 <haxe_doc>Returns the main thread</haxe_doc>
1339313430 </main>
13394- <create public="1" set="method" line="146" static="1">
13395- <f a="?name:job:?onExit:?onAbort">
13431+ <installCallbacks set="method" line="168" static="1">
13432+ <f a="host:callbacks">
13433+ <c path="sys.thread.ThreadCallbackManager"/>
13434+ <t path="sys.thread.ThreadCallbacks"/>
13435+ <c path="sys.thread.IThreadCallbackHandle"/>
13436+ </f>
13437+ <meta><m n=":keep"/></meta>
13438+ </installCallbacks>
13439+ <create public="1" set="method" line="192" static="1">
13440+ <f a="?name:job:?callbacks">
1339613441 <c path="String"/>
1339713442 <f a=""><x path="Void"/></f>
13398- <f a=""><x path="Void"/></f>
13399- <f a="">
13400- <c path="haxe.Exception"/>
13401- <x path="Void"/>
13402- </f>
13443+ <t path="sys.thread.ThreadCallbacks"/>
1340313444 <c path="sys.thread.Thread"/>
1340413445 </f>
1340513446 <meta><m n=":keep"/></meta>
1340613447 <haxe_doc>Creates a new thread that will execute the `job` function, then exit after all events are processed.
1340713448 You can specify a custom exception handler `onAbort` or else `Thread.onAbort` will be called.</haxe_doc>
1340813449 </create>
13409- <getAll public="1" set="method" line="190 " static="1">
13450+ <getAll public="1" set="method" line="246 " static="1">
1341013451 <f a=""><c path="Array"><c path="sys.thread.Thread"/></c></f>
1341113452 <meta><m n=":keep"/></meta>
1341213453 <haxe_doc>Returns a list of all currently running threads.
1341313454 This excludes native threads which were created without Thread.create and have not been
1341413455 registered with a call to Thread.current().</haxe_doc>
1341513456 </getAll>
13416- <onJobStart public="1" set="method" line="200 " static="1">
13417- <f a="f ">
13418- <f a=""><x path="Void"/></f >
13419- <x path="Void "/>
13457+ <addCallbacks public="1" set="method" line="260 " static="1">
13458+ <f a="callbacks ">
13459+ <t path="sys.thread.ThreadCallbacks"/ >
13460+ <c path="sys.thread.IThreadCallbackHandle "/>
1342013461 </f>
1342113462 <meta><m n=":keep"/></meta>
13422- <haxe_doc>Registers `f` to be called when a thread is about to start executing its job.</haxe_doc>
13423- </onJobStart>
13424- <hasBlocking set="method" line="256" static="1">
13463+ <haxe_doc>Registers `callbacks` to be called for every thread, both already-running and future ones.
13464+ Returns a handle that can be used to unregister the callbacks.
13465+
13466+ Unlike callbacks passed to `Thread.create`, closing the returned handle prevents the
13467+ callbacks from being called even for threads that are already running.</haxe_doc>
13468+ </addCallbacks>
13469+ <addCurrentCallbacks public="1" set="method" line="268" static="1">
13470+ <f a="callbacks">
13471+ <t path="sys.thread.CurrentThreadCallbacks"/>
13472+ <c path="sys.thread.IThreadCallbackHandle"/>
13473+ </f>
13474+ <meta><m n=":keep"/></meta>
13475+ <haxe_doc>Registers `callbacks` to be called for the current thread.</haxe_doc>
13476+ </addCurrentCallbacks>
13477+ <hasBlocking set="method" line="294" static="1">
1342513478 <f a=""><x path="Bool"/></f>
1342613479 <meta><m n=":keep"/></meta>
1342713480 </hasBlocking>
1343213485 <m n=":deprecated"><e>"Use haxe.EventLoop.getThreadLoop(thread) instead"</e></m>
1343313486 </meta>
1343413487 </events>
13435- <get_events get="inline" set="null" line="40 ">
13488+ <get_events get="inline" set="null" line="66 ">
1343613489 <f a=""><x path="Null"><c path="haxe.EventLoop"/></x></f>
1343713490 <meta>
1343813491 <m n=":deprecated"><e>"Use haxe.EventLoop.getThreadLoop(thread) instead"</e></m>
@@ -13451,14 +13504,10 @@
1345113504 <c path="sys.thread.Deque"><d/></c>
1345213505 <meta><m n=":keep"/></meta>
1345313506 </messages>
13454- <onExitCallback >
13455- <x path="Null"><f a=""><x path="Void"/></f></x >
13507+ <callbacks final="1" >
13508+ <c path="sys.thread.ThreadCallbackManager"/ >
1345613509 <meta><m n=":keep"/></meta>
13457- </onExitCallback>
13458- <onJobDoneCallback>
13459- <x path="Null"><f a=""><x path="Void"/></f></x>
13460- <meta><m n=":keep"/></meta>
13461- </onJobDoneCallback>
13510+ </callbacks>
1346213511 <isBlocking public="1" expr="true">
1346313512 <x path="Bool"/>
1346413513 <meta>
@@ -13478,42 +13527,33 @@
1347813527 <haxe_doc>Tells if a thread is a native thread that is not managed by Haxe.
1347913528 See `Thread.current` for details.</haxe_doc>
1348013529 </isNative>
13481- <set_name set="method" line="72 ">
13530+ <set_name set="method" line="98 ">
1348213531 <f a="n">
1348313532 <x path="Null"><c path="String"/></x>
1348413533 <x path="Null"><c path="String"/></x>
1348513534 </f>
1348613535 <meta><m n=":keep"/></meta>
1348713536 </set_name>
13488- <toString public="1" set="method" line="78 ">
13537+ <toString public="1" set="method" line="104 ">
1348913538 <f a=""><c path="String"/></f>
1349013539 <meta><m n=":keep"/></meta>
1349113540 </toString>
13492- <sendMessage public="1" set="method" line="82 ">
13541+ <sendMessage public="1" set="method" line="108 ">
1349313542 <f a="msg">
1349413543 <d/>
1349513544 <x path="Void"/>
1349613545 </f>
1349713546 <meta><m n=":keep"/></meta>
1349813547 </sendMessage>
13499- <disposeNative public="1" set="method" line="91 ">
13548+ <disposeNative public="1" set="method" line="117 ">
1350013549 <f a=""><x path="Void"/></f>
1350113550 <meta><m n=":keep"/></meta>
1350213551 </disposeNative>
13503- <dispose set="method" line="97 ">
13552+ <dispose set="method" line="123 ">
1350413553 <f a=""><x path="Void"/></f>
1350513554 <meta><m n=":keep"/></meta>
1350613555 </dispose>
13507- <onJobDone public="1" set="method" line="215">
13508- <f a="f">
13509- <f a=""><x path="Void"/></f>
13510- <x path="Void"/>
13511- </f>
13512- <meta><m n=":keep"/></meta>
13513- <haxe_doc>Registers `f` to be called once the thread has completed executing its job
13514- successfully. It is not called if the thread has thrown an exception.</haxe_doc>
13515- </onJobDone>
13516- <onAbort public="1" set="dynamic" line="233">
13556+ <onAbort set="method" line="288">
1351713557 <f a="e">
1351813558 <c path="haxe.Exception"/>
1351913559 <x path="Void"/>
@@ -13522,28 +13562,49 @@
1352213562 <haxe_doc>This function is called when an uncaught exception aborted a thread.
1352313563 The error will be printed to stdout but this function can be redefined.
1352413564
13565+ If this function throws, the exception is forwarded to the default handler
13566+ (print to stdout) and `onExit` callbacks are still called.
13567+
1352513568 It is generally good practice to call any previously existing callback
1352613569 from functions assigned to this.</haxe_doc>
1352713570 </onAbort>
13528- <onExit public="1" set="method" line="246">
13529- <f a="f">
13530- <f a=""><x path="Void"/></f>
13531- <x path="Void"/>
13532- </f>
13533- <meta><m n=":keep"/></meta>
13534- <haxe_doc>Registers `f` to be called when the thread is exiting. In the case of an exception,
13535- it is called after `onAbort`.
13536-
13537- It is not guaranteed to be called if the thread is killed in a way that does not lead to
13538- normal termination. Any callback assigned to this should not throw an exception.</haxe_doc>
13539- </onExit>
13540- <new set="method" line="66">
13571+ <new set="method" line="91">
1354113572 <f a="impl">
1354213573 <x path="sys.thread.ThreadImpl"/>
1354313574 <x path="Void"/>
1354413575 </f>
1354513576 <meta><m n=":keep"/></meta>
1354613577 </new>
13578+ <haxe_doc>Called when the thread starts, before the job is executed.</haxe_doc>
13579+ <meta><m n=":directlyUsed"/></meta>
13580+ </class>
13581+ <class path="sys.thread.IThreadCallbackHandle" params="" file="/home/runner/work/haxe/haxe/std/sys/thread/ThreadCallback.hx" module="sys.thread.ThreadCallback" interface="1">
13582+ <get_isClosed public="1" set="method">
13583+ <f a=""><x path="Bool"/></f>
13584+ <meta>
13585+ <m n=":compilerGenerated"/>
13586+ <m n=":noCompletion"/>
13587+ </meta>
13588+ </get_isClosed>
13589+ <isClosed public="1" get="accessor" set="null">
13590+ <x path="Bool"/>
13591+ <haxe_doc>Whether this callback has been removed.</haxe_doc>
13592+ </isClosed>
13593+ <close public="1" set="method">
13594+ <f a=""><x path="Void"/></f>
13595+ <haxe_doc>Removes this callback from its parent list.</haxe_doc>
13596+ </close>
13597+ </class>
13598+ <class path="sys.thread.MultiHandle" params="" file="/home/runner/work/haxe/haxe/std/sys/thread/ThreadCallback.hx" module="sys.thread.ThreadCallback">
13599+ <implements path="sys.thread.IThreadCallbackHandle"/>
13600+ <handles final="1"><c path="Array"><c path="sys.thread.IThreadCallbackHandle"/></c></handles>
13601+ <isClosed public="1" get="accessor" set="null"><x path="Bool"/></isClosed>
13602+ <get_isClosed set="method" line="165"><f a=""><x path="Bool"/></f></get_isClosed>
13603+ <close public="1" set="method" line="171"><f a=""><x path="Void"/></f></close>
13604+ <new public="1" set="method" line="159"><f a="handles">
13605+ <c path="Array"><c path="sys.thread.IThreadCallbackHandle"/></c>
13606+ <x path="Void"/>
13607+ </f></new>
1354713608 <meta><m n=":directlyUsed"/></meta>
1354813609 </class>
1354913610 <class path="haxe.EventLoop" params="" file="/home/runner/work/haxe/haxe/std/haxe/EventLoop.hx">
4885748918 </new>
4885848919 <meta><m n=":coreApi"/></meta>
4885948920 </class>
48921+ <typedef path="sys.thread.CurrentThreadCallbacks" params="" file="/home/runner/work/haxe/haxe/std/sys/thread/Thread.hx" module="sys.thread.Thread"><a>
48922+ <onJobDone>
48923+ <x path="Null"><f a=""><x path="Void"/></f></x>
48924+ <meta><m n=":optional"/></meta>
48925+ </onJobDone>
48926+ <onExit>
48927+ <x path="Null"><f a=""><x path="Void"/></f></x>
48928+ <meta><m n=":optional"/></meta>
48929+ </onExit>
48930+ <onAbort>
48931+ <x path="Null"><f a="">
48932+ <c path="haxe.Exception"/>
48933+ <x path="Void"/>
48934+ </f></x>
48935+ <meta><m n=":optional"/></meta>
48936+ </onAbort>
48937+ </a></typedef>
48938+ <typedef path="sys.thread.ThreadCallbacks" params="" file="/home/runner/work/haxe/haxe/std/sys/thread/Thread.hx" module="sys.thread.Thread">
48939+ <a>
48940+ <onStart>
48941+ <x path="Null"><f a=""><x path="Void"/></f></x>
48942+ <meta><m n=":optional"/></meta>
48943+ </onStart>
48944+ <onJobDone>
48945+ <x path="Null"><f a=""><x path="Void"/></f></x>
48946+ <meta><m n=":optional"/></meta>
48947+ </onJobDone>
48948+ <onExit>
48949+ <x path="Null"><f a=""><x path="Void"/></f></x>
48950+ <meta><m n=":optional"/></meta>
48951+ </onExit>
48952+ <onAbort>
48953+ <x path="Null"><f a="">
48954+ <c path="haxe.Exception"/>
48955+ <x path="Void"/>
48956+ </f></x>
48957+ <meta><m n=":optional"/></meta>
48958+ </onAbort>
48959+ </a>
48960+ <haxe_doc>Called when the thread is exiting, after `onAbort` if applicable. If this callback throws,
48961+ the exception is forwarded to the default abort handler, ignoring any assigned `onAbort`.</haxe_doc>
48962+ </typedef>
48963+ <class path="sys.thread._ThreadCallback.ThreadCallback" params="F" file="/home/runner/work/haxe/haxe/std/sys/thread/ThreadCallback.hx" private="1" module="sys.thread.ThreadCallback">
48964+ <implements path="sys.thread.IThreadCallbackHandle"/>
48965+ <callback final="1" public="1"><c path="sys.thread._ThreadCallback.ThreadCallback.F"/></callback>
48966+ <next public="1"><x path="Null"><c path="sys.thread._ThreadCallback.ThreadCallback"><c path="sys.thread._ThreadCallback.ThreadCallback.F"/></c></x></next>
48967+ <prev public="1"><x path="Null"><c path="sys.thread._ThreadCallback.ThreadCallback"><c path="sys.thread._ThreadCallback.ThreadCallback.F"/></c></x></prev>
48968+ <isClosed public="1" get="accessor" set="null"><x path="Bool"/></isClosed>
48969+ <host final="1"><c path="sys.thread.ThreadCallbackStack"><c path="sys.thread._ThreadCallback.ThreadCallback.F"/></c></host>
48970+ <get_isClosed set="method" line="53"><f a=""><x path="Bool"/></f></get_isClosed>
48971+ <close public="1" set="method" line="57"><f a=""><x path="Void"/></f></close>
48972+ <new public="1" set="method" line="44"><f a="host:callback:?prev">
48973+ <c path="sys.thread.ThreadCallbackStack"><c path="sys.thread._ThreadCallback.ThreadCallback.F"/></c>
48974+ <c path="sys.thread._ThreadCallback.ThreadCallback.F"/>
48975+ <c path="sys.thread._ThreadCallback.ThreadCallback"><c path="sys.thread._ThreadCallback.ThreadCallback.F"/></c>
48976+ <x path="Void"/>
48977+ </f></new>
48978+ <meta><m n=":directlyUsed"/></meta>
48979+ </class>
48980+ <class path="sys.thread.ThreadCallbackStack" params="F" file="/home/runner/work/haxe/haxe/std/sys/thread/ThreadCallback.hx" module="sys.thread.ThreadCallback">
48981+ <top><x path="Null"><c path="sys.thread._ThreadCallback.ThreadCallback"><c path="sys.thread.ThreadCallbackStack.F"/></c></x></top>
48982+ <add public="1" set="method" line="80"><f a="f">
48983+ <c path="sys.thread.ThreadCallbackStack.F"/>
48984+ <x path="Null"><c path="sys.thread._ThreadCallback.ThreadCallback"><c path="sys.thread.ThreadCallbackStack.F"/></c></x>
48985+ </f></add>
48986+ <foreach public="1" set="method" line="86"><f a="f">
48987+ <f a="">
48988+ <c path="sys.thread.ThreadCallbackStack.F"/>
48989+ <x path="Void"/>
48990+ </f>
48991+ <x path="Void"/>
48992+ </f></foreach>
48993+ <new public="1" set="method" line="78"><f a=""><x path="Void"/></f></new>
48994+ <meta><m n=":directlyUsed"/></meta>
48995+ </class>
48996+ <class path="sys.thread._ThreadCallback.ThreadCallback_Fields_" params="" file="/home/runner/work/haxe/haxe/std/sys/thread/ThreadCallback.hx" private="1" module="sys.thread.ThreadCallback" final="1">
48997+ <withMutex public="1" params="T" set="method" line="29" static="1"><f a="f">
48998+ <f a=""><c path="withMutex.T"/></f>
48999+ <c path="withMutex.T"/>
49000+ </f></withMutex>
49001+ <meta><m n=":directlyUsed"/></meta>
49002+ </class>
4886049003 <abstract path="sys.thread._ThreadImpl.NativeThreadHandle" params="" file="/home/runner/work/haxe/haxe/std/cpp/_std/sys/thread/ThreadImpl.hx" private="1" module="sys.thread.ThreadImpl">
4886149004 <this><x path="sys.thread._ThreadImpl.NativeThreadHandle"/></this>
4886249005 <meta>
0 commit comments