commit 5a1a9877c07d71c3ea9f58b258411ca5586858a0
parent fc875ca7562a1d6836af9af9014e87a577101cb0
Author: Alexander Burger <abu@software-lab.de>
Date: Sat, 13 Oct 2012 16:05:48 +0200
Save 'reason' in error handler
Diffstat:
3 files changed, 108 insertions(+), 99 deletions(-)
diff --git a/src/main.c b/src/main.c
@@ -1,4 +1,4 @@
-/* 01aug12abu
+/* 13oct12abu
* (c) Software Lab. Alexander Burger
*/
@@ -501,11 +501,14 @@ void err(any ex, any x, char *fmt, ...) {
va_list ap;
char msg[240];
outFrame f;
+ cell c1;
va_start(ap,fmt);
vsnprintf(msg, sizeof(msg), fmt, ap);
va_end(ap);
val(Up) = ex ?: Nil;
+ if (x)
+ Push(c1, x);
if (msg[0]) {
any y;
catchFrame *p;
diff --git a/src64/err.l b/src64/err.l
@@ -1,4 +1,4 @@
-# 05oct12abu
+# 13oct12abu
# (c) Software Lab. Alexander Burger
# Debug print routine
@@ -31,10 +31,16 @@
# Y message format
# Z message parameter
(code 'errEXYZ)
- link
- push E # <L I> Save reason
- link
- sub S (+ 240 IV) # <S> Message buffer, <S 240> outFrame
+ null E # Reason?
+ if nz # Yes
+ link
+ push E # Save reason
+ link
+ else
+ push E # Push reason
+ sub S I # and dummy
+ end
+ sub S (+ 240 IV) # <S> Message, <S 240> outFrame, <S (+ 240 V)> reason
cc snprintf(S 240 Y Z) # Build message
null X # Error context?
ld A Nil
@@ -113,7 +119,7 @@
call printE # Print context
call newline
end
- ld E (L I) # Get reason
+ ld E (S (+ 240 V)) # Get reason
null E # any?
if nz # Yes
call printE # Print reason
diff --git a/src64/tags b/src64/tags
@@ -416,13 +416,13 @@ anduAE_A big.l 325
anonymousX_FE io.l 2085
applyVarXYZ_E apply.l 358
applyXYZ_E apply.l 4
-argErrAX err.l 406
-argErrEX err.l 408
-atomErrAX err.l 444
-atomErrEX err.l 446
-badDotErrE err.l 553
-badFdErrEX err.l 525
-badInputErrB err.l 545
+argErrAX err.l 412
+argErrEX err.l 414
+atomErrAX err.l 450
+atomErrEX err.l 452
+badDotErrE err.l 559
+badFdErrEX err.l 531
+badInputErrB err.l 551
balanceCEY sym.l 910
balanceXY sym.l 892
begString main.l 2305
@@ -437,7 +437,7 @@ boxNum_A gc.l 824
boxNum_C gc.l 836
boxNum_E gc.l 848
boxNum_X gc.l 860
-brkErrX err.l 494
+brkErrX err.l 500
brkLoadE_E flow.l 2856
bufAoAC_C db.l 956
bufStringE_SZ io.l 1143
@@ -472,15 +472,15 @@ cbl7 main.l 1965
cbl8 main.l 1969
cbl9 main.l 1973
charSymACX_CX io.l 1257
-checkVarAX err.l 365
-checkVarEX err.l 381
-checkVarYX err.l 373
+checkVarAX err.l 371
+checkVarEX err.l 387
+checkVarYX err.l 379
chopExtNmX_E db.l 133
circE_YF main.l 740
cleanUpY db.l 570
closeAX io.l 5
-closeErrEX err.l 506
-closeErrX err.l 504
+closeErrEX err.l 512
+closeErrX err.l 510
closeInFileA io.l 142
closeOnExecAX io.l 43
closeOutFileA io.l 164
@@ -490,9 +490,9 @@ cmpLongAX_F sym.l 5
cmpNumAE_F big.l 1567
cmpUserAX_F subr.l 4125
cmpuAE_F big.l 1587
-cntErrAX err.l 418
-cntErrCX err.l 420
-cntErrEX err.l 422
+cntErrAX err.l 424
+cntErrCX err.l 426
+cntErrEX err.l 428
compareAE_F main.l 905
consAC_E gc.l 786
consA_A gc.l 530
@@ -536,22 +536,22 @@ dateXYZ_E main.l 2420
dbAEX db.l 1331
dbFetchEX db.l 1319
dbFileBlkY_AC db.l 246
-dbRdErr err.l 628
-dbSizErr err.l 640
+dbRdErr err.l 634
+dbSizErr err.l 646
dbSizeX_A db.l 1224
-dbSyncErrX err.l 597
+dbSyncErrX err.l 603
dbTouchEX db.l 1445
-dbWrErr err.l 634
+dbWrErr err.l 640
dbZapE db.l 1477
dbfBuf_AF db.l 51
-dbfErrX err.l 613
+dbfErrX err.l 619
dbgS err.l 5
decE_A big.l 1504
divDone big.l 1255
-divErrX err.l 462
+divErrX err.l 468
divUnder big.l 1261
divuAE_A big.l 1045
-dlErrX err.l 697
+dlErrX err.l 703
doAbs big.l 2731
doAccept net.l 145
doAdd big.l 2171
@@ -910,7 +910,7 @@ doYoke subr.l 1196
doZap sym.l 1186
doZero sym.l 1756
endString_E main.l 2316
-eofErr err.l 534
+eofErr err.l 540
eolA_F io.l 3684
equalAE_F main.l 772
erOpenEXY io.l 1629
@@ -928,7 +928,7 @@ evSymX_E main.l 2214
evSymY_E main.l 2217
execE main.l 2128
execErrS main.l 187
-extErrEX err.l 434
+extErrEX err.l 440
extNmCE_X db.l 64
externX_E sym.l 266
extraXY_FCYZ flow.l 1285
@@ -951,7 +951,7 @@ fmtNum0AE_E big.l 1794
fmtNumAE_E big.l 1797
fmtScaleCX_CX big.l 2061
fmtWordACX_CX big.l 2046
-forkErrX err.l 515
+forkErrX err.l 521
forkLispX_FE flow.l 3266
fsyncDB db.l 932
funqE_FE main.l 2152
@@ -969,7 +969,7 @@ giveupX main.l 180
halfA_A big.l 87
heapAlloc main.l 217
iSignalCE main.l 192
-idErrXL err.l 623
+idErrXL err.l 629
idxDelXY_E sym.l 2292
idxGetXY_E sym.l 2205
idxPutXY_E sym.l 2222
@@ -982,24 +982,24 @@ initInFileCA_A io.l 67
initOutFileA_A io.l 106
initSeedE_E big.l 2927
internEXY_FE sym.l 75
-ipBindErrX err.l 672
-ipGetsocknameErrX err.l 657
-ipListenErrX err.l 677
-ipReuseaddrErrX err.l 667
-ipSocketErrX err.l 652
-ipV6onlyErrX err.l 662
+ipBindErrX err.l 678
+ipGetsocknameErrX err.l 663
+ipListenErrX err.l 683
+ipReuseaddrErrX err.l 673
+ipSocketErrX err.l 658
+ipV6onlyErrX err.l 668
isBlankE_F sym.l 704
isInternEXY_F sym.l 37
isLetterOrDigitA_F sym.l 3584
isLifeE_F db.l 525
isaCE_F flow.l 1012
-jnlErrX err.l 618
+jnlErrX err.l 624
jnlFileno_A db.l 344
joinLocalCX flow.l 2837
lisp main.l 2082
loadAllX_E main.l 162
loadBEX_E io.l 4072
-lockErr err.l 607
+lockErr err.l 613
lockFileAC io.l 28
lockJnl db.l 352
logBlock db.l 432
@@ -1007,11 +1007,11 @@ logFileno_A db.l 348
lookupCE_E subr.l 3872
loopX flow.l 2167
loopY_FE flow.l 2406
-lstErrAX err.l 450
-lstErrEX err.l 452
+lstErrAX err.l 456
+lstErrEX err.l 458
lupCE_E subr.l 3815
main main.l 33
-makeErrX err.l 471
+makeErrX err.l 477
markE gc.l 5
matchCE_F subr.l 3147
memberXY_FY main.l 1067
@@ -1021,9 +1021,9 @@ mkCharA_A sym.l 573
mkStrEZ_A sym.l 650
mkStrE_E sym.l 623
msec_A main.l 2330
-msgErrAX err.l 488
-msgErrEX err.l 490
-msgErrYX err.l 486
+msgErrAX err.l 494
+msgErrEX err.l 496
+msgErrYX err.l 492
muluAE_A big.l 859
nameA_A sym.l 469
nameE_E sym.l 477
@@ -1032,19 +1032,19 @@ nameY_Y sym.l 493
natBufACZ_CZ main.l 1582
natRetACE_CE main.l 1681
needC gc.l 54
-needSymAX err.l 323
-needSymEX err.l 335
-needVarAX err.l 346
-needVarEX err.l 356
+needSymAX err.l 329
+needSymEX err.l 341
+needVarAX err.l 352
+needVarEX err.l 362
newBlock_X db.l 449
newIdEX_X db.l 492
newline io.l 4665
-noFdErrX err.l 529
+noFdErrX err.l 535
nonblockingA_A io.l 51
-numErrAX err.l 412
-numErrEX err.l 414
+numErrAX err.l 418
+numErrEX err.l 420
oct3C_CA db.l 180
-openErrEX err.l 500
+openErrEX err.l 506
oruAE_A big.l 394
outAoA io.l 4714
outNameE io.l 4738
@@ -1057,12 +1057,12 @@ packAoACX_CX db.l 108
packECX_CX sym.l 1303
packExtNmX_E db.l 87
packOctACX_CX db.l 120
-pairErrAX err.l 438
-pairErrEX err.l 440
+pairErrAX err.l 444
+pairErrEX err.l 446
parseBCE_E io.l 3893
pathStringE_SZ io.l 1173
pico glob.l 142
-pipeErrX err.l 510
+pipeErrX err.l 516
popCtlFiles io.l 1962
popErrFiles io.l 1955
popInFiles io.l 1864
@@ -1079,7 +1079,7 @@ prinE_E io.l 4978
printE io.l 4765
printE_E io.l 4756
propEC_E sym.l 2745
-protErrEX err.l 386
+protErrEX err.l 392
pushCtlFilesY io.l 1859
pushErrFilesY io.l 1854
pushInFilesY io.l 1819
@@ -1108,26 +1108,26 @@ readA_E io.l 2308
readC_E io.l 2492
redefMsgEC flow.l 4
redefineCE flow.l 109
-reentErrEX err.l 476
+reentErrEX err.l 482
remDone big.l 1479
remUnder big.l 1485
remuAE_A big.l 1266
-renErrEX err.l 467
+renErrEX err.l 473
restart main.l 154
resumeCoroutine flow.l 2563
-ret err.l 705
-retE_E err.l 728
-retNil err.l 722
-retNull err.l 719
-retT err.l 725
-retc err.l 707
-retnc err.l 710
-retnz err.l 716
-retz err.l 713
+ret err.l 711
+retE_E err.l 734
+retNil err.l 728
+retNull err.l 725
+retT err.l 731
+retc err.l 713
+retnc err.l 716
+retnz err.l 722
+retz err.l 719
rewindLog db.l 928
runE_E main.l 2140
rwUnlockDbA db.l 269
-selectErrX err.l 558
+selectErrX err.l 564
serverCEY_FE net.l 273
setAdrAS db.l 36
setAdrAZ db.l 22
@@ -1151,76 +1151,76 @@ slowNbC_FA io.l 207
slowZ_F io.l 185
space io.l 4669
stdinByte_A io.l 426
-stkErr err.l 395
-stkErrE err.l 397
-stkErrEX err.l 401
-stkErrX err.l 399
+stkErr err.l 401
+stkErrE err.l 403
+stkErrEX err.l 407
+stkErrX err.l 405
subAE_A big.l 1542
subStrAE_F sym.l 1485
subuAE_A big.l 682
-suparErrE err.l 540
+suparErrE err.l 546
symByteCX_FACX io.l 1089
symCharCX_FACX io.l 1110
-symErrAX err.l 426
-symErrEX err.l 430
-symErrYX err.l 428
-symNsErrEX err.l 390
+symErrAX err.l 432
+symErrEX err.l 436
+symErrYX err.l 434
+symNsErrEX err.l 396
symToNumXA_FE big.l 1681
tcSetC main.l 388
tcpAcceptA_FE net.l 109
tellBegZ_Z io.l 1005
tellEndAZ io.l 1012
-tellErr err.l 646
+tellErr err.l 652
tenfoldA_A big.l 157
testEscA_F io.l 2051
throwErrZX flow.l 2507
tmDateC_E main.l 2410
tmTimeY_E main.l 2597
tokenCE_E io.l 2522
-trSyncErrX err.l 602
+trSyncErrX err.l 608
traceCY flow.l 3022
trimE_E subr.l 1769
-truncErrX err.l 592
+truncErrX err.l 598
truncLog db.l 947
tryLockCE_FA db.l 299
twiceA_A big.l 47
twiceBigA_A big.l 57
-udpOvflErr err.l 682
+udpOvflErr err.l 688
unLockFileAC io.l 15
unLockJnl db.l 357
-undefinedCE err.l 689
-undefinedCX err.l 691
-undefinedEX err.l 693
+undefinedCE err.l 695
+undefinedCX err.l 697
+undefinedEX err.l 699
uniFillE_E subr.l 3886
unifyCEYZ_F subr.l 3364
uninternEXY sym.l 356
unsync io.l 1059
-unwindC_Z err.l 165
-varErrAX err.l 456
-varErrEX err.l 458
+unwindC_Z err.l 171
+varErrAX err.l 462
+varErrEX err.l 464
waitFdCEX_A io.l 2764
-waitPidErrX err.l 520
+waitPidErrX err.l 526
wifsignaledS_F sys/x86-64.linux.code.l 21
wifstoppedS_F sys/x86-64.linux.code.l 16
wipeE sym.l 3275
wrBlockZ db.l 398
wrBytesCEX_F io.l 317
-wrBytesErr err.l 563
+wrBytesErr err.l 569
wrChildCXY io.l 353
-wrChildErr err.l 569
-wrJnlErr err.l 580
+wrChildErr err.l 575
+wrJnlErr err.l 586
wrLockDb db.l 262
wrLockFileC io.l 23
-wrLogErr err.l 586
+wrLogErr err.l 592
wrOpenEXY io.l 1496
wrSetCL_F io.l 2737
-wrSyncErrX err.l 575
+wrSyncErrX err.l 581
wtermsigS_A sys/x86-64.linux.code.l 28
xCntAX_FA main.l 2264
xCntCX_FC main.l 2255
xCntEX_FE main.l 2246
xSymE_E main.l 2221
xoruAE_A big.l 465
-yieldErrEX err.l 482
-yieldErrX err.l 480
+yieldErrEX err.l 488
+yieldErrX err.l 486
zapZeroA_A big.l 6