Skip to content
Felix S. Klock II edited this page Jul 28, 2013 · 1 revision

This is data related to the task described in Ticket #182.

It seems to PnkFelix that this data is inconclusive. Perhaps all the variation is in the noise. More experiments are necessary.


			  R6RS, exn-is-loaded			R6RS, exn-in-stream

benchmark                  cpu      real        gc	     cpu      real        gc	  
boyer                      583       603        53	     579       598        59
browse                    2748      2791       121	    2701      2752       128
cpstak                    1325      1349       298	    1313      1337       305
ctak                      2885      2935       261	    2862      2908       280
dderiv                    1747      1778       242	    1757      1798       234
deriv                     1241      1270       243	    1239      1269       234
destruc                   1078      1094        45	    1031      1048        50
diviter                   1052      1078       186	    1053      1079       197
divrec                    1387      1502       191	    1374      1491       215
puzzle                    1807      1958         9	    1802      1950         9
takl                      1052      1063         0	     963       973         0
triangl                   2250      2271         0	    2313      2336         0
fft                       1386      1434       303	    1375      1424       296
fib                       1633      1647         0	    1633      1657         0
fibfp                     2861      2943       348	    3039      3144       339
mbrot                     2105      2147       777	    2113      2188       460
pnpoly                    1656      1679       116	    1653      1685        66
sum                        603       608         0	     602       612         0
sumfp                     1957      1989       368	    1968      2055       397
tak                       1086      1098         0	    1093      1106         0
ack                         99       105         0	      99       105         1
array1                     439       535        46	     429       516        42
cat                        480       606         0	     467       676         0
string                     507       543        30	     503       540        28
sum1                      1640      2970         7	    1646      2968         6
sumloop                    880       896         0	     879       892         0
tail                       726       862        23	     697       832        36
wc                         310       357         0	     310       354         0
conform                   1371      1395        54	    1373      1396        53
dynamic                    703       773       148	     691       763       144
earley                    1541      1654       349	    1544      1657       350
fibc                      2514      2558       201	    2491      2539       187
graphs                    1510      1555       207	    1509      1562       176
lattice                   1744      1771        14	    1747      1768        22
matrix                    1698      1725        86	    1720      1746       103
maze                      5394      5506        57	    5437      5511        53
mazefun                   1239      1264        54	    1233      1257        43
nqueens                   1384      1414        78	    1398      1422        68
paraffins                 3404      3972      1723	    3388      3953      1759
peval                     1257      1280        14	    1237      1257        10
primes                    7195      7310        96	    7123      7231       101
ray                      10440     19925       218	   10511     19803       206
scheme                    1251      1267        35	    1267      1284        32
simplex                  17881     36228       134	   17888     36250       148
slatex                     482      2136         2	     463      1734         2
perm9                      995      1205       702	     994      1194       686
nboyer                    1428      1529       324	    1436      1543       325
sboyer                    1265      1292        31	    1275      1298        32
gcbench                   1316      1597       818	    1270      1522       748
parsing                   6296      6483        94	    6232      6389       110
gcold                    17954     22147      9267	   17918     22035      9316

			  R5RS, exn-is-loaded			R5RS, exn-in-stream

benchmark                  cpu      real        gc	     cpu      real        gc

