commit cfe827358326e3400074b7e7d470610e4c54d3bd
parent 5ea5b055514c7432755cd5570180c92314ec87b9
Author: Alexander Burger <abu@software-lab.de>
Date: Tue, 21 May 2013 17:23:54 +0200
Discard active coroutine upon error
Diffstat:
M | src64/err.l | | | 19 | +++++++++++++++++++ |
M | src64/tags | | | 184 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
2 files changed, 111 insertions(+), 92 deletions(-)
diff --git a/src64/err.l b/src64/err.l
@@ -321,6 +321,25 @@
while nz # Yes
call popCtlFiles # Clean up
loop
+ ld X (Stack1) # Search through stack segments
+ ld C (Stacks) # Segment bitmask
+ ld A 1
+ do
+ shr C 1 # In use?
+ if c # Yes
+ null (X -II) # Active?
+ if z # Yes: Discard coroutine
+ xor (Stacks) A # Clear in segment bitmask
+ if z # Stopped last coroutine?
+ ld (StkLimit) 0 # Yes: Clear stack limit
+ end
+ ret
+ end # nz
+ end
+ while nz
+ sub X (StkSize) # Next segment
+ add A A
+ loop
ret
### Checks ###
diff --git a/src64/tags b/src64/tags
@@ -748,102 +748,102 @@ sys/x86-64.linux.defs.l,1959
fishAXY1640,41196
doBy1669,41750
-./err.l,1922
+./err.l,1927
dbgS5,73
errnoEXY24,572
errEXYZ33,734
unwindC_Z169,4297
-needSymAX327,8789
-needSymEX339,8988
-needVarAX350,9177
-needVarEX360,9354
-checkVarAX369,9521
-checkVarYX377,9657
-checkVarEX385,9793
-protErrEX390,9901
-symNsErrEX394,9951
-stkErr399,10026
-stkErrE401,10051
-stkErrX403,10077
-stkErrEX405,10103
-argErrAX410,10191
-argErrEX412,10218
-numErrAX416,10266
-numErrEX418,10293
-cntErrAX422,10341
-cntErrCX424,10368
-cntErrEX426,10395
-symErrAX430,10443
-symErrYX432,10470
-symErrEX434,10497
-extErrEX438,10545
-pairErrAX442,10593
-pairErrEX444,10621
-atomErrAX448,10671
-atomErrEX450,10699
-lstErrAX454,10749
-lstErrEX456,10776
-varErrAX460,10824
-varErrEX462,10851
-divErrX466,10899
-renErrEX471,10956
-makeErrX475,11004
-reentErrEX480,11063
-yieldErrX484,11115
-yieldErrEX486,11143
-msgErrYX490,11195
-msgErrAX492,11222
-msgErrEX494,11249
-brkErrX498,11297
-openErrEX504,11367
-closeErrX508,11418
-closeErrEX510,11446
-pipeErrX514,11499
-forkErrX519,11559
-waitPidErrX524,11618
-badFdErrEX529,11684
-noFdErrX533,11736
-eofErr538,11795
-suparErrE544,11861
-badInputErrB549,11922
-badDotErrE557,12013
-selectErrX562,12073
-wrBytesErr567,12137
-wrChildErr573,12212
-wrSyncErrX579,12287
-wrJnlErr584,12351
-wrLogErr590,12422
-truncErrX596,12493
-dbSyncErrX601,12555
-trSyncErrX606,12619
-lockErr611,12683
-dbfErrX617,12752
-jnlErrX622,12809
-idErrXL627,12866
-dbRdErr632,12940
-dbWrErr638,13009
-dbSizErr644,13078
-tellErr650,13148
-ipSocketErrX656,13216
-ipGetsocknameErrX661,13284
-ipV6onlyErrX666,13362
-ipReuseaddrErrX671,13430
-ipBindErrX676,13504
-ipListenErrX681,13568
-udpOvflErr686,13636
-undefinedCE693,13735
-undefinedCX695,13765
-undefinedEX697,13795
-dlErrX701,13848
-ret709,13994
-retc711,14015
-retnc714,14045
-retz717,14076
-retnz720,14106
-retNull723,14137
-retNil726,14172
-retT729,14208
-retE_E732,14243
+needSymAX346,9296
+needSymEX358,9495
+needVarAX369,9684
+needVarEX379,9861
+checkVarAX388,10028
+checkVarYX396,10164
+checkVarEX404,10300
+protErrEX409,10408
+symNsErrEX413,10458
+stkErr418,10533
+stkErrE420,10558
+stkErrX422,10584
+stkErrEX424,10610
+argErrAX429,10698
+argErrEX431,10725
+numErrAX435,10773
+numErrEX437,10800
+cntErrAX441,10848
+cntErrCX443,10875
+cntErrEX445,10902
+symErrAX449,10950
+symErrYX451,10977
+symErrEX453,11004
+extErrEX457,11052
+pairErrAX461,11100
+pairErrEX463,11128
+atomErrAX467,11178
+atomErrEX469,11206
+lstErrAX473,11256
+lstErrEX475,11283
+varErrAX479,11331
+varErrEX481,11358
+divErrX485,11406
+renErrEX490,11463
+makeErrX494,11511
+reentErrEX499,11570
+yieldErrX503,11622
+yieldErrEX505,11650
+msgErrYX509,11702
+msgErrAX511,11729
+msgErrEX513,11756
+brkErrX517,11804
+openErrEX523,11874
+closeErrX527,11925
+closeErrEX529,11953
+pipeErrX533,12006
+forkErrX538,12066
+waitPidErrX543,12125
+badFdErrEX548,12191
+noFdErrX552,12243
+eofErr557,12302
+suparErrE563,12368
+badInputErrB568,12429
+badDotErrE576,12520
+selectErrX581,12580
+wrBytesErr586,12644
+wrChildErr592,12719
+wrSyncErrX598,12794
+wrJnlErr603,12858
+wrLogErr609,12929
+truncErrX615,13000
+dbSyncErrX620,13062
+trSyncErrX625,13126
+lockErr630,13190
+dbfErrX636,13259
+jnlErrX641,13316
+idErrXL646,13373
+dbRdErr651,13447
+dbWrErr657,13516
+dbSizErr663,13585
+tellErr669,13655
+ipSocketErrX675,13723
+ipGetsocknameErrX680,13791
+ipV6onlyErrX685,13869
+ipReuseaddrErrX690,13937
+ipBindErrX695,14011
+ipListenErrX700,14075
+udpOvflErr705,14143
+undefinedCE712,14242
+undefinedCX714,14272
+undefinedEX716,14302
+dlErrX720,14355
+ret728,14501
+retc730,14522
+retnc733,14552
+retz736,14583
+retnz739,14613
+retNull742,14644
+retNil745,14679
+retT748,14715
+retE_E751,14750
./sym.l,1776
cmpLongAX_F5,78