boyer                     4136      4230        59	    4103      4171        60
browse                    8268      8398       126	    7859      7952       123
cpstak                    8420      8570       412	    8579      8698       406
ctak                      3663      3734       292	    3626      3681       279
dderiv                    5839      5924       225	    5963      6046       260
deriv                     4741      4824       220	    4906      4986       222
destruc                   8782      8911       200	    9024      9136       180
diviter                   3950      4010       205	    3907      3958       159
divrec                    4496      4667       207	    4453      4630       221
puzzle                   13200     13794       372	   13376     13679       357
takl                      7135      7504         0	    7002      7083         0
triangl                  17014     17325       231	   17365     17610       242
fft                      10229     10612       831	   10459     10737       851
fib                      24402     24810       580	   24976     25390       573
fibfp                    11557     11779       612	   11714     11935       570
mbrot                    15182     15466      1069	   15386     15617      1095
pnpoly                   10370     10515       181	   11366     11500       172
sum                      18486     18717       572	   19172     19418       575
sumfp                    11029     11178       641	   10674     10844       668
tak                      15912     16134       185	   16115     16306       196
ack                       2345      2787        96	    2375      2804        82
array1                    5860      6147       573	    6045      6321       564
cat                        540       836         0	     505       636         0
string                     507       542        28	     503       539        31
sum1                      1657      2981         9	    1662      2985         7
sumloop                  19879     20144       801	   20358     20618       776
tail                       825       964        34	     804       943        30
wc                         856       909        16	     866       924        20
conform                   1977      2008        60	    1966      1995        55
dynamic                   2058      2975       227	    2038      2954       223
earley                    5105      5278       585	    5082      5254       600
fibc                      4054      4117       245	    4055      4117       240
graphs                    4887      4987       278	    4926      5026       310
lattice                   6981      7056        30	    6767      6834        27
matrix                    8924     11464       296	    8699     11293       302
maze                     16315     16756       481	   16419     16775       474
mazefun                   9580      9792       191	    9556      9693       208
nqueens                  13988     14228       425	   14155     14388       400
paraffins                 8590      9722      3324	    8525      9634      3305
peval                     3774      3826        76	    3681      3738        67
primes                   11620     11785       137	   11950     12122       130
ray                      10153     15381       346	   10281     15108       371
scheme                    2974      3022        76	    3000      3106        82
simplex                  13983     19642       328	   14066     19777       317
slatex                     582      1801        10	     577      1722         6
perm9                     4316      4649      1055	    4277      4620      1054
nboyer                    5609      5790       469	    5382      5557       482
sboyer                    5539      5610        98	    5661      5786        89
gcbench                   4257      4588       951	    4335      4662       959
parsing                  15873     16253       327	   15954     16405       306
gcold                    41014     45845     10592	   41426     46012     10554

For semi-completeness, here is the diff describing the changes PnkFelix made during this experiment:


Index: src/Asm/IAssassin/sassy-instr.sch
===================================================================
--- src/Asm/IAssassin/sassy-instr.sch	(revision 3715)
+++ src/Asm/IAssassin/sassy-instr.sch	(working copy)
@@ -280,8 +280,10 @@
 	
 (define-sassy-instr (ia86.exception_noncontinuable excode)
   ;; `(comment -- exception ,excode)
+  `(mov		(& ,GLOBALS ,$g.second) ,SECOND)
+  `(mov         ,SECOND ,excode)
   `(call	(& ,GLOBALS ,$m.exception))
-  `(dwords	,excode))
+  )
 		
 ;;; exception_continuable excode restart
 ;;;	Jump to exception handler with code without destroying
@@ -300,8 +302,7 @@
 
 (define-sassy-instr (ia86.exception_continuable excode restart)
   ;; `(comment -- exception ,excode)
-  `(call	(& ,GLOBALS ,$m.exception))
-  `(dwords	,excode)
+  (ia86.exception_noncontinuable excode)
   `(align	,code_align)
   `(jmp	,restart))
 
Index: src/Rts/Shared/i386-millicode.asm
===================================================================
--- src/Rts/Shared/i386-millicode.asm	(revision 3714)
+++ src/Rts/Shared/i386-millicode.asm	(working copy)
@@ -584,11 +584,8 @@
 PUBLIC i386_inexactp
 	MCg	mc_inexactp
 	
-PUBLIC i386_exception				; Exn encoded in instr stream
-	mov	[GLOBALS+G_SECOND+4], SECOND
-	mov	SECOND, [GLOBALS]		; Exn code address
-	mov	ax, [SECOND]			; Exn code
-	and	eax, 0xFFFF			;   is 16 bits
+PUBLIC i386_exception
+	and	eax, 0xFFFF			; Exn code is 16 bits
 	shl	eax, 2				;     encoded as fixnum
 	jmp	i386_signal_exception_intrsafe

(obviously this changeset should not be put into the repository without a corresponding change to the Petit/Nasm backend in source:trunk/larceny_src/include/Nasm/i386-instr.ah)

Clone this wiki locally