~mwhudson/pypy/imported-funding-16_42

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: paper.dvi
%%Pages: 21
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips paper.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource:  TeX output 2003.09.16:1004
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

%%EndProcSet
TeXDict begin 40258431 52099146 1000 600 600 (paper.dvi)
@start
%DVIPSBitmapFont: Fa cmmi6 6 2
/Fa 2 117 df<13F8EA0FF0A21200A2485AA4485AA4380787E0EB9FF8EBB83CEBE01C38
0FC01E1380A21300001E5BA35C5AA2ECF0201530481460EB01E015C0A239F000E380ECFF
000060133C1C247CA224>104 D<133013785BA4485AA4485AB51280A23803C000485AA4
48C7FCA4121EA25B1480383C03001306A25BEA1C38EA0FF0EA07C011217D9F18>116
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmcsc10 8 56
/Fb 56 128 df<13E0EA01F01203A2EA07E0EA0FC0EA1F00121E5A5A12E012400C0C71AD
25>19 D<00C01330A36C137000601360007013E0003013C0EA3C03381E0780380FFF006C
5AEA01F8140C78AD25>21 D<1238127C12FEA212FF127F123B1203A41206A3120CA21218
1230127012200814798615>44 D<B51280A411047E9019>I<1238127C12FEA3127C1238
0707798615>I<EC0380A34A7EA24A7EA34A7E141BA2EC31F8A2EC71FC1460A2ECE0FEEC
C07EA249487EA349486C7EA249800106130FA249801507A2011FB57EA29038180003496D
7EA201708001601300A24980167EA2484880A2486C1580D80FE0EC7FC0D8FFFC903807FF
FEA22F2F7DAE36>65 D<B612FCEDFF803A03F8000FE00001EC03F06F7E6F7E82167E167F
A6167E16FE5E4B5A4B5AED0FE0ED7F8090B6C7FC16E09039F80003F0ED01FC6F7E167F82
1780161F17C0A61780163FEE7F00A216FEED03FC0003EC0FF0B712C04BC7FC2A2D7DAC33
>I<DA1FE01380903901FFFC01903907F00F0390391F800187013EC712E749147F484814
3F4848141F49140F48481407120F485A160348C8FCA2481501A2127E93C7FC12FEA9127E
A2007FED0180A27EA26C6CEC0300A26C7E000715066C7E6D5C6C6C5CD8007C5C6D5C6D6C
485A903907F00F80902601FFFEC7FC9038001FF0292F7BAD34>I<B612FCEDFF803A03F8
000FE00001EC03F0ED00FC167E82EE1F80160FEE07C017E0160317F0A217F81601A317FC
AA17F8A3EE03F0A217E0160717C0160FEE1F801700167E5EED03F80003EC0FE0B7128003
FCC7FC2E2D7DAC37>I<B712FCA23903F800030001EC007C82161E160EA21606A3160782
1518A293C7FCA31538157815F890B5FCA2EBF800157815381518A217C0A39238000180A4
160317005EA25E5E167F0003EC01FEB7FCA22A2D7DAC31>I<B712F8A23903F800070001
1400167C163C161CA2160CA3160E16061530A21600A31570A2EC01F090B5FCA2EBF801EC
0070A21530A592C7FCAB487EB512F8A2272D7DAC2F>I<DA1FF01340DAFFFE13C0903907
F8078190390FC001C3013FC71263017C143749141F4848140F48481407485A000F150348
5A160148C8FCA2481500A2127E170012FEA892381FFFFE127E9238001FE0007FED0FC0A2
7E7F121FA26C7E6C7E12036C7E6C6C141F137C013F1433D90FC013E1903907F803C00100
B5EA0040DA1FF813002F2F7BAD39>I<B539F01FFFFEA2D803FCC7EA7F806C48EC3F00B2
90B7FCA201F8C7123FB3486CEC7F80B539F01FFFFEA22F2D7DAC36>I<B512F0A23803FC
006C5AB3B3A3487EB512F0A2142D7DAC1B>I<90B512F0A201001300147EB3AD1238127C
12FEA2147C4813FC00785BEA70016C485A381E07C03807FF80D801FCC7FC1C2E7CAC26>
I<B500F0EB7FFEA2D803FCC7EA1FE06C481580EE1E00161C5E5E16C04B5A4BC7FC15065D
15385D5D4A5A4A5A4A7E4A7E141FEC37F0EC63F814C19038F980FC9038FB00FE01FE137E
497F49806F7E150F826F7E15036F7E821500167E167FEE3F80161F17C0486CEC3FF0B5D8
F001B5FCA2302D7DAC38>I<B512F8A2D803FCC8FC6C5AB3A71618A41630A41670A216F0
15011503ED07E00003143FB7FCA2252D7DAC2D>I<D8FFF892380FFF806D5D0003EFE000
00015F01BE1537A2019F1567A3D98F8014C7A2D987C0EB0187A3D983E0EB0307A2D981F0
1306A3D980F8130CA2027C1318A36E1330A26E1360A391380F80C0A2913807C180A39138
03E300A2EC01F6A3EC00FCA2486C1378D80FF04B7EB50203B512801530392D7CAC42>I<
D8FFF8903801FFFE7FD801FE9038001FE06DEC078001BFEC0300EB9F8080138FEB87E080
1383EB81F880EB80FE147E801580141FEC0FC015E0EC07F0140315F8EC01FC1400157E15
7F153FED1F8316C3ED0FE31507ED03F316FB15016FB4FCA28282A282486C80D80FF080B5
FC822F2D7DAC36>I<EC3FE0903801FFFC90390FE03F8090391F0007C0017EEB03F001F8
EB00F84848147C4848800007153F4848EC1F80A24848EC0FC0A248C8EA07E0A24816F0A2
007E1503A200FE16F8AA007FED07F0A36C16E06D140F001F16C0A26C6CEC1F80A26C6CEC
3F006C6C147E6C6C5C6C6C495A017E495A90391F800FC090390FE03F80902601FFFCC7FC
9038003FE02D2F7BAD38>I<B612F815FF3A03F8001FC00001EC07E0ED01F8150016FC16
7EA2167FA6167EA216FC16F81501ED07E0ED1FC090B6120015F801F8C8FCB2487EB512F0
A2282D7DAC31>I<B612E015FE3A03F8003F800001EC07E06F7E6F7E6F7E82167E167FA5
167E16FE5E4B5A4B5A4B5AED3F8090B500FEC7FC15F89038F8007E151F6F7E6F7E821503
82A582A4170316FC15011707486C903800FE06B500F0EB7F0CEE1FFCC9EA07F0302E7DAC
35>82 D<90383F80103901FFF0303907C07C70380F000E001CEB07F0003C130300381301
481300A200F01470A315307EA26C1400127EEA7F80EA3FF013FF6C13F06C13FE6C7F0001
14806C6C13C0010713E09038007FF0EC07F81401140015FC157C12C0153CA37E1538A26C
14786C14706C14E06CEB01C038E7800339E1F00F0038C07FFE38800FF01E2F7BAD29>I<
007FB712F0A29039000FC007007C15010070ED0070A200601630A200E01638A2481618A5
C71500B3A94A7E011FB512E0A22D2D7DAC34>I<B539F001FFFEA2D803FCC7EA1FE06C48
EC0780EE0300B3AC000015067F137C5E7F011E5C011F5CD907805B903903E001C0903901
F80F809026007FFEC7FCEC0FF02F2E7DAC36>I<B500C090381FFF80A2D807FCC73803F8
006C48EC01E000016F5AA26C6C4A5AA27F017E4AC7FCA26D1406A26E130E011F140CA26D
6C5BA26E133801071430A26D6C5BA26E13E001015CA26D6C485AA2ECFE03027E90C8FCA2
EC3F06A2158EEC1F8CA2EC0FD8A215F86E5AA26E5AA36E5AA2312E7EAC36>I<B53CC03F
FFE003FFF0A22807F80001FEC7EA7F806C484AEC1E000300151C7F00016F1418167E6D17
38000003FF1430A26D1770017E496D1360169F017F17E06D9026030FC05BA2D91F804B5A
92380607E0A2D90FC04BC7FC92380C03F0A2D907E0150692381801F8A2D903F05D923830
00FCA2D901F85D4B137EA2D900FC5D4B133FA2027E5DDA7F80EB1FE0A2023F5D92C7120F
A26E5D021E1407A2020E92C8FC020C80442E7EAC49>I<3B7FFFF003FFFCA20001D98000
13806C90C7003EC7FC6D14386D6C133016706D6C13606D6C5B15016D6C485AD903F890C8
FC01011306ECFC0E903800FE0CEC7F181538EC3FF06E5A5D6E7E6E7E14034A7E4A7E140C
4A7EEC387F9138303F8014609138E01FC049486C7EEC8007D903007F496D7E0106130149
80011C6D7E49147F133001706E7ED801F881D807FC4A7EB50103B51280A2312D7EAC36>
I<B500C090380FFF80A2D807FCC73803FC000003ED01E000015E6C6C5D1603017F92C7FC
6D6C1306160E6D6C130C6D6C131C16186D6C5B6D6C137016606D6C5B903800FE015EEC7F
03DA3F83C8FC1586EC1FCEEC0FEC15F814076E5AB04A7E49B512C0A2312D7EAC36>I<00
3FB61280A29039E0003F0001805B003EC7127E003C5C003813015D4813034A5A5D006013
0F5D4A5A143FC790C7FC147E14FE5C13015C495A13075C495A131F5C133F91C712C0137E
13FE5B485A000314015B120748481480491303121F49130748C7120F48143F007EEB01FF
B7FCA2222D7BAC2C>I<14E0A2497EA3497EA3EB067CA2EB0E7EEB0C3EA2497EA3496C7E
A201707FEB6007A2496C7E90B5FC4880EB8001A2D803007F1400A20006147CA2000F147E
123F3AFFC003FFE0A223237EA229>97 D<B512FEECFFC0390FC007E00007EB01F8EC00FC
157C157EA5157C15FCEC01F8EC07F090B512C015809038C007F0EC01F8EC00FC157E153E
153FA5153E157E15FC1401000FEB03F0B612E0150020227EA127>I<903803F80290381F
FE0690387E038E3901F800DED803E0137E4848133E485A48C7121EA2003E140EA2127E00
7C1406A212FC1500A7007C1406A2127E123E150C7EA26C6C13186C6C13306C6C1360D801
F813C039007E038090381FFF00EB03F81F247DA227>I<B512FCECFF80390FC00FE00007
EB01F06E7E157C81A281A2ED0F80A316C0A91680A2151F1600151E153E5D5D4A5A000FEB
07E0B6128002FCC7FC22227EA129>I<B612F8A2380FC0010007EB007815381518151CA2
150C140CA31500141C143CEBFFFCA2EBC03C141C140CA21503A214001506A3150EA2151E
153E000F14FCB6FCA220227EA125>I<B612F8A2380FC0010007EB007815381518151CA2
150CA2140CA21500A2141C143CEBFFFCA2EBC03C141C140CA491C7FCA7487EB5FCA21E22
7EA124>I<903803FC0190381FFF0390387F03C79038F800EFD803E0133F48487F485A90
C77E5A003E80A2127E81127C12FC92C7FCA691380FFFF0127C007E9038003F0081123EA2
7E6C7EA26C7ED803F05BC66C137790387F01E390381FFF81D903FEC7FC24247DA22B>I<
3AFFFE0FFFE0A23A0FE000FE006C48137CAC90B512FCA29038C0007CAE486C13FE3AFFFE
0FFFE0A223227EA129>I<EAFFFEA2EA0FE0EA07C0B3AAEA0FE0EAFFFEA20F227EA114>I<
3803FFF0A238001F80130FB3A41230127812FCA21400485AEA601EEA383CEA1FF8EA07E0
14237EA11C>I<D8FFFEEBFFE0A2D80FE0EB7F006C48137C15705D4A5A4A5A4AC7FC140E
5C14305C14E0EBC1F0EBC3F813C6EBCC7CEBD87EEBF03E497E01C07F140F6E7E6E7EA26E
7E6E7E81157C157E486C137F3AFFFE01FFF0A224227EA12A>I<B5FCA2EA0FE06C5AB215
30A41570A2156015E014011403000F130FB6FCA21C227EA122>I<D8FFC0ECFFC06D5B00
0FEDFC0000075DD806F0EB0378A301781306A26D130CA36D1318A26D1330A39038078060
A3903803C0C0A2903801E180A3903800F300A2147EA3000F133CD81F8014FCD8FFF09038
0FFFC014182A227DA132>I<3AFFC001FFE013E03A07F0003F00151ED806F8130C7F137C
7F7FA2EB0F80EB07C014E01303EB01F014F81300147C143EA2141FEC0F8C15CC1407EC03
EC15FC14011400157CA2000F143C486C131CEAFFF0150C23227EA129>I<EB07F8EB3FFF
9038FC0FC03901F003E048486C7E48486C7E4848137C48C77EA2003E80A2007E1580007C
140FA200FC15C0A8007C1580007E141FA3003E15006C143EA26C6C5B6C6C5B6C6C485A6C
6C485A3900FC0FC0D93FFFC7FCEB07F822247DA22A>I<B512FCECFF80390FC00FC00007
EB03E0EC01F0EC00F8A215FCA515F8A2EC01F0EC03E0EC0FC090B51280ECFC0001C0C7FC
AC487EEAFFFEA21E227EA125>I<B512F814FF390FC00FC00007EB03E06E7E81140081A4
5D14015D4A5AEC0FC090B5C7FC14FCEBC01F6E7E6E7E140381A481A3163015F8380FE001
3AFFFE00FC60ED7FC0C8EA1F8024237EA128>114 D<3801F8083807FF18381E07B8383C
01F8383800785A143812F01418A36C13007E127EEA7FE0EA3FFE381FFF806C13C0000313
E038007FF0EB07F81301EB007CA2143C12C0A46C133814786C137000FC13E038EF01C038
C7FF803880FE0016247DA21E>I<007FB6FCA2397C03E01F00701407006080A200E01580
A200C01401A4000091C7FCB3497E48B512C0A221227EA127>I<3AFFFE01FFE0A23A0FE0
003F006C48131E150CB3A400035C7F12015D6C6C5B01785B90383E0380D90FFFC7FCEB01
F823237EA129>I<D8FFF8EB1FF8A2D80FC0EB07C000071580ED03006D5B00031406A26C
6C5BA26D131C00001418A2017C5BA2017E1370013E1360A26D5BA290380F8180A214C1D9
07C3C7FCA2EB03E6A214FE6D5AA26D5AA31470A225237FA129>I<3CFFF80FFF807FE0A2
3C1FC001FC001F806C486C48EB0E00816C6C150CA24A6C131CD803E001BE1318A21403D8
01F0011F5BA214073B00F8060F8060A3903A7C0C07C0C0A3903A3E1803E180A390271F30
01F3C7FCA390390FE000FEA36D48137CA36D481338A333237FA137>I<3A7FFC01FFE0A2
3A07F800FE006C4813786C6C13706C6C1360017C5BEB7E016D485A011F90C7FC1486EB0F
CEEB07DCEB03F85C6D7E130080497EEB03BE141F01067F90380E0FC0EB1C0701187F496C
7EEB700101607F496C7E0001147E1203D80FE0137F3AFFF001FFF8A225227FA129>I<D8
FFF8EB1FF8A2D80FE0EB0FE00007EC07800003EC06006D130E6C6C130C00005C6D133801
7E1330013E5B013F13E06D6C5AEC8180EB0FC3D907E3C7FC14E6EB03FE6D5A5C1300AB13
0190381FFF80A225227FA129>I<007FB51280A29038001F00007C5B0078133E00705B14
FC00605B13015C495A130700005B495A131F91C7FC133EA25B13FC9038F80180EA01F012
0313E0EA07C0000F13031380001F1400495A003E5B007E5B007C137FB6FCA219227DA121
>I<383801C0387C03E038FE07F0A3387C03E0383801C0140778AC25>127
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmss8 8 15
/Fc 15 88 df<143F4A7EA24A7EA214F701017F14E701037F14E3A2903807C3F8A29038
0FC1FC1481A290381F80FE1400157E49137F133E017E6D7EA2137C01FC6D7E5B00018115
0F5B48B67EA348819038C00003000F8115015B001F6E7EA248C87E82123E007E1680163F
127C00FCED1FC02A2E7EAD2F>65 D<EC3FFC49B512C0010714F0131F5B9039FFE00FE048
EB80004848C7122001F81400485A120F485A5B123F5BA248C9FCA312FEAA127FA36C7EA2
7F121F7F6C7E12076C6C140801FE14386C6C6C13F86CEBE007013FB5FC6D14F0010714C0
010114009038003FF825307CAE2D>67 D<B512FEECFFC015F015FC39FE0007FE913800FF
80ED7FC0151FED0FE0ED07F0ED03F8A2ED01FCA2150016FEA2167E167FAA167E16FEA3ED
01FCA2ED03F8A2ED07F0ED0FE0151FED3FC0EDFF8002071300B612FC5D15C04AC7FC282E
7AAD33>I<B612FEA548C8FCAFB612F8A548C8FCAFB7FCA6202E7AAD2A>I<B612FCA548C8
FCAFB612E0A548C8FCB3A31E2E7AAD28>I<EC3FF849B51280010714E0011F14F85B9038
FFE00F4890388001F04848C71270491410D807F01400120F485A5B123F5BA248C9FCA312
FEA7913801FFF8A3127FA2EC00016C7EA27F121F7F6C7E1207EA03FC7F3801FF806CEBE0
07013FB5FC7F010714E0010114809039003FF80025307CAE2F>I<00FCEC07F8ED0FF0ED
1FE0ED3FC0ED7F80EDFF004A5A4A5A4A5A4A5A4A5A4A5A4A5A4AC7FC495A495A495A495A
495A497E137F497E00FD7FEAFFFCEBF87EEBF07F496C7EEBC01F01807F496C7E48130748
6D7E8114016E7E81157E811680ED1FC0150F16E0ED07F01503ED01F816FC262E79AD31>
75 D<12FEB3B3A5B612F0A51C2E7AAD26>I<B4ED03FE6D1407A36D140F00FD167E6D141F
A200FC151E6D143EA30178147CA2017C14FC013C14F8A2013E1301011E14F0011F1303A2
6D14E0EC8007A2010714C0ECC00FA2903903E01F80A2010114006E5AA20100133EECF87E
A2EC787CEC7CFCEC3CF8A3EC1FF0A26E5AA391C8FC2F2E79AD3E>I<B46CEB07E07FA27F
A2EAFDF0A2EAFCF8A27F137C137E133E133F7F1480130F14C0A2EB07E0A2EB03F0A2EB01
F8A2EB00FCA2147EA2143E143F141F1587140F15C7140715E71403A2EC01F7A2EC00FFA2
157FA2153F232E79AD32>I<EC7FC0903803FFF8010F13FE013F6D7E49809039FFC07FE0
489038001FF0D803FCEB07F848486D7E48486D7E4913004848147FA24848EC3F80A248C8
EA1FC0A3007E150F00FE16E0AA007FED1FC0A36D143F003F1680A26C6CEC7F006D5C000F
5D6D13016C6C495A6C6C495A6CB4EB1FF06C9038C07FE06DB55A6D5C010F49C7FC010313
F89038007FC02B307CAE34>I<B512FEECFFC015F015FC39FE0007FEEC00FFED3F80ED1F
C0150F16E01507A4150F16C0151FED3F8015FF02071300B65A15F85D15C092C7FC38FE00
3F816E7E140F816E7EA26E7E1401816E7EA2157F811680ED1FC0A2ED0FE0150716F0ED03
F8252E7AAD2E>82 D<EB0FFC90387FFF8048B512E04814F85A380FF807391FC000F04848
133090C712101500127EA5127F6C7E7F13F06CB4FC6C13F06C13FE6C7F6C14C06C6C13E0
010F13F0010013F8140FEC03FC1401140015FE157EA51240006014FC127000FCEB01F8B4
13079038E01FF06CB512E0001F14C00007140000015B38001FF01F307DAE27>I<B812E0
A5C7D83F80C7FCB3B3A52B2E7EAD30>I<00FCDA0FF0143FA2007E4A6C143E197EA26C02
3F157CDB3EFC14FCA2ED7E7C6C6CD97C7EEB01F8A2163E6C6C01FC15F0DBF83F13038226
07E00116E003F0EB8007A2160F2603F00316C003E0EBC00F1607000118809026F807C0EB
E01FA216032700FC0F801500715A1601017C163E90387E1F00933800F87E013E167C141E
143E013FED7CFC011F5E143C173C010F5E4A143E02F8143F171F6D485DA2170F402E7FAD
43>87 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmsy10 10 1
/Fd 1 111 df<126012F07EA21278127CA2123C123EA2121E121FA27E7FA212077FA212
037FA212017FA212007FA21378137CA2133C133EA2131E131FA27F80A2130780A26D7EA2
130180A2130080A21478147CA2143C143EA2141E141FA2801580A2140715C0A2140315E0
A2140115F0A2140015F8A21578157CA2153C153EA2151E150C1F537BBD2A>110
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe line10 10 2
/Fe 2 46 df<1506151E157EEC01FE1407143F14FF1307133F48B5FC120FB6FCA2120F12
01EA003F13071300143F14071401EC007E151E15061F187E8B53>27
D<12C012F012FCB4FC13C013F813FEEBFFC014F814FF15E015FEA215E0150014F814C049
C7FC13F813C090C8FC12FC12F012C01F184E8B53>45 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff cmr6 6 10
/Ff 10 58 df<13FF000313C0380781E0380F00F0001E137848133CA248131EA400F813
1FAD0078131EA2007C133E003C133CA26C13786C13F0380781E03803FFC0C6130018227D
A01E>48 D<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>I<EA01FC38
07FF80381C0FC0383003E0386001F0EB00F812F86C13FCA2147C1278003013FCC7FC14F8
A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B3801C00CEA0380380600185A5A383F
FFF85AB512F0A216217CA01E>I<13FF000313C0380F03E0381C00F014F8003E13FC147C
A2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00F01478147C
143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFFC000011300
18227DA01E>I<14E01301A213031307A2130D131D13391331136113E113C1EA01811203
EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFFA218227DA1
1E>I<00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513FE381BFF80
381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A214784813F8006013
F0387001E01238381E07803807FF00EA01F816227CA01E>I<EB0FC0EB7FF03801F03838
03C0183807803C380F007C121E001C1338003C1300A2127C1278EB7FC038F9FFE038FB80
F038FE0038143C48131EA248131FA41278A36C131EA2001C133C001E13386C1370380781
E03801FFC038007F0018227DA01E>I<1230123C003FB5FCA24813FE14FC3860001C1438
14704813E014C0EA0001EB0380EB07001306130E5BA25BA21378A35BA41201A76C5A1823
7CA11E>I<137F3803FFC0380781E0380E00704813380018131C1238A3123C003F133838
1FC078EBE0F0380FF9E03807FF80120114C0000713F0380F0FF8381C03FC383801FE3870
007E141F48130F1407A314060070130E0078130C6C1338001F13F03807FFC0C613001822
7DA01E>I<13FE3803FFC0380781E0380E0070481378003C133848133CA200F8131EA314
1FA40078133FA26C137F121C380F01DF3807FF9F3803FE1EC7FCA2143E143C001C133800
3E13781470003C13E0381801C0381C0780380FFE00EA03F818227DA01E>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmr7 7 10
/Fg 10 58 df<EB3F803801FFF03803E0F83807803C48487E001E7F003E1480A2003C13
07007C14C0A400FC14E0AE007C14C0A36CEB0F80A36CEB1F006C131E6C6C5A3803E0F86C
B45A38003F801B277EA521>48 D<13381378EA01F8121F12FE12E01200B3AB487EB512F8
A215267BA521>I<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F
80A4127CC7FC15005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0
EA0180390300030012065A001FB5FC5A485BB5FCA219267DA521>I<13FF000313E0380F
01F8381C007C0030137E003C133E007E133FA4123CC7123E147E147C5C495AEB07E03801
FF8091C7FC380001E06D7E147C80143F801580A21238127C12FEA21500485B0078133E00
705B6C5B381F01F03807FFC0C690C7FC19277DA521>I<1438A2147814F81301A2130313
071306130C131C131813301370136013C012011380EA03005A120E120C121C5A12305A12
E0B612E0A2C7EAF800A7497E90383FFFE0A21B277EA621>I<0018130C001F137CEBFFF8
5C5C1480D819FCC7FC0018C8FCA7137F3819FFE0381F81F0381E0078001C7F0018133EC7
FC80A21580A21230127C12FCA3150012F00060133E127000305B001C5B380F03E03803FF
C0C648C7FC19277DA521>I<EB0FE0EB3FF8EBF81C3801E0063803C01F48485AEA0F005A
121E003E131E91C7FC5AA21304EB3FC038FCFFF038FDC078EB003CB4133E48131E141FA2
481480A4127CA4003C1400123E001E131E143E6C133C6C6C5A3803C1F03801FFC06C6CC7
FC19277DA521>I<1230123C003FB512E0A215C0481480A239700007000060130E140C48
131C5C5CC75A5C1301495AA249C7FC5B130E131EA3133E133CA2137CA413FCA813781B28
7DA621>I<137F3803FFE0380781F8380E007C48131E5A801278A3127C007E131EEA3F80
EBE03C6C6C5A380FFCF03807FFC06C5BC613E0487F38079FFC380F07FEEA1E0348C67E48
133FEC1F8048130FA21407A315001278140E6C5B6C5B380F80F03803FFE0C66CC7FC1927
7DA521>I<137F3801FFC03807C1E0380F0070001E1378003E7F003C133E007C131EA200
FC131FA41580A4007C133FA2123C003E137F001E135F380F01DF3807FF9F3801FE1FD800
1013001300A2143E123C007E133CA25C5C007C5B383003C0381C0780D80FFFC7FCEA03F8
19277DA521>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh cmsy10 14.4 1
/Fh 1 2 df<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D0D76A321>1
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi cmss9 9 31
/Fi 31 122 df<B512F0A514057F921A>45 D<12FEA70707798615>I<EB0FE0EB7FFC49
7E487F4814803907F83FC0390FE00FE0391FC007F0EB8003EB00014814F8A2003E130000
7E14FCA3007C147C00FC147EB3007E14FCA56CEB01F8A2EB8003001F14F0EBC007390FE0
0FE03907F83FC090B5FC6C1480C6EBFE006D5AEB0FE01F357DB226>48
D<13035B131F137FEA07FFB5FCA313BFEAF83F1200B3B2007FB51280A519337AB226>I<
EB3FE0EBFFF8000313FE487F481480391FC07FC09038801FE0393F000FF0003E130748EB
03F8A248130115FC1278123014001210C8FC1401A215F8A2140315F0140715E0EC0FC014
1F1580EC3F00147E5C495A495A495AEB0F8049C7FC133E5B5B485A485A485A485A48C8FC
123E007FB512FCA51E337DB226>I<EB1FE0EBFFFC000313FF4814804814C0391FF03FE0
393FC00FF0387F0007003E1303001C14F814011208C7FC1403A215F0A21407EC0FE0141F
EC3FC0903801FF80017F13005C14F88014FF9038003FC0EC0FE0EC07F0EC03F8140115FC
A2EC00FEA70040EB01FC1260127000F8EB03F86C1307007FEB0FF0393FE03FE06CB512C0
6C148000031400C613FCEB1FE01F357DB226>I<EC3FC0A2147F146F14EF1301A2EB03CF
A21307EB0F8FA2EB1F0FA2133F137EA213FCA2EA01F8EA03F0A2EA07E0A2EA0FC0121F13
80EA3F00A2127E12FEB71280A5C7380FC000AD21317EB026>I<001FB512F0A50180C7FC
ACEB87E0EBBFFCEBFFFE8015809038F83FC09038E00FE09038C007F01380EC03F81300C7
FCEC01FCA9EC03F8122012300070EB07F0127800FCEB0FE0007FEB1FC0383FC07F6CB512
806CEBFE006C5B000113F038003FC01E337DB026>I<ECFF80010713E0131F5B5B9038FF
0060D801FC1300485A485A5B485A485AA290C8FC5AA2387E01FCEB0FFF013F13804913C0
48B512E038FDF81F39FFE007F09038C003F8EB8001010013FC14005AA2157E5AA5127C12
7EA4003E14FC123FA2391F8001F81403D80FC013F09038E007E03907F81FC06CB512806C
14006C5BEB3FFCEB0FE01F357DB226>I<B612FEA5C8127E15FC15F8EC01F01403EC07E0
EC0FC0A2EC1F80EC3F00A2147EA25C13015C1303A25C13075C130FA25C131FA25C133FA3
91C7FC5BA613FEA81F327DB026>I<EB0FE0EB7FFC48B5FC4814804814C0390FF01FE039
1FC007F0EB00014814F8003E1300007E14FC007C147CA5007E14FC003E14F8003F13016C
14F0390FC007E03907F01FC06CB51280C6EBFE00EB1FF0EBFFFE487F3907F83FC0390FC0
07E0391F8003F0393F0001F8003E1300007E14FCA248147EA7007E14FCA36CEB01F8EB80
03391FC007F0390FF01FE06CB512C06C14806C140038007FFCEB0FE01F357DB226>I<EB
0FE0EB7FF8EBFFFE487F4814803907F83FC0390FE00FE0381FC00790388003F0383F0001
007E14F8A214004814FCA3157CA2157EA515FE127EA21401127F6C1303EB8007381FC00F
390FF03F7EEBFFFE6CEBFCFC6C13F86C13E038007F0090C712F81401A2EC03F0A2EC07E0
A2EC0FC00008EB1F80000CEB7F00381F81FFEBFFFE4813F86C5B000713C0C690C7FC1F35
7DB226>I<EC1FE0A34A7EA3EC7DF81479ECF9FC14F8A249487EA2157E903803E07FA201
076D7E14C0A2010F6D7E1480A2011F6D7E1400496D7EA2133E017E6D7E137CA201FC6D7E
5B00018190B6FCA24881A3D807E0C7EA3F805B000F16C0161F5B001F16E0160F90C8FC48
ED07F0123E007E16F81603127C00FCED01FC2E347EB333>65 D<B512FEECFFE015F815FE
8126FE000713809138007FC0ED1FE0ED0FF01507ED03F81501A5ED03F01507ED0FE0151F
ED7FC0913801FF80B6EAFE0015F815E015F815FE3AFE003FFF80020013C0ED3FE0ED0FF0
ED03F8ED01FCA2ED00FEA2167EA316FEA2ED01FCA2ED07F8150FED3FF0913801FFE0B712
C016005D15F81580273479B333>I<00FE15FEB3A4B7FCA548C8FCB3A7273479B336>72
D<12FEB3B3B0073479B315>I<EC1FC0B3B3A8143F006014800070137F007C13FFD8FFCF
1300EBFFFE5C003F5B000F5BC613801A367DB324>I<B812F8A5C7D81FC0C7FCB3B3AB2D
347DB334>84 D<EB0FF8EB3FFF90B512E04814F05A3807F807390FE001E0391FC0006049
130048C8FCA2127EA35AA9127EA36C14106D1330001F14F0380FE001EBF80F6CB5FC6C14
E0C6148090387FFE00EB0FF01C247DA222>99 D<EB1FC0EB7FF848487E487F487F390FF0
7F80381FC01F90388007C0EA3F00EC03E0007E1301A2127C00FCEB00F0B6FCA500F8C8FC
A27EA2127C127EA27E6D13106C6C1370390FE001F0EBF80F6CB5FC6C14E0C6148090387F
FE00EB0FF01C247DA222>101 D<EB01FCEB0FFF5B5B5BEBFE07EBF801000113005B1203
ABB512F0A53803F000B3AA18357FB417>I<12FEA71200AC127EB3AF07347BB313>105
D<12FCB3EC0FF0EC1FE0EC3FC0EC7F80ECFF00495A495A495A495A495A495A495A49C7FC
12FDB57EA280EBE7E013C7EB83F0EB01F800FE7FEAFC00147E801580141FEC0FC0EC07E0
A2EC03F0EC01F815FC1E347AB326>107 D<D907F0EB3F803BFC3FFE01FFF0496C4813F8
90B5008713FCB6129F903AE07FDF03FE9039801FFC00496C48137FA2486D48133FA3485C
B3A430227AA13D>109 D<EB07F038FC3FFE497E90B51280B6FC9038E07FC0EB801F9038
000FE0A2481307A35AB3A41B227AA128>I<EB07F0EB3FFE90B57E488048803907F80FF0
390FE003F848486C7EEB800048C7127EA2007E80A2007C8000FC1580A86C143F007E1500
A2007F5C6C147E6D13FE6C6C485A6C6C485AEBF80F6CB55A000114C06C5CD93FFEC7FCEB
07F021247EA226>I<EB03C0EAF81F133F13FF12F912FBEBFC00EAFFF013C05B90C7FCA2
5AA35AB312227AA11A>114 D<EBFF80000713F04813FC487F5AEA7F00007E131C48130C
91C7FCA47EEA7F8013F86CB47E6C13E06C13F800037FC67FEB0FFF1300EC3F80A2141FA3
12400060133F00781400B413FFEBFFFE5C6C5B000F5B0001138019247EA21D>I<EA03F0
AAB512FEA53803F000B3A37F14023801FC1E90B5FCA27EEB7FFCEB3FC0182C7FAA1C>I<
00FCEB07E0B3A7140F141F6C133F6C13FF6CB5FC14F76C13E76C1307D807F8C7FC1B227A
A028>I<00FE143F007E147EA27E15FC7F001FEB01F813C0120FEC03F0EA07E015E0EBF0
07120315C03801F80F15801200EBFC1F1500137CEB7E3E133EA2EB1F3C147CEB0F78A36D
5AA26D5AA35C13075CA2130F91C7FC5B131EEA203EEA387CEA3FFC5BA25BEA0FC020317F
A023>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fj cmsy8 8 3
/Fj 3 111 df<ED7FF80207B57E021F14E091397FC00FF8D901FCC712FED903F0143FD9
0FC0EC0FC049C8EA03E0013E6F7E0178ED0078498248488248488249820007188048CAEA
03C0000E1701001E18E0001C1700003C18F0003818700078187800701838A300F0183C48
181CA96C183C00701838A30078187800381870003C18F0001C18E0001E1701000E18C000
0F17036C6CEE0780000318006D5E6C6C161E6C6C5E01785E013E4B5A6D4B5AD90FC0EC0F
C0D903F0023FC7FCD901FC14FE903A007FC00FF8021FB512E0020714809126007FF8C8FC
3E3D7CAE47>13 D<EB7F803801FFE0000713F8487F487F487FA2481480A2B612C0A86C14
80A26C1400A26C5B6C5B6C5B000113E038007F801A1A7C9D23>15
D<12E0A27E1270A212781238A2123C121CA2121E120EA2120F7E7F1203A27F1201A27F12
00A27F137013781338A2133C131CA2131E130EA2130F7FA2801303801301A2801300A280
1470A214781438143C141CA2141E140EA2140F80A215801403A215C0140114001A437CB1
23>110 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk cmti10 10 37
/Fk 37 124 df<EE3FFC4BB51280923907E007C092391F8001E0DB3F0013F0037E13034B
1307A24A5A18E04A48EB038094C7FCA314075DA4140F5DA3010FB7FCA25F903A001F8000
7EA217FE023F5C92C7FCA216015F5C147E16035FA214FE4A13075FA30101140F5F4AECC1
C0A2161F1783010316805CA2EF870013074A5CEE0F8EEE079EEE03FC010FEC00F04A91C7
FCA35C131FA2001C90CAFC127E5BEAFE3E133C137CEAF878EA78F0EA3FE0EA0F80344C82
BA2F>12 D<EA03C0EA07F0120F121F13F8A313F0EA07B0EA003013701360A213E013C012
01EA038013005A120E5A5A5A5A5A0D197A8819>44 D<120EEA3F80127F12FFA31300127E
123C0909778819>46 D<15181538157815F0140114031407EC0FE0141F147FEB03FF9038
3FEFC0148FEB1C1F13001580A2143FA21500A25CA2147EA214FEA25CA21301A25CA21303
A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C7FC497EB61280A31D3877B72A>
49 D<EC03F8EC0FFE91383C0F809138F007C0903901E003E0D903C013F0903807800102
0013F8130E131E90391C6000FCEB3870EC30011370A213F013E0EC70030001016013F813
C014E0ECC00701C114F0903881800F018314E09039C7001FC001FEEB3F80D80078140090
C7127E5D4A5A4A5AEC07C0EC1F80023EC7FC14FCEB01F0EB07C0495A011EC8FC137C4914
C0484813015B485A4848130348C71380000E1407001E140F48EC1F00D83FF85B397FFFC0
7E39783FFFFCEA700FD8F0075BD8E0015B6D13C0021FC7FC263A79B72A>I<EC03FCEC1F
FF91387E07C09138F003E0903903C001F0D9078013F849C7FC131E011C14FC133CEB38C0
EB78E0EB7060150101F014F813E0A2ECE003D971C013F090387F8007D91E0013E090C7EA
0FC0ED1F80ED3F00157E5D49B45A4913E092C7FC9038000FC0EC03F014016E7E81A381A5
007E130100FE5CA31403485C00E05C14074A5A5D4A5A007049C7FC0078137E6C13F8381E
07F03807FF80D801FCC8FC263A78B72A>I<010314186E13F8903907F007F091B512E016
C01600495B15F8010E13E0020CC7FC011EC8FC131CA3133C1338A313781370A2147F9038
F3FFC09038EF83E09038FC01F0496C7E485A497F49137CC8FC157EA315FEA41401000C5C
123F5A1403485C5A4A5A12F800E05C140F4A5A5D6C49C7FC0070137E00785B387C01F838
3E07F0381FFFC06C90C8FCEA01F8253A77B72A>53 D<157F913803FFC0020F13E0EC3F81
91387E00F002F81370903903F003F0903807E007EB0FC0EB1F80020013E04914C0017E90
C7FC13FE5B485AA21203485AA2380FE07E9038E1FF809038E783E0391FCE01F09038DC00
F813F84848137C5B157E5B485AA390C712FE5A5AA214015D5AA214035DA348495A5D140F
5D4A5A6C49C7FC127C147C6C485A6C485A6CB45A6C1380D801FCC8FC243A76B72A>I<EC
01FCEC0FFF023F13C091387E07E0903901F803F0903803E001D907C013F890380F8000A2
49C7FCA2133EA21501017E14F0A21503017F14E0ED07C09138800F809138C01F0090383F
F03E6E5A90381FFCF0ECFFE06D138013036D7F497F90380F7FF890383E3FFCEB781F4848
6C7E3803E0073907C001FF48487E001F8090C7FC003E80127E127CA200FC143E5AA25DA2
5DA24A5A6C495A007C495A007E495A6C013FC7FC381F80FE380FFFF8000313E0C66CC8FC
253A78B72A>56 D<EC01FCEC0FFF023F138091387E07C0903901F803E0EB03F0903907E0
01F0EB0FC0EB1F80013F14F814005B137E13FEA2485AA2150312035BA2ED07F012075B15
0FA216E00003141FA2153FED7FC0120115FF6C6C5A90397803BF8090383C0F3FD91FFC13
00903807F07F90C7FC157E15FE5D14015D4A5AA2003E495A007F495A5D4AC7FC00FE5B48
137E007013F8387803F0387C0FE0383FFF806C48C8FCEA03F8253A78B72A>I<EE01C016
03A21607160FA2161F83163FA2167F16FF16EF150116CFED038FA2ED070FA2150E151E15
1C1538A203707FA2EDE007A2EC01C014031580EC0700A2140EA25CA25C027FB5FCA291B6
FC9139E00007F849481303A2495A130791C7FC5B130E5BA25B1378137013F0EA03F8486C
4A7EB56C48B512F0A3343C7BBB3E>65 D<DB03FE130E92393FFF801E92B5EAE03C913903
FE01F0913A0FF000787CDA3FC0EB3CFC4AC7EA1FF802FE140FEB03FC49481407494815F0
49481403495A5C49C813E05B485A5B000317C0485AA2485A1880485A94C7FCA2485AA312
7F5BA312FF90CBFCA41738A217784816707E17F06C5E16015F16036C6C4A5A94C7FC001F
150E6D141E000F5D6D5C6C6C495A6C6CEB03C0D801FEEB0F8027007F807EC8FC6DB45A01
0F13E0010090C9FC373D74BA3B>67 D<0107B712FEA3903A000FF000074B1300187C021F
153CA25DA2143FA25D1838147FA292C8FCEE03804A130718004A91C7FCA201015CA24A13
1E163E010314FE91B5FC5EA2903807F800167C4A1378A2130FA24A1370A2011F14F0A24A
90C8FCA2133FA25CA2137FA291CAFCA25BA25B487EB6FCA337397BB836>70
D<DB03FE130E92393FFF801E92B5EAE03C913903FE01F0913A0FF000787CDA3FC0EB3CFC
4AC7EA1FF802FE140FEB03FC49481407494815F049481403495A5C49C813E05B485A5B00
0317C0485AA2485A1880485A94C7FCA2485AA3127F5BA312FF90CBFC0307B512E0A39239
0007FC00705A16075FA36C150F5FA36C6C141FA2001F5E6D143F6C7E167F6C6C4A5A6C6C
EB03EFD801FEEB07C73A007FC03F0790273FFFFC03C7FC010F01F0C8FC01001380373D74
BA40>I<902607FFF8923807FFF0614F13E0D9000FEFF0004F5AA2021F167FF1EFC0141D
DA1CFCEC01CF023C16DF9538039F800238ED071FA20278ED0E3F97C7FC0270151CA202F0
4B5AF0707E14E0037E14E0010117FE4D485A02C0EC0380A20103ED0701610280140EA201
07ED1C0305385B14006F137049160705E05B010EEC01C0A2011E913803800F61011CEC07
00A2013C020E131F4C5C1338ED1FB80178163F04F091C8FC01705CA201F04A5B187E0001
5DD807F816FEB500C09039007FFFFC151E150E4C397AB84A>77 D<92383FC00E913901FF
F01C020713FC91391FC07E3C91393F001F7C027CEB0FF84A130749481303495A4948EB01
F0A2495AA2011F15E091C7FCA34915C0A36E90C7FCA2806D7E14FCECFF806D13F015FE6D
6D7E6D14E0010080023F7F14079138007FFC150F15031501A21500A2167C120EA3001E15
FC5EA3003E4A5AA24B5AA2007F4A5A4B5A6D49C7FC6D133ED8F9F013FC39F8FC03F839F0
7FFFE0D8E01F138026C003FCC8FC2F3D7ABA2F>83 D<0007B812E0A25AD9F800EB001F01
C049EB07C0485AD900011403121E001C5C003C17801403123800785C00701607140700F0
1700485CA2140FC792C7FC5DA2141FA25DA2143FA25DA2147FA292C9FCA25CA25CA21301
A25CA21303A25CA21307A25CA2130FA25CEB3FF0007FB512F8B6FCA2333971B83B>I<14
F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A120FEBC001001F5CA2
EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F15831680143F158700
7C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901F000F0222677A42A
>97 D<147F903803FFC090380FC1E090381F0070017E13784913383901F801F83803F003
120713E0120FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C
14F0007EEB01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426
>99 D<ED01F815FFA3150316F0A21507A216E0A2150FA216C0A2151FA21680A2153FA202
F81300EB07FE90381F877F90383E03FF017C5BEBF80112013803F00048485B120FEBC001
121F5DEA3F801403127F01005BA214075A485CA2140FA248ECC1C0A2141F15C3ED838014
3F1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901F000F025
3B77B92A>I<147F903803FFC090380FC1E090383F00F0017E13785B485A485A485A120F
4913F8001F14F0383F8001EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA2
1530007C14381578007E14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0
C690C7FC1D2677A426>I<EC07C0EC3FF09138FC38E0903901F01FF0EB03E0903807C00F
EB0F80011F1307D93F0013E05B017E130F13FE4914C01201151F1203491480A2153F1207
491400A25DA249137EA215FEA25D00031301140314076C6C485A0000131FEB787BEB3FF3
90380FC3F0EB00031407A25DA2140F5D121C007E131F5D00FE49C7FC147E5C387801F838
7C07E0381FFF80D803FEC8FC24367CA426>103 D<EB03F0EA01FFA3EA00075CA3130F5C
A3131F5CA3133F91C8FCA35B90387E07F0EC1FFCEC783E9038FFE01F02C01380EC800F14
00485A16C05B49EB1F8012035BA2153F000715005BA25D000F147E5B15FE5D121FD98001
131C15F8163C003F01031338010013F0A216704814E0007E15F016E0EDE1C000FE903801
E38048903800FF000038143C263B7BB92A>I<EB01C0EB07E014F0130F14E01307EB0380
90C7FCAB13F0EA03FCEA071EEA0E1F121CA212385B1270A25BEAF07E12E013FEC65AA212
015B1203A25B12075BA2000F13E013C013C1001F13C01381A2EB83801303EB0700A2130E
6C5AEA07F8EA01E0143879B619>I<EB0FC0EA07FFA3EA001F1480A2133FA21400A25BA2
137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121FA25BA2123FA2
90C7FCA25AA2EA7E0EA212FE131EEAFC1CA2133C133812F81378EA7870EA7CE0121FEA0F
80123B79B915>108 D<D801E001FEEB07F03C07F803FF801FFC3C0E3C0F07C0783E3C1E
3E3C03E1E01F261C1F78D9F3C013803C383FF001F7800F02E01400007801C013FE007018
C002805B4A4848EB1F80EAF07FD8E07E5CA200000207143F01FE1700495CA2030F5C0001
177E495C18FE031F5C120349DA8001131C18F8033F153C00070403133849020013F0A24B
1570000F17E049017E15F019E003FEECE1C0001FEE01E34949903800FF000007C7003814
3C3E2679A444>I<D801E013FE3A07F803FF803A0E3C0F07C03A1E3E3C03E0261C1F787F
39383FF00114E0007813C000708114804A485AEAF07FEAE07EA20000140701FE5C5BA215
0F00015D5B151F5E12034990383F8380160316070007027F130049137EA2160E000F147C
49141E161C5E001FEC3C7849EB1FE00007C7EA0780292679A42F>I<147F903803FFC090
380FC1F090381F00F8017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F
127F90C7FCA215FF5A4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB
1F80003EEB3F00147E6C13F8380F83F03803FFC0C648C7FC202677A42A>I<9039078007
C090391FE03FF090393CF0787C903938F8E03E9038787FC00170497EECFF00D9F0FE1480
13E05CEA01E113C15CA2D80003143FA25CA20107147FA24A1400A2010F5C5E5C4B5A131F
5EEC80035E013F495A6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F8001FEC9FC
A25BA21201A25BA21203A25B1207B512C0A3293580A42A>I<3903C003F0390FF01FFC39
1E783C0F381C7C703A3C3EE03F8038383FC0EB7F800078150000701300151CD8F07E90C7
FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA3121F5BA3123F90C9FC120E21
2679A423>114 D<14FE903807FF8090380F83C090383E00E04913F00178137001F813F0
0001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F6D13807F010F13C0
1300143F141F140F123E127E00FE1480A348EB1F0012E06C133E00705B6C5B381E03E06C
B45AD801FEC7FC1C267AA422>I<EB0380EB07C0130FA4131F1480A3133F1400A35B137E
007FB5FCA2B6FC3800FC00A312015BA312035BA312075BA3120F5BA3121FEB801CA2143C
003F1338EB0078147014F014E0EB01C0EA3E03381F0780380F0F00EA07FCEA01F0183579
B31C>I<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C0038140F131F007815
C01270013F131F00F0130000E015805BD8007E133FA201FE14005B5D120149137EA215FE
120349EBFC0EA20201131E161C15F813E0163CD9F003133814070001ECF07091381EF8F0
3A00F83C78E090393FF03FC090390FC00F00272679A42D>I<01F01507D803FC90390380
1F80D8071E903907C03FC0D80E1F130F121C123C0038021F131F49EC800F00701607A249
133FD8F07E168000E0ED000313FEC64849130718000001147E5B03FE5B0003160E495BA2
171E00070101141C01E05B173C1738A217781770020314F05F0003010713016D486C485A
000190391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE003F0322679A437>119
D<903907E007C090391FF81FF89039787C383C9038F03E703A01E01EE0FE3803C01F0180
13C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75AA2147EA214FEA25C
A21301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC0380010F1307010E
EB0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427>I<13F0D803FCEB
01C0D8071EEB03E0D80E1F1307121C123C0038140F4914C01270A249131FD8F07E148012
E013FEC648133F160012015B5D0003147E5BA215FE00075C5BA214015DA314035D140700
03130FEBF01F3901F87FE038007FF7EB1FC7EB000F5DA2141F003F5C48133F92C7FC147E
147C007E13FC387001F8EB03E06C485A383C1F80D80FFEC8FCEA03F0233679A428>I<B7
12FCA2260279962A>123 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fl cmr10 10 88
/Fl 88 128 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F903B1F
8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8A328
01F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11
D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B
A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5
12C0A32A3B7FBA2E>I<EC0FFC91387FFF70903901F803F0903807E00790381F800FEB3F
00137EA25B150748481303ADB7FCA33901F80003B3AB486C497E267FFFE0B512C0A32A3B
7FBA2E>I<DA0FF0EB1FF0DA7FFEEBFFFC903B01F80F83F00F903C07E001CFC00380903C
1F8000FF0001C090273F0007FE130F017E4948497EA2495CA248485C03076E5A03030203
C7FC95C8FCA9F007E0BAFCA33C01F80003F0001F1807B3AA486C496C497E267FFFE0B500
C1B51280A3413B7FBA45>I<EA03F012FFA312071203B3AA487EB512C0A312257EA417>
16 D<133C137EA213FE1201EA03FC13F0EA07E0EA0FC0EA1F80EA1E005A5A5A12C00F0F
6FB92A>19 D<00C0EB0180A36C130300601400A200705B6C130E6C5B001E133C380F80F8
6CB45A000113C06C6CC7FC190E78B92A>21 D<121C127FEAFF80A8EA7F00AB123EAB121C
ABC7FCA8121C127FEAFF80A5EA7F00121C093C79BB17>33 D<001C131C007F137F39FF80
FF80A26D13C0A3007F137F001C131C00001300A40001130101801380A200031303010013
00485B00061306000E130E485B485B485B006013601A197DB92A>I<017C166048B416F0
2607C3801401260F81C01403D900E04A5A001E01784A5A003E6D141F003C013FEC7F8000
7C90271BE003FFC7FC0218B512BF007891381FFC3E00F8011CC75A020C14FC5F4C5A1603
5F4C5A160F5F4CC8FC021C5B00780118133E007C5D16FC003C01385B003E90383001F000
1EEB70036C01E05B903981C007C03907C3800F2601FF005BD8007C49C9FC90C748EB07C0
033EEB1FF04BEB3C3803FCEBF81C4B497E913A01F001E00602030103130703E0497E9126
07C0071480020F15011580DA1F00018013C04A010F1300143E5C14FC5C495A13035C495A
130F4A0107130149C701C013805B013E1603490203140001FC6F5A490201130648489138
00F00E0003705A49ED3C3849ED1FF06C48ED07C03A437BBD45>37
D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A
12600A1979B917>39 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485A
A212075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F1207
7F1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12
C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA214
80A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA2
485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0A312
7F121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>44
D<B512FCA516057F941C>I<121C127FEAFF80A5EA7F00121C0909798817>I<150C151E15
3EA2153C157CA2157815F8A215F01401A215E01403A215C01407A21580140FA215005CA2
141E143EA2143C147CA2147814F8A25C1301A25C1303A2495AA25C130FA291C7FC5BA213
1E133EA2133C137CA2137813F8A25B1201A25B1203A25B1207A25B120FA290C8FC5AA212
1E123EA2123C127CA2127812F8A25A12601F537BBD2A>I<EB03F8EB1FFF90387E0FC090
38F803E03901E000F0484813780007147C48487FA248C77EA2481580A3007EEC0FC0A600
FE15E0B3007E15C0A4007F141F6C1580A36C15006D5B000F143EA26C6C5B6C6C5B6C6C48
5A6C6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A>I<EB01C013031307131F13FF
B5FCA2131F1200B3B3A8497E007FB512F0A31C3879B72A>I<EB0FF0EB7FFE48B57E3903
E03FE0390F000FF0000E6D7E486D7E486D7E123000706D7E126012FCB4EC7F807FA56CC7
FC121CC8FCEDFF00A34A5A5D14035D4A5A5D140F4A5A4A5A92C7FC147C5C495A495A495A
495A91C8FC011EEB01805B5B49130348481400485A485A000EC75A000FB6FC5A5A485CB6
FCA321387CB72A>I<EB07F8EB3FFF4913C03901F80FF03903C007F848486C7E380E0001
000F80381FE0006D7FA56C5A6C5AC85A1401A25D4A5AA24A5A5DEC0F80027EC7FCEB1FFC
ECFF809038000FE06E7EEC01FC816E7EED7F80A216C0A2153F16E0A2121EEA7F80487EA4
16C049137F007F1580007EC7FC0070ECFF006C495A121E390F8003F83907F00FF00001B5
12C06C6C90C7FCEB0FF8233A7DB72A>I<1538A2157815F8A2140114031407A2140F141F
141B14331473146314C313011483EB030313071306130C131C131813301370136013C012
01EA038013005A120E120C5A123812305A12E0B712F8A3C73803F800AB4A7E0103B512F8
A325397EB82A>I<0006140CD80780133C9038F003F890B5FC5D5D158092C7FC14FC3806
7FE090C9FCABEB07F8EB3FFE9038780F803907E007E090388003F0496C7E12066E7EC87E
A28181A21680A4123E127F487EA490C71300485C12E000605C12700030495A00385C6C13
03001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE0213A7CB72A>I<EC3FC0
903801FFF0010713FC90380FE03E90383F800790387E001F49EB3F804848137F485AA248
5A000FEC3F0049131E001F91C7FCA2485AA3127F90C9FCEB01FC903807FF8039FF1E07E0
90383801F0496C7E01607F01E0137E497FA249148016C0151FA290C713E0A57EA56C7E16
C0A2121FED3F807F000F15006C6C5B15FE6C6C5B6C6C485A3900FE07F090383FFFC06D90
C7FCEB03FC233A7DB72A>I<12301238123E003FB612E0A316C05A168016000070C71206
0060140E5D151800E01438485C5D5DC712014A5A92C7FC5C140E140C141C5CA25CA214F0
495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8FC131E233B7BB82A>I<EB03
F8EB1FFF017F13C09038FC07F03901E001F848486C7E4848137C90C77E48141E000E141F
001E80A3121FA27F5D01E0131E6C6C133E01FC133C6D5B6C6C6C5AECC1E06CEBF3C06C01
FFC7FC6C5BEB3FFF6D13C081017F13F801F07F3903E07FFE3907801FFF48486C13804813
03003E6D13C0003CEB007F007C143F0078EC0FE000F814075A1503A21501A36C15C01278
1503007C15806CEC07006C5C6C6C131ED807E0137C3903F803F0C6B55A013F1380D907FC
C7FC233A7DB72A>I<EB03F8EB1FFF017F13C09038FC07E03903F803F048486C7E48486C
7E49137E121F48487FA2007F158090C7FCA248EC1FC0A616E0A56C143FA27F123F001F14
7FA26C6C13FF3907E001DF0003149F3801F0033900FC0F1FD93FFC13C0EB07F090C7FC15
3F1680A316005D000F147E487E486C5BA24A5A4A5A49485A6C48485A001C495A260F807F
C7FC3807FFFC000113F038003FC0233A7DB72A>I<121C127FEAFF80A5EA7F00121CC7FC
B2121C127FEAFF80A5EA7F00121C092479A317>I<121C127FEAFF80A5EA7F00121CC7FC
B2121C127F5A1380A4127F121D1201A412031300A25A1206A2120E5A121812385A126009
3479A317>I<EB3FE03801FFFE3907C03F80390E000FC0003CEB07F000301303007014F8
007C130100FE14FC7EA4127E003CEB03F8C7FCEC07F0A2EC0FE0EC1F80EC3F00147E147C
5C495A5C495A5CA249C7FCA31306AA90C8FCA8130EEB3F80497EA56D5A010EC7FC1E3B7C
BA27>63 D<1538A3157CA315FEA34A7EA34A6C7EA202077FEC063FA2020E7FEC0C1FA202
1C7FEC180FA202387FEC3007A202707FEC6003A202C07F1501A2D901807F81A249C77F16
7FA20106810107B6FCA24981010CC7121FA2496E7EA3496E7EA3496E7EA213E0707E1201
486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65 D<B712E016FC16FF00019039
80007FC06C90C7EA1FE0707E707E707EA2707EA283A75F16035F4C5A4C5A4C5A4C5AEEFF
8091B500FCC7FCA291C7EA7F80EE1FE0EE07F0707E707E83707EA21880177F18C0A71880
17FFA24C13005F16034C5AEE1FF8486DEB7FF0B812C094C7FC16F832397DB83B>I<913A
01FF800180020FEBE003027F13F8903A01FF807E07903A03FC000F0FD90FF0EB039F4948
EB01DFD93F80EB00FF49C8127F01FE153F12014848151F4848150FA248481507A2485A17
03123F5B007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F160318006C7E5F6C
7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80
902701FF803FC7FC9039007FFFFC020F13F002011380313D7BBA3C>I<B712C016F816FE
000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E177FA2EF3F8018C0171F18E0
170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F18C0EF3F80A2EF7F0017FE4C
5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397DB83F>I<B812FCA300019038
80000F6C90C71201EE007E173E171E170EA31706A317078316C0A394C7FCA31501A21503
150F91B5FCA3EC000F15031501A21500A21860A318E093C712C0A41701A3EF0380A21707
A2170F173F177F486D903807FF00B9FCA333397DB839>I<B812F8A30001903880001F6C
90C71201EE00FC177C173C171CA2170CA4170E1706A2ED0180A21700A41503A21507151F
91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612C0A32F397DB836>I<DBFF80
13C0020FEBF001023F13FC9139FF803F03903A03FC000787D90FF0EB03CF4948EB00EF49
48147F4948143F49C8121F485A4848150F48481507A248481503A2485A1701123F5B007F
1600A448481600AB93B6FCA26C7E9338007FE0EF3FC0A2123F7F121FA26C7EA26C7EA26C
7E6C7E6C6C157F6D7E6D6C14FF6D6C14EFD90FF8EB03C7D903FEEB0783903A00FFC03F01
91393FFFFC00020F01F0130002001380383D7CBA41>I<B648B512FEA300019026800003
13006C90C76C5AB3A491B6FCA391C71201B3A6486D497EB648B512FEA337397DB83E>I<
B612C0A3C6EBC0006D5AB3B3AD497EB612C0A31A397EB81E>I<013FB512E0A39039001F
FC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49
C7FC380781FC3801FFF038007F80233B7DB82B>I<B649B5FCA3000101809038007FF06C
90C8EA3F80053EC7FC173C17385F5F4C5A4C5A4CC8FC160E5E5E5E5E4B5AED0780030EC9
FC5D153E157E15FF5C4A7F4A6C7E140E4A6C7E4A6C7E14704A6C7E4A6C7E14804A6C7E6F
7EA26F7F707EA2707E707EA2707EA2707E707EA2707E707F8484486D497FB6011FEBFF80
A339397DB841>I<B612E0A3000101C0C8FC6C90C9FCB3AD1718A517381730A31770A317
F0A216011603160FEE1FE0486D13FFB8FCA32D397DB834>I<B5933807FFF86E5DA20001
F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3F815C3A2D9C1FCEC0183A3
D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C1330A36E6C1360A26E6C13C0
A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1FD8A3ED0FF0A3486C6D5A48
7ED80FFC6D48497EB500C00203B512F8A2ED018045397DB84C>I<B5913807FFFE8080C6
9238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EBC7FCA2EBC3FEEBC1FFA201C07F6E7E
A26E7E6E7E81140F6E7E8114036E7E168080ED7FC016E0153FED1FF0ED0FF8A2ED07FCED
03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE0FFEA216071603A216011600A2177E
486C153E487ED80FFC151EB500C0140EA2170637397DB83E>I<EC03FF021F13E09138FE
01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE6E7E48486E7E
49157E0003167F4848ED3F80A24848ED1FC0A2001F17E049150F003F17F0A3007F17F849
1507A300FF17FCAC007F17F86D150FA3003F17F0A26C6CED1FE0A36C6CED3FC000071780
6D157F000317006C6C15FEA26C6C4A5A017F4A5A6D6C495A6D6C495AD907E0EB1F80D903
F8017FC7FC903900FE01FC91381FFFE0020390C8FC363D7BBA41>I<B712C016F816FE00
0190398001FF806C90C7EA3FC0EE0FE0EE07F0EE03F817FC17FE1601A217FFA717FEA2EE
03FCA2EE07F817F0EE0FE0EE3FC0923801FF0091B512FC16F091C9FCB3A5487FB6FCA330
397DB839>I<B612FEEDFFE016F8000190388007FE6C90C76C7EEE3FC0707E707E707EA2
707EA283A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07FC91B512E05E9138000FF0ED03
F8ED00FE82707E707EA2161F83A583A6F00180A217F8160F1803486D01071400B66D6C5A
04011306933800FE0ECAEA3FFCEF07F0393B7DB83D>82 D<D90FF813C090383FFE0190B5
12813903F807E33907E000F74848137F4848133F48C7121F003E140F007E1407A2007C14
0312FC1501A36C1400A37E6D14006C7E7F13F86CB47E6C13F8ECFF806C14E06C14F86C14
FEC680013F1480010714C0EB007F020713E0EC007FED3FF0151F150FED07F8A200C01403
A21501A37EA216F07E15036C15E06C14076C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE
13FE39E03FFFF8010F13E0D8C00190C7FC253D7CBA2E>I<003FB812E0A3D9C003EB001F
273E0001FE130348EE01F00078160000701770A300601730A400E01738481718A4C71600
B3B0913807FF80011FB612E0A335397DB83C>I<B6903807FFFEA3000101809038007FE0
6C90C8EA1F80EF0F001706B3B2170E6D150C80171C133F17186D6C14385F6D6C14F06D6C
5C6D6C495A6D6CEB07806D6C49C7FC91387F807E91381FFFF8020713E09138007F80373B
7DB83E>I<B500FC91387FFF80A30003018091380FFC006C90C8EA07E0715A6C705A6E14
03017F93C7FCA280013F1506A26E140E011F150C80010F5DA28001075DA26E1470010315
60A26D6C5CA2806D4A5AA2ED8003027F91C8FCA291383FC006A215E0021F5BA2EDF01C02
0F1318A26E6C5AA215FC02035BA2EDFEE002015BA26E6C5AA36FC9FCA3153EA2151CA339
3B7EB83E>I<B5D8FC07B5D8F001B5FCA30007902780001FFEC7EA1FF86C48C7D80FF8EC
07E000010307ED03C01B807F6C6F6C1500A26E5F017F6E6C1406A280013F4A6C5CA28001
1F4A6D5BEE067FA26D6C010E6D5BEE0C3FA26D6C011C6D5BEE181FA26D6C6F5BEE300FA2
6D6C6F485AEE6007A26D6C4CC7FC9338C003FCA203805D913B7F818001FE06A203C1150E
DA3FC3C7EAFF0CA203E3151CDA1FE6EC7F98A215F6DA0FFCEC3FF0A302075E4B141FA202
035E4B140FA202015E4B1407A2020093C8FC4B80503B7EB855>I<B500FE91383FFFE0A3
000301E0913807FE00C649EC03F0017F6F5A606D6C5D6D6C140395C7FC6D6C1406A26D6C
5C6D6C141C17186D6C143817306D6D5B6E6C13E05F91383FE0015F91381FF003DA0FF890
C8FC1606913807FC0E160C913803FE1C913801FF185E6E13B016E0157F6F5AB3A24B7E02
3FB512C0A33B397FB83E>89 D<003FB7FCA39039FC0001FE01C0130349495A003EC7FC00
3C4A5A5E0038141F00784A5A12704B5A5E006014FF4A90C7FCA24A5A5DC712074A5AA24A
5A5D143F4A5AA24A5A92C8FC5B495AA2495A5C130F4948EB0180A2495A5C137F495A1603
4890C7FC5B1203485AEE0700485A495C001F5D48485C5E4848495A49130FB8FCA329397B
B833>I<EAFFF8A4EAF000B3B3B3B3A3EAFFF8A40D5378BD17>I<39018001800003130339
07000700000E130E485B0018131800381338003013300070137000601360A200E013E048
5BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F80390E000E001A1974B92A>
I<EAFFF8A4EA0078B3B3B3B3A3EAFFF8A40D537FBD17>I<13101338137C13FE487E3803
C780380783C0380F01E0381E00F04813780070131C48130E00401304170D77B92A>I<EA
01801203EA0700120E5A12181238123012701260A212E05AA412CEEAFF8013C0A3127FA2
EA3F80EA0E000A197AB917>96 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C
6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0
123F485A90C7FC160C12FEA31401A26C13036CEB077C903980063E18383FC01E3A0FE078
1FF03A03FFF00FE03A007F8007C026277DA52A>I<EA03F012FFA3120F1203B0EC1FE0EC
7FF89038F1E03E9039F3801F809039F7000FC001FEEB07E049EB03F049EB01F85BED00FC
A216FEA2167E167FAA167E16FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC090
39C7801F00903881E07E903800FFF8C7EA1FC0283B7EB92E>I<EB03FC90381FFF809038
7E03E03901F80070484813F83907E001FC380FC003A2EA1F80123F90380001F848EB00F0
1500A2127E12FEAA127E127FA26C14067F001F140E6D130C000F141C6C6C13386C6C1370
6C6C13E039007C07C090381FFF00EB07F81F277DA525>I<ED0FC0EC03FFA3EC003F150F
B0EB03F8EB1FFF90387E078F9038F801EF3903F0007F4848133F4848131FA24848130F12
3F90C7FC5AA2127E12FEAA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF0
3A01F801CFFF39007C078F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF9038
7C0FC03901F803E03903F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F
127E12FEA3B7FCA248C8FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D13
1CD801F013386C6C137090387E03E090381FFF80903803FC0020277EA525>I<147E9038
03FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D8
01F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C90
39F81F707C3901F00FE03903E007C03A07C003E010000FECF000A248486C7EA86C6C485A
A200075C6C6C485A6D485A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512
C015F86C14FE6CECFF804815C03A0F80007FE048C7EA0FF0003E140348140116F8481400
A56C1401007C15F06CEC03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007F
FFF0010790C7FC26387EA52A>I<EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039
F1C01F809039F3800FC0EBF70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A329
3A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA48
7EB512C0A312387EB717>I<EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813
FFA313071301B3B3A2123C127E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA
03F8154984B719>I<EA03F012FFA3120F1203B1913801FFFCA39138007FC01600157C15
705D4A5A4A5A4AC7FC141E1438147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E8114
076E7E6E7E811400157E157F811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C>I<
EA03F012FFA3120F1203B3B3AD487EB512C0A3123A7EB917>I<2703F00FF0EB1FE000FF
D93FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE
01FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340
257EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013
FE496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>I<EB03FE90380FFF80
90383E03E09038F800F84848137C48487F48487F4848EB0F80001F15C090C712074815E0
A2007EEC03F0A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D13
1F6C6CEB3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<
3903F01FE000FFEB7FF89038F1E07E9039F3801F803A0FF7000FC0D803FEEB07E049EB03
F04914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0F
E001F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A32835
7EA42E>I<D903F813C090381FFE0190387E07819038FC01C33903F000E3000714774848
133749133F001F141F485A150F48C7FCA312FEAA127FA37E6D131F121F6D133F120F6C6C
137F6C6C13EF3901F801CF39007E078F90381FFE0FEB07F890C7FCABED1FE00203B5FCA3
28357DA42C>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE90
38EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>I<EBFF03000313E7
380F80FF381E003F487F487F00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13
F86C7F00037FC67F01071380EB007F141F00C0EB0FC01407A26C1303A37E15806C13077E
EC0F00B4131E38F3C07C38E1FFF038C03F801A277DA521>I<1318A51338A31378A313F8
120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D
5AEB0FFEEB01F81A347FB220>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407B3
A4150FA3151F12016D133F0000EC77F86D9038E7FF8090383F03C790381FFF87903A03FC
07E00029267EA42E>I<B538803FFEA33A0FF8000FF06C48EB07E00003EC03C06D148000
011500A26C6C1306A26D130E017E130CA26D5BA2EC8038011F1330A26D6C5AA214E00107
5BA2903803F180A3D901FBC7FCA214FF6D5AA2147CA31438A227257EA32C>I<B53A1FFF
E03FFEA3260FF8009038000FF86C48017EEB03E018C00003023EEB0180A26C6C013FEB03
00A36C6CEC8006156FA2017E9038EFC00C15C7A2D93F016D5A15830281EBF038D91F8314
30150102C3EBF87090260FC6001360A2D907E66D5A02EC137CA2D903FCEB7F804A133FA2
010192C7FC4A7FA20100141E4A130E0260130C37257EA33C>I<B538807FFFA33A03FE00
3FF00001EC1F80000092C7FC017E131C6D13186D6C5AECC070010F5B6D6C5AECF180EB03
FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7E090380383F090380703F8EB0601496C
7E011C137E49137F01787F496D7E486C80000FEC3FF0D8FFFE90B51280A329247FA32C>
I<B538803FFEA33A0FF8000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5B
A2137F6D5BA26D6C5AA2ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF
6D5AA2147CA31438A21430A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA
701C6C5AEA1FF0EA0FC027357EA32C>I<003FB512FCA2EB8003D83E0013F8003CEB07F0
0038EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A
495AA290387F000613FEA2485A485A0007140E5B4848130C4848131CA24848133C48C712
7C48EB03FC90B5FCA21F247EA325>I<B81280A2290280962A>I<BD12C0A25202809653>
I<001C131C007F137F39FF80FF80A5397F007F00001C131C190978B72A>127
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fm cmti8 8 71
/Fm 71 125 df<ED3FF8913801FFFE913903F00F8091390FC003C0EC1F00160F143EA214
7E027CEB070093C7FCA214FC5CA5017FB512FEA2903901F0007E167CA213034A13FC5EA3
0107130102C05BA31503010F5C1480A2923807E18016C3131FA2140016C7EE87005B013E
148EED03DEED01FC6F5A017E91C7FC137CA3EA38F812FCA25B12FDEAF1E0EAF3C0EA7F80
001ECAFC2A3D81AE28>12 D<DB3FE0EBFFE0912701FFF80713FC913B07E03E0FC01F913C
0F801E3F00078091391F003E7C047E141F023E5CA2027EEB39F0027C0101EC0E0096C7FC
160302FC5C5CA401011407017FB812FCA2903B01F00007C00061160F01035D4A150161A2
161F0107ED00034A5EA34C1307010F023E5C5CA2F00FC361011F147E167C91C7FC198F19
0E4914FC013E4A5CF0079CF003F803016E5A017E4A90C8FC137CA24B5A3838F83800FC13
FC4B5A01F05C00FD4ACAFC39F1E0F01E39F3C0783C397F803FF0391E000FC0413D81AE3F
>14 D<EA0780EA0FC0EA1FE0123FA3121F120FEA00C0A212011380120313005A120E5A5A
5A5A5A0B1571AD16>39 D<EC01801403EC0700141E5C5C5C495A495AA2495A49C7FC5B13
1E5B137C137813F85B12015B12035B1207A2485AA348C8FCA3121E123EA3123C127CA312
78A412F8A45AA412701278A41238A2123C121CA2121E120E7EA26C7E1201194376B11D>
I<14C080147080A280A2141E140EA2140FA3801580A9140FA41500A25CA3141E143EA314
3C147CA35CA25C1301A2495AA25C13075C130F91C7FC131E133E133C5B5BA2485A485A48
5A48C8FC121E5A5A12E05A19437FB11D>I<EA0380EA0FE0121FA213F0A213E0EA076012
0013E013C0120113801203EA07001206120E5A5A12F012C00C157B8716>44
D<387FFFC0A2B5FCA26C130012057A901A>I<121C127F12FFA412FE12380808788716>I<
147F903803FFC090380783E090381F00F0013C13F849137813F849137C1201485AA2485A
A2000F14FC5B121FA215F8383F0001A4007EEB03F0A448EB07E0A315C0140F5A1580141F
1500A2143E143C5C007813F8495A6C485A381F0F80D80FFEC7FCEA03F81E2D78AB24>48
D<14031407140F141E143E147E14FEEB03FCEB1F7CEB7CFC1360EB00F8A21301A214F0A2
1303A214E0A21307A214C0A2130FA21480A2131FA21400A25BA2133EA2137EA2137CA213
FCB512F8A2182C79AB24>I<147F903801FFC0903807C1F090380F00F8011E137C133801
78133E13F3EBE380D801E1133F13C1120313810183137F0007EB007E5B1306010E13FE49
13FC3903F801F83901E003F0C7EA07E0EC0FC0EC1F80EC3F0014FC495AEB07E0EB0F8001
3EC7FC5BEA01F04848131C4848133C49133848C7FC001E14784814F0383FC001397FFE03
E00078B512C0EA703FD8F00F130038E003FEEB00F8202D7AAB24>I<EC7F80903801FFE0
903807C0F890381E007C49133C49133E49131EEA01E613C701C3133E120313831387D801
CE137E01FC137CD8007813F890C7FCEC01F0EC03E0EC0F80EC3F00EB0FFCA2EB001E141F
EC0F80A215C0A41218127C141F00FC1480A248133F00E01400147E6C5B387001F8387803
F0383C0FC0D80FFFC7FCEA03F81F2D79AB24>I<1538157815F8A3140115F0A3EC03E0A3
EC07C0A2EC0F80A3EC1F00A2143E143C147C147814F85C495AA2495A90380783801487EB
0F0F131E131CEB381F0170130013E012013803803F3807003E120EEA1FF8387FFF7E39F0
07FC1839C000FFF8C7EA7FE0ECFC005CA313015CA313035CA26D5A1D397DAB24>I<0118
1306011F137EECFFFC15F04913E0158090383BFC000138C7FC13781370A313F05BA33801
E3F8EBCFFEEBFC0F01F013803903E007C013C01380C7EA03E01407A5140F003C14C0127E
A2141F00FE148012F800E0EB3F00147E0070137C5C387801F0383803E0381E0F80D80FFE
C7FCEA03F81F2D79AB24>I<EC1FC0EC7FF0903801F078903807C03890380F807890381F
00F8EB3E01137C13F83901F000E01500485A12075B120FA2381F87E0EB9FF8383FF83CEB
E01EEBC01FA248487E01001380A2007E131F12FE5AA2143F15005AA25C147EA25C5C1301
00785B495A6C485AD81E1FC7FCEA0FFCEA03F01D2D77AB24>I<3A01C3E001C09038CFF0
033A03FFF80780ED0F00485C9038F8383E390FE01C7C9038C00FFC48486C5A001EC7FC00
3E5C003C495A5A0070495A00F01307485CC7120F4AC7FCA2143EA25CA214FC5C13015C13
03A2495AA2130F5CA2131F5CA2133FA291C8FC5BA2137EA21338222D77AB24>I<EC3F80
903801FFE0903807C0F090380F0078011E133C49133E49131E5BA2153E0001143CA2157C
6D13786D13F09038FE01E09038FF03C06CEBCF8090387FFE00EB3FF8131F6D7EEB3FFEEB
FBFFD801E013803903C07FC03807803F380F001F001E130F003E1307123C127C00781303
140700F814805AEC0F00A20078131E5C007C5B003C5B381F03C03807FF80D801FCC7FC1F
2D79AB24>I<143FECFFC0903803E1E090380F80F090381F0078133E017E137C5B5B1201
A2485AA215FC12075BA2140115F8EBC003A2140715F00003130FEBE01F0001133F3900F0
77E0EB7FE7EB1F879038000FC0A2EC1F80A21500143E0038137E007E137C00FE5B495A48
485A48485A38700F80D8781EC7FCEA3FF8EA0FE01E2D79AB24>I<13F0EA01F812031207
A3EA03F0EA01C0C7FCAD121C127F5AA45A12380D1D789C16>I<16E01501821503A21507
150FA2151FA2153B157B157315E382EC01C114031581EC0701A2140EA2141C143C143802
707F15005C13015C49B5FCA249C7FCA2130E131E131C4980167E5B13F0485AA21203D80F
F014FFD8FFFC011F13F0A22C2F7CAE35>65 D<011FB512FCEEFF80903A00FE000FC0EE03
E04AEB01F017F80101140017FC5CA2130317F84A1301A20107EC03F017E04AEB07C0EE0F
80010FEC3F0016FE9138C007F891B512E04914F89138C0007C4A7F82013F1580A291C712
0FA25BA2017E141FA213FEEE3F005B167E00015D4B5A49495A4B5A0003EC3F80B600FEC7
FC15F82E2D7BAC32>I<DA01FE133091390FFFC07091393F01E0F09138F80079D903E013
3D4948EB1FE0D91F80130F49C7FC017E14074915C0485A485A5B00071680485AA2485A17
0048CAFCA25A127EA312FE5AA5163848157816707E16F0007C5D15014B5A6C5D4BC7FC6C
140E6C6C133C6C6C5B6C6C485A3900F80FC0D97FFFC8FCEB0FF82C2F75AD33>I<011FB5
12FCEEFF80903A00FE000FC0EE03E04AEB01F0EE00F80101157C173C4A143E171E010315
1FA25CA21307A25CA2130FA24A143FA2131F173E4A147EA2013F157C17FC91C8FC17F849
EC01F0A2017EEC03E0A201FEEC07C0EE0F8049EC1F00163E00015D5E49495AED07C00003
023FC7FCB612FC15E0302D7BAC36>I<011FB612FEA2903900FE0001EE007E4A143EA201
01151E171C5CA21303A25C16E001071301170002E05B1503130F15074A485A91B5FC5BEC
C01F4A6CC7FCA2133FA2DA000E13E0A2491401030013C0017E1403178001FE1407170049
5C161E12015E49147CED01FC0003EC0FF8B7FC5E2F2D7CAC30>I<011FB612F8A2903900
FE000716014A13001778130117705CA21303A25C16E001071301170002E05B1503130F15
074A485A91B5FC5BECC01F4A6CC7FCA2133FA2EC000EA25B92C8FC137EA213FEA25BA212
01A25BA21203B512F0A22D2D7CAC2E>I<03FF1318020FEBC03891393F00F07802F8EB38
F8D903F0131CD907C0EB0FF0EB1F8049C71207137E49EC03E0485A485AA2484815C0485A
A2485A178048CAFCA25A127EA312FE5AA292B512E0A2923801FE006F5A15015EA3007C14
035E127E123E001E1407001F5D6C6C130F6C6C133F6C6C13793A00F803F1C090383FFF80
D907FCC8FC2D2F75AD37>I<903B1FFFF81FFFF8A2D900FEC7EAFE00A24A5CA201011401
5F5CA2010314035F5CA2010714075F5CA2010F140F5F5C91B6FC5B9139C0001F805CA201
3F143F94C7FC91C7FCA2495C167E137EA201FE14FE5E5BA2000114015E5BA200031403B5
00C0B512C0A2352D7BAC35>I<90381FFFF8A2903800FE00A25CA21301A25CA21303A25C
A21307A25CA2130FA25CA2131FA25CA2133FA291C7FCA25BA2137EA213FEA25BA21201A2
5BA21203B512C0A21D2D7CAC1B>I<91387FFFE0A2913800FE00A25DA214015DA314035D
A314075DA3140F5DA3141F5DA3143F92C7FCA35CA2147EA2003C13FE127E00FE5BA2495A
EAFC0300F05B48485A38700FC0D8781FC8FCEA1FFCEA07F0232E7AAC25>I<90261FFFF8
EBFFFEA2D900FEC7EA1FE018804AEC3E005F01015DEE01E04A495AEE0F8001034AC7FC16
3C4A5B4B5A0107EB03C04B5A4A48C8FC153E010F137E15FEECC1FF14C790381FCF3F02DE
7FECFC1F02F87FEB3FE04A6C7E1480EC000749801503017E80A201FE6D7EA24913008200
01157E167F5B831203B539C007FFF8A2372D7BAC37>I<90381FFFFEA2D900FEC7FCA25C
A21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C7121CA24914
3C1638017E1478167001FE14F0A249EB01E0A200011403ED07C049130FED3F80000314FF
B7FC1600262D7BAC2D>I<D91FFFED0FFF600100EE3FC0A2F07F8018EF902601EF8014FF
943801DF0014CFEF039F01034B5A183E028F140E171C0107167EDA87C0EB387C14071770
010FEDE0FC60010EEC01C0EE0380011E158193380701F090381C03E0160E013CEC1C0360
01381438A20178EC700704E05B90387001F0EDF1C001F09038F3800F6001E0EBF700A200
0102FE131F4B91C7FC13C0486C6C5AD80FF05DD8FFFE9039F00FFFF815E0402D7BAC40>
I<D91FFE903803FFF8A2D900FF9038003F80EF1E00A26F131C49153C6F133814CFA20103
6D137802C714701487EC83F0010715F06F5B1401A2010FEBFC0102005C130E157E011E14
03037F5B011C133FA2013C1487031F90C7FC1338ED0FC7017814CF16EE01701307A201F0
14FE6F5A5B150112015E491300487E120FD8FFFE1470A2352D7BAC35>I<4AB4FC020F13
C091383E03F09138F8007CD903E07FD907807F011FC77E013E15804914074915C0485AEE
03E0485A485AA2485A121F90C8FC5AA2003E1507127EA348ED0FC0A3EE1F80A217005E16
3E167E167C16FC4B5A007C5D4B5A6C4A5A4B5A6C4AC7FC6C6C133E6D13F83903E003F039
01F80FC026007FFFC8FCEB0FF02B2F75AD37>I<011FB512FCEEFF80903A00FE000FE0EE
03F04AEB00F8A20101157CA25C177E130317FC5CA20107EC01F8A24AEB03F017E0010FEC
07C0EE0F804AEB3F00ED01FC91B512F04991C7FC0280C8FCA3133F91C9FCA35B137EA313
FE5BA312015BA21203B512C0A22F2D7CAC30>I<4AB4FC020F13C091383E03F09138F800
FCD903E0133E49487F011FC7FC013EEC0F804914074915C012014915E04848140312075B
120F485AA248C8FC1607123E127EA348ED0FC0A3EE1F80A21700485D163E167E6C157C16
FC4B5A007C01F05B903903FC03E03A3E070E07C0903906060F80271F0E071FC7FC390F0C
033E018C13F8D803EC5B3901FE0FC03A007FFF0018EB0FF7D90007133816301670ED80F0
ED81E015C3EDFFC0A25E93C7FC6E5AEC00F82B3B75AD37>I<011FB512E016FC903900FE
003FEE0FC04AEB07E016030101EC01F0A24A14F8A21303EE03F05CA20107EC07E017C04A
EB0F80EE1F00010F143E16FC9138C007F091B512805B9138C00FE091388003F06F7E133F
6F7E91C7FCA2491301A2017E5CA201FE1303A2495C17080001163C17384914E0EEF07800
031670B5D8C00113E09238007FC0C9EA1F002E2E7BAC34>I<91380FF00C91383FFC1C91
38F80F3C903903C007BC9039078003FC90390F0001F8131E491300A24914F0A313F816E0
A216007F7F6D7EEB7FF8ECFF806D13E06D13F801077F01017FEB001FEC01FF6E7E8181A2
81121CA35D003C141EA25DA2007E5C5D007F495A6D485A26F1F01FC7FC38E07FFC38C00F
F0262F7BAD28>I<000FB712F0A23A1FE00FE00701001401001E02C013E0481500141F12
380078EC8001A20070013F14C012F0481400A25CC791C7FC147EA214FEA25CA21301A25C
A21303A25CA21307A25CA2130FA25CA2131FA25CA2133F003FB57EA22C2D74AC33>I<3B
3FFFF007FFF0A2D801FCC7EA7F00163C5B16380003157816705BA2000715F05E5BA2000F
14015E5BA2001F14035E5BA2003F140793C7FC90C7FCA2485C150E127EA2151E00FE141C
5A153C153815781570007C5C1401007E495A003E495A6C49C8FC6C133C3807C0F83801FF
E06C6CC9FC2C2E72AC35>I<B56CEBFFFCA2D807F0C7EA1FC01780491500161E6D141C00
035D167816705EA24B5A4B5A7F00014AC7FC5D150E5DA25D15786D13705D000013015D4A
5AA24AC8FC5C140E6D5A137E5C5CA25C137F5C5CA26DC9FCA2133E133CA22E2E72AC35>
I<B53B807FFF803FFFA23D0FF00007F00007F06C48EE03E04C14C019801807030F150018
0E4B7E60153B037B5C0373147803E3147018F0DA01C35C4D5AEC03834D5A3903F0070302
0F4AC7FC020E5C021E140E021C141E0238141C5F027013F803015B14E001F15D14C001F3
ECF9C0028013FBD9F7005C04FFC8FC13FE5E5B00015D5B5E5B495C5E491300402E72AC47
>I<903B0FFFF003FFF8A20100D9800013806EC7EAFC005F6E5C6F485A021F495A6F485A
4CC7FC020F131E6F5A020713386F5A5E913803F9C015FB6EB45A93C8FC6E5AA3157E15FF
5C913803BF80EC073FEC0F1F021E7FEC3C0F02787F14F0903801E00702C07F9038038003
D907007F130E496D7E133C49130049801203D80FF8497ED8FFFE010F13F8A2352D7CAC35
>I<EB07C0EB1FF090387C39C0EBF81FEA01F03803E00FEA07C0120FD81F801380A2EA3F
00141F481400127EA25C00FE133E5AA2EC7E18EC7C385AA214FCD878011378397C03F870
A2393C0F78E0381E1E3D390FF81FC03903E00F001D1F799D24>97
D<13F8121FA21201A25BA21203A25BA21207A25BA2120FEBC7C0EB9FF0EBF878381FF03C
EBE03EEBC01EEB801FEA3F00A2123EA2007E133FA2127CA2147F00FC137E5AA214FCA214
F8130114F0EB03E0EA780714C0383C0F80381E3E00EA0FF8EA03E0182F78AD21>I<EB01
F8EB0FFE90383E0780EBFC03D801F013C03803E0070007130FEA0FC001801380121F48C8
FCA25A127EA312FE5AA5EC0180007CEB03C0EC0780EC0F006C131E001E137C380F83F038
07FFC0C648C7FC1A1F799D21>I<153EEC07FEA2EC007EA2157CA215FCA215F8A21401A2
15F0A21403EB07C390381FF3E0EB7C3BEBF81FEA01F03903E00FC0EA07C0120FEA1F8015
80EA3F00141F5A007E1400A25C12FE48133EA2EC7E18153848137CA214FCD87801137839
7C03F870A2393C0F78E0381E1E3D390FF81FC03903E00F001F2F79AD24>I<EB03F8EB0F
FEEB3E0FEBF8073901F00380EA03E0EA07C0000F1307D81F8013005C383F001E5C387F03
F8EBFFE049C7FC007EC8FC12FE5AA4127CEC0180EC03C0EC07806CEB0F00141E6C137C38
0F83F03803FFC0C648C7FC1A1F799D21>I<EC01F0EC07FCEC0F9EEC1F1EEC1E3EEC3E7E
A3EC7C381500A314FC5CA590387FFFF0A2903801F000A313035CA413075CA4130F5CA413
1F91C7FCA45B133EA4137E137CA3EA38F812FCA25B12FDEAF1E0EAF3C0EA7F80001EC8FC
1F3D81AE16>I<14F8EB03FE90380F873890381F03F8137EEB7C0113F81201EA03F015F0
EA07E01403120F01C013E0A21407121F018013C0A2140FA21580141F120F143FEC7F006C
6C5AEA03C33801FFBF38007E3E1300147EA2147CA214FC00385BEAFC015C495A48485A38
F01F80D87FFEC7FCEA1FF01D2C7C9D21>I<131FEA03FFA2EA003FA2133EA2137EA2137C
A213FCA25BA21201147E9038F3FF809038F787C03903FE03E013FC13F8A2EA07F013E0A2
13C0000F130715C01380A2001F130F15801300141F481406150E003E133F143E007E141E
EC7E1C007C137CEC3C3812FC157048EB1FE00070EB07801F2F7BAD24>I<130E131FEB3F
80A2EB1F00130E90C7FCA9EA03E0EA0FF0EA1E78EA1C7C12381278127013FCEAF0F812E0
12E1EAC1F0120112035B12075BA2120F13831387121F13075BEA3F0E123EEA1E1C133C13
38EA0FF0EA03C0112E7AAC16>I<EC0380EC07C0140FA3EC070091C7FCA9EB01F0EB07FC
EB0F1E131EEB1C1F13381378EB703FEBF03E13E0A2EBC07E1300147CA214FCA25CA21301
A25CA21303A25CA21307A25CA2130FA25CA2131F003890C7FCEAFC3F133E5B485AEAF1F0
EA7FC0001FC8FC1A3B82AC16>I<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA2
5BA21201EC01E09038F007F0EC1E380003EB3878EC71F8EBE0E1EBE1C13807E381EC00E0
49130013CEEA0FFC13F0A213FF381F9FC0EB87E0EB03F01301003F14301570123EA2007E
14F015E0007C13E014E100FC14C0903800F38048EB7F000070131E1D2F7BAD21>I<137C
EA0FFCA21200A213F8A21201A213F0A21203A213E0A21207A213C0A2120FA21380A2121F
A21300A25AA2123EA2127EA2127CA2EAFC30137012F8A213F013E012F012F113C012FBEA
7F80EA1E000E2F7AAD12>I<3B07801FC007F03B1FE07FF01FFC3B3DF1E0F8783E3B38F3
C078F01E3B78FF007DC01FD870FEEB7F80A2D8F1FC1400D8E1F8137EA249137C00C302FC
5B0003163E495BA200070101147E177C01C05B17FC000F0103ECF83018700180EBE00117
F0001F010715F0040313E0010001C013E0EFE1C048010F1301EFE380003E91398000FF00
001C6DC7123C341F7A9D3A>I<3907801FC0391FE07FF0393DF1E0F83938F3C0783978FF
007CEA70FEA2EAF1FCEAE1F8A25B00C314FC00035C5BA2000713015D13C01403000FECE0
C015E1EB800715C1001F14C3020F13800100138391380787005A158E003EEB03FC001CEB
00F0221F7A9D28>I<EB03F8EB0FFE90383E0F809038FC07C03801F003D803E013E01207
390FC001F01380121FEA3F0014035A127EA2140700FE14E05AA2EC0FC0A2EC1F80A2007C
EB3F00143E5C6C5B381E01F0380F07C06CB4C7FCEA01FC1C1F799D24>I<90383C01F090
38FF07FC3901E79E1E9038C7BC0F000301F81380903887F00702E013C038078FC0130F14
80A2D8061F130F12001400A249131F1680133EA2017EEB3F00A2017C133E157E01FC137C
5DEBFE015D486C485AEC0F80D9F3FEC7FCEBF0F8000390C8FCA25BA21207A25BA2120FA2
EAFFFCA2222B7F9D24>I<903807C06090381FF0E0EB7C39EBF81FEA01F03903E00FC0EA
07C0120FEA1F801580EA3F00A248131F007E1400A300FE5B48133EA3147E48137CA214FC
EA7801387C03F8A2EA3C0FEA1E1F380FF9F0EA03E1EA000113035CA313075CA2130FA238
01FFFCA21B2B799D21>I<3807803E391FE0FF80393CF3C1C03938F781E03878FF07EA70
FE13FC12F139E1F8038091C7FC5B12C312035BA21207A25BA2120FA25BA2121FA290C8FC
A25AA2123E121C1B1F7A9D1E>I<EB0FC0EB7FF0EBF03C3801E01C3803C01EEA0780143E
A2000F133C1418EBC00013F813FF6C13C06C13E06C13F0EA007F130713031301EA780012
FCA2130100F813E012E0EB03C038F0078038781F00EA1FFCEA07F0171F7A9D1D>I<131C
133EA2137EA2137CA213FCA25BA21201A2B512E0A23803F000A25BA21207A25BA2120FA2
5BA2121FA290C7FCA24813C01301123E130314801307003C1300130E131E6C5AEA0FF0EA
07C0132B7AA918>I<EA03C0D80FF01338D81E78137CD81C7C13FC003814F812781270EB
FC01D8F0F813F012E012E138C1F003000114E0120313E01407000714C013C0A2EC0FC300
0F14871380A2141F158F0007EB3F0E147F01C0131C3903E1E7BC3901FF83F839007E01E0
201F7A9D26>I<3903C001C0390FF003E0391E7807F0EA1C7C1238007813030070130113
FCD8F0F813E012E000E1130038C1F001000114C0120313E014030007148013C0A2EC0700
120F1380140EA25C12076D5A00035B6D5AC6B45A013FC7FC1C1F7A9D21>I<D803C01407
D80FF09038700F80D81E789038F81FC0381C7C01003814F00078150F00701507EBFC03D8
F0F801E0138012E000E1150326C1F007130700011600000314C013E0020F5B0007150E01
C01380A2161E000F011F131C01801300163C1638167800074913709039C07F80F00003EC
81E03A01E0E7C3C03A00FFC1FF8090263F007EC7FC2A1F7A9D2F>I<90383E01F09038FF
87F83903C7DE1E380783DC903803F87EEA0E01001E13F0EA1C03003C14380038EBE000A2
EA300700005BA3130F5CA3011F1318153814001238D87C3F137012FC15E0EB7F0139F0FF
03C03970E78780393FC3FE00381F00F81F1F7C9D21>I<EA03C0D80FF01338D81E78137C
D81C7C13FC003814F812781270EBFC01D8F0F813F012E012E138C1F003000114E0120313
E01407000714C013C0A2140F000F14801380A2141F150000075B5C13C03803E1FE3801FF
BE38007E3EEB007E147CA2003E5BA2387E01F0A2387C03E0387007C06C485AD83C3EC7FC
EA1FF8EA07E01E2C7A9D23>I<010F13E0EB3F80EBFFC1ECE3C048EBF3803803E0FF9038
C03F00EB801E00075BC7123814785C495A495A495A49C7FC131E5B5B9038F001803801E0
03EA03C038078007390F000F00EA1FE0EBF83E383C7FFE486C5A38701FF838F00FF038E0
07C01B1F7C9D1D>I<B7FCA220027A9224>I<BB1280A24102789249>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fn cmbx8 8 19
/Fn 19 121 df<B512F8A715077F921B>45 D<913A03FF8001C0023FEBF80349B5EAFE07
0107ECFF8F011F9038801FFF90397FF80007D9FFE0130148497F4890C8127F4848153F12
0F4848151F49150F123F5B007F1607A34992C7FC12FFAA127F7FEF03C0A2123F7F001F16
076D16806C6C150F000717006C6C5D6C01C0143E6C6D14FCD97FF8EB03F8903A1FFF801F
F0010790B512C0010192C7FCD9003F13FC020313C032307CAE3B>67
D<B612C0A400010180C8FCB3A5EE03C0A416071780A2160FA2161FA2163F167FED01FF03
0F1300B8FCA42A2E7DAD31>76 D<B56C92380FFFFC6E5DA26E5D0001F0FE00D9EFF0157B
A2D9E7F815F3A3D9E3FCEC01E3A2D9E1FEEC03C3A2D9E0FFEC0783A26E6CEB0F03A26E6C
131EA26E6C133CA26E6C1378A36E6C13F0A2913903FC01E0A2913901FE03C0A2913900FF
0780A292387F8F00A2ED3FDEA2ED1FFCA36F5AA2B527C007F001B512FCA2ED03E0ED01C0
462E7DAD4D>I<B712C016FC16FF17C00001D9800113E09238007FF0EE3FF8161FEE0FFC
A217FEA717FCA2EE1FF8EE3FF0167F923801FFC091B61280EEFE0016F00280C8FCB0B6FC
A42F2E7DAD37>80 D<EB7FF80003B5FC000F14C0391FE01FF09038F007F86E7EA26E7EEA
0FE0EA07C0C7FCA214FF133F48B5FC000713C1381FFC01EA3FE0EA7FC0EAFF801300A314
0313806C6C487E263FF03F13F8381FFFFE0007EBF87FC6EBC01F251E7E9D28>97
D<EB0FFC90387FFF8048B512E03907FC0FF0390FF003F8391FE001FC1400484813FE007F
147E5B157F12FFA290B6FCA30180C7FCA3127F7FA2003F140F6C7E6C6C131F6C6C137E39
03FE01FC6CB512F86C6C13E001071300201E7E9D25>101 D<ED07C090391FF81FF090B5
EA7FF8000314FD3907F81FF3380FE007001F14F99039C003F8F0003FECFC00A6001F5CEB
E007000F5C3907F81FE090B55A4891C7FCEB1FF8001EC9FC121FA27F90B512C06C14F815
FF6C158016C04815E0123F48C7EA3FF000FE140F4814071503A36C1407007FEC0FE06C6C
EB1FC0D81FF0EBFF800007B5EAFE00000114F8D8001F1380252D7E9E29>103
D<EA07C0EA0FE0EA1FF0EA3FF8A5EA1FF0EA0FE0EA07C0C7FCA6EA03F012FFA4120FB3A3
B5FCA4102F7CAE17>105 D<EA03F012FFA4120FB3B3B5FCA4102E7CAD17>108
D<2707E00FF8EB1FF000FFD97FFEEBFFFC01E1B5008313FF9028E7E07FCFC01380903BEF
803FDF007F260FFE0013FC031FEC3FC0495C495CA2495CB0B53B01FFFE03FFFCA43E1E7C
9D45>I<3907E01FF000FFEB7FFC01E1B5FCD9E7E013809038EF807F260FFE0013C04913
3FA25BA25BB0B53803FFFCA4261E7C9D2D>I<EB07FE90387FFFE048B512F83903FC03FC
3907F000FE4848137F4848EB3F80003F15C049131F007F15E0A200FF15F0A8007F15E0A2
6D133F003F15C0001F15806D137F6C6CEBFF003903FC03FC6CB55A6C6C13E0D907FEC7FC
241E7E9D29>I<3903F03FE039FFF1FFFC01F713FFD9FFC013809039FE007FC0D80FFCEB
3FE049EB1FF05BED0FF8A216FC1507A8ED0FF8A3ED1FF07F6DEB3FE06DEB7FC09039FF81
FF809039F7FFFE0001F113F89038F07FC091C8FCA9B5FCA4262B7D9D2D>I<3807E07E39
FFE1FF8001E313E0EBE78F9038EF1FF0EA0FFE13FCA29038F80FE0EC07C091C7FC5BAFB5
7EA41C1E7D9D22>114 D<3801FF8E000713FE121FEA3F00007C137E0078133E00F8131E
A27EB490C7FC13F0EBFF806C13E06C13F86C13FE7E00037FD8003F13801300143F00F013
1F140F7EA26CEB1F007E38FF807EEBFFFC00FB13F000E01380191E7D9D20>I<133CA413
7CA313FCA2120112031207001FB5FCB6FCA3D803FCC7FCAEEC03C0A61407D801FE1380EB
FF0F6CEBFF00EB3FFCEB0FF01A2A7FA920>I<D803F0EB0FC000FFEB03FFA4000FEB003F
B1157FA215FF00075BD9F80713FC6CB512BFC6EBFE3FEB3FF0261E7C9D2D>I<D8FFFEEB
FFF8A4D803FCEB7E006C6C5B6D485A6CEB81F090387FC3E090383FE7C090381FEF806DB4
C7FC6D5A6D5A6D7E80497F497F497FEB1F9FEC0FF090383E07F8496C7E496C7ED801F07F
48486C138026FFF80113FCA4261E7E9D2B>120 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fo cmr8 8 87
/Fo 87 128 df<9138FF807E01079038E1FF80903A1F807FC3C0D93E00EB87E049EBFF07
4913FE485A00039138FC018049017CC7FCAAB712FCA22703E0007CC7FCB3A6486C13FE3A
7FFF0FFFF0A22B2F7FAE29>11 D<14FF010713E090381F80F090383E003849137C4913FC
485A1203491378153092C7FCA7157CB612FCA23803E000157CB3A5486C13FE3A7FFF0FFF
E0A2232F7FAE27>I<ECFFC0010713FC90381F807C90383E00FC5B5B485A0003147C5BAA
B612FCA23903E0007CB3A6486C13FE3A7FFF0FFFE0A2232F7FAE27>I<91397F800FF090
3A03FFE07FFE903A1FC079F80F903B3E001FE003804990393FC007C04990387F800F4848
1400A24848017EEB0780033EEB030094C7FCA7EF07C0B9FCA23B03E0003E000F1707B3A5
486C017FEB0FE03C7FFF07FFF0FFFEA2372F7FAE3B>I<13E0EA01F01203A2EA07E0EA0F
C0EA1F00121E5A5A12E012400C0C72AD23>19 D<003C13F0387E01F838FF03FCA2EB83FE
A2EA7F81383D80F600011306A30003130EEB000CA248131C00061318000E133848137048
13E0387001C00060138017157EAD23>34 D<D801F01530D807FC1570D80F0E15F0261E07
80495A486C6CEB07C0D901F0130F007801FCEB3F80902700CFFFF7C7FC02C313CF489038
E0001E02605B163816785E5E15014B5A02E05B0078EBC0074BC8FC0101130E003CEB801E
01035B391E070038D80F0E1378D807FC5B3901F001E0C79038C003E00203EB0FF8913907
801E1C4B487E4A497E021E80021C01F01380023C14015C91267001E013C002F01400EB01
E014C01303EB078014005B011E150149D900F013801338017815034902781300495D0001
ED3C0E48486E5A49EC0FF80001ED03E032367CB13B>37 D<123C127EB4FCA21380A2127F
123D1201A312031300A25A1206120E5A5A5A126009157AAD14>39
D<13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F00A2121EA35AA45A
A512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0EA00F01370133813
1C130E1307130310437AB11B>I<12C07E12707E7E7E120FEA0780120313C0EA01E0A2EA
00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA41378A313F0A2EA01E0
A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B>I<123C127EB4FCA21380A212
7F123D1201A312031300A25A1206120E5A5A5A126009157A8714>44
D<B512C0A412047F9018>I<123C127E12FFA4127E123C08087A8714>I<15C01401140315
80A214071500A25C140EA2141E141CA2143C143814781470A214F05CA213015CA213035C
130791C7FCA25B130EA2131E131CA2133C1338A21378137013F05BA212015BA212035BA2
120790C8FC5A120EA2121E121CA2123C1238A212781270A212F05AA21A437CB123>I<EB
3FC0EBFFF03803E07C48487E48487E497E001EEB0780A2003E14C0A248EB03E0A500FC14
F0B0007C14E0A3007E1307003E14C0A36CEB0F806C14006D5A3807C03E3803F0FC3800FF
F0EB3FC01C2D7DAB23>I<130C133C137CEA03FC12FFEAFC7C1200B3B113FE387FFFFEA2
172C7AAB23>I<EB7F803801FFF0380780FC380E003F48EB1F8048EB0FC05A0060EB07E0
12F000FC14F07E1403A3007C1307C7FCA215E0140F15C0141F1580EC3F00147E147C5C49
5A495A495A495A011EC7FC5B5B4913305B485A4848136048C7FC000E14E0001FB5FC5A48
14C0B6FCA21C2C7DAB23>I<EB3FC03801FFF03807C0FC380E007E487FEC1F80003F14C0
A2EB800F1300A2000C131FC7FC1580A2EC3F00143E5C5CEB03F0EBFFC014F0EB00FC143F
EC1F8015C0140F15E0A2EC07F0A21238127C12FEA3EC0FE012F8006014C00070131F6C14
80001EEB3F00380780FC3801FFF038007FC01C2D7DAB23>I<140EA2141E143EA2147E14
FEA2EB01BE1303143E1306130E130C131813381330136013E013C0EA0180120313001206
120E120C5A123812305A12E0B612FCA2C7EA3E00A9147F90381FFFFCA21E2D7EAC23>I<
000CEB0180380FC01F90B512005C5C14F014C0D80C7EC7FC90C8FCA8EB1FC0EB7FF8380D
E07C380F801F01001380000E130F000CEB07C0C713E0A2140315F0A4127812FCA448EB07
E012E0006014C00070130F6C14806CEB1F006C133E380780F83801FFE038007F801C2D7D
AB23>I<EB03F8EB0FFE90383E0780EBF8013901F007C03803E00FEA07C0EA0F80A2391F
00078091C7FC123EA2127EA2127CEB0FC038FC3FF0EBF07C38FDC01EB4487E01001380EC
07C04814E0A214034814F0A4127CA3127EA2003E14E01407121E001F14C06CEB0F803907
801F003803C03E6C6C5A38007FF0EB1FC01C2D7DAB23>I<1230123C003FB512F8A215F0
5A15E039700001C000601480140348EB0700140E140CC7121C5C143014705C495AA2495A
A249C7FCA25B130E131EA2133EA3133C137CA413FCA913781D2E7CAC23>I<EB1FC0EBFF
F03803E07C3807801E48487E001EEB0780A248EB03C0A4123E1407003F1480381FC00F01
E01300EBF81E6C6C5A3807FFF86C13E0C6FCEB3FF8EBFFFC3803C7FFD807831380D81F00
13C0001E133F48EB1FE0007C13070078EB03F012F84813011400A46C14E000781301007C
14C0003C13036CEB0780390F800F003807E03C3801FFF038003FC01C2D7DAB23>I<EB3F
80EBFFF03803E0783807C03E48487E48487E003E14801407007E14C0127C00FC14E01403
A315F0A5007C1307127EA2003E130F7E6C131F3807803B3803E0F33800FFC390383F03E0
13001407A215C0A2140F001E1480003F14005C143E143C003E5B001C5B380E03E03807FF
80D801FEC7FC1C2D7DAB23>I<123C127E12FFA4127E123C1200AD123C127E12FFA4127E
123C081D7A9C14>I<123C127E12FFA4127E123C1200AD123C127E12FE12FFA3127F123F
1203A312071206A2120E120C121C1218123812701260082A7A9C14>I<B812FCA3CBFCAD
B812FCA32E137C9937>61 D<48B4FC000713E0381E01F8383800FC48137E0060133E00F8
133F7EA40030137FC7127E14FCEB01F8EB03F014E0EB0780EB0F00A2131E131CA2131813
381330A790C7FCA7137813FC487EA46C5A1378182F7CAE21>63 D<EC3FF0903801FFFE90
3907C00F8090391E0001E00138EB007001F0143CD801C0140E48488048C8EA0380000690
380FC001000ED97FF013C03B1C01F03C00E0271803E00E1360273807C00713703B300F80
0380303B701F0001F83800601618013E1300A200E0161C4848150CA86C7E1260A26D0101
131C0070161839300F8003393807C007271803E00E13383B1C01F03C7C703B0E007FF03F
E0000690390FC00F80000790C9FC6C7E6C7ED800F0153C0138EC01FC011EEC1FF0903A07
C003FF800101B5EAF8009026003FFEC7FC2E307CAE37>I<4A7E4A7EA34A7EA24A7EA3EC
1BF81419A2EC30FCA2EC70FEEC607EA24A7EA349486C7EA2010380EC000FA201066D7EA3
496D7EA2011FB57EA29038180001496D7EA349147EA201E0147F4980A20001ED1F801203
000716C0D80FF0EC3FE0D8FFFC0103B5FCA2302F7EAE35>I<B612FCEDFF803A03F8000F
C00001EC03F06F7E6F7E82167E167FA6167E16FE5E4B5A4B5AED0FE0ED7F8090B6C7FC16
E09039F80003F0ED01FC6F7E167F821780161F17C0A61780163F17005E16FEED03FC0003
EC0FF0B712C04BC7FC2A2D7DAC32>I<DA1FF013C09138FFFE01903903F00F8390390F80
01E3013FC71277017C143F4848141F4848140F48481407A248481403121F491401123F90
C8FC481500A300FE1600AB127F17C0A27E7F001F15016D1580120F6C6C1403EE07006C6C
14066C6C140ED8007C5C013F147890390F8001E0903903F00FC0902600FFFEC7FCEC1FF0
2A2F7CAD33>I<B612F815FF3A03F8001FE00001EC03F0ED00F8167E82EE1F80160F17C0
EE07E0A2EE03F0A217F81601A317FCAA17F8A3EE03F0A217E0160717C0160FEE1F80EE3F
00167E5EED03F00003EC1FE0B7128003F8C7FC2E2D7DAC36>I<B712FEA23903F8000100
01EC003E828282A282A3178016011518A293C7FCA31538157815F890B5FCA2EBF8001578
15381518A21760A392C712C0A4160117801603A21607160F163F0003913801FF00B8FCA2
2B2D7EAC30>I<B712FCA23903F800030001EC007C163E161E160EA21606A31607160315
18A21600A31538157815F890B5FCA2EBF800157815381518A592C7FCAB487EB512F8A228
2D7EAC2E>I<DA1FF013C09138FFFE01903903F00F8390390F8001E3013FC71277017C14
3F4848141F4848140F48481407A248481403121F491401123F90C8FC481500A300FE1600
A992381FFFFEA2007F9138001FE0EE0FC0A27E7F121F7F120F6C7EA26C7E6C6C141FEA00
7C013F143FD90F8013F3903903F007C10100B51200DA1FF813002F2F7CAD37>I<B539F0
3FFFFCA2D803FCC713006C48147EB290B612FEA201F8C7127EB3486C14FFB5D8F03F13FC
A22E2D7DAC35>I<B512F0A23803FC006C5AB3B3A3487EB512F0A2142D7EAC19>I<90387F
FFF0A201001300147EB3AD123812FEA314FE5C1278387001F86C485A381E07E03807FF80
D801FCC7FC1C2E7DAC24>I<B500F0EB7FFEA2D803FCC7EA1FF06C48EC0FC01700161E16
385E5E4B5A4B5A4BC7FC150E5D5D15F0EC01C04A5A4A7E4A7E141F4A7EEC73F8ECE1FCEB
F9C09038FF80FE9038FE007F497F49806F7E6F7E1507826F7E6F7EA26F7E167F821780EE
1FC017E0486CEC3FF0B5D8F001B5FCA2302D7DAC37>I<B512F8A2D803FCC8FC6C5AB3A7
160CA41618A41638A2167816F81501ED07F00003141FB7FCA2262D7EAC2C>I<D8FFF892
3807FFC06D5D0003EFF00000015F01BE151BA2019F1533A3D98F801463A2D987C014C3A2
D983E0EB0183A3D981F0EB0303A2D980F81306A3027C130CA26E1318A36E1330A291380F
8060A2913807C0C0A3913803E180A2913801F300A3EC00FEA2157C487ED80FF04B7EB5D9
3801B512C0A23A2D7DAC41>I<D8FFF8903803FFFC7F00019138003FC06DEC0F006D1406
EBBF80A2EB9FC0EB8FE0138780EB83F8138180EB80FE147E147FEC3F80EC1FC0140F15E0
EC07F0140315F8EC01FC140015FE157FED3F86151F16C6ED0FE6150716F6ED03FE1501A2
1500167E163EA2486C141ED80FF0140EB5FC16062E2D7DAC35>I<EC3FF0903801FFFE90
3907E01F8090391F8007E090393E0001F001FCEB00FC4848147E4848804848EC1F804914
0F000F16C04848EC07E0A248C8EA03F0A24816F8A2007E1501A200FE16FCAA007FED03F8
A36C16F06D1407001F16E0A26C6CEC0FC06D141F000716806C6CEC3F006C6C147E6C6C5C
017E495A90391F8007E0903907E01F80902601FFFEC7FC9038003FF02E2F7CAD37>I<B6
12FCEDFF803A03F8000FE00001EC03F0ED00F882167E167F821780A617005E167E5E5EED
03F0ED0FE090B6128003FCC7FC01F8C9FCB2487EB512F0A2292D7EAC30>I<B612C015FC
3903F8007F0001EC0FC06F7E6F7E6F7E82150082A55E15015E4B5A4B5A4B5A037FC7FC90
B512FC15F09038F800FC153E6F7E150F826F7EA582A5170316F815031707486C903801FC
0EB539F000FE1CEE3FF8C9EA07E0302E7DAC34>82 D<90383F80303901FFF0703807C07C
390F000EF0001E13074813034813011400127000F01470A315307EA26C1400127E127FEA
3FE013FE381FFFE06C13FC6C13FF00011480D8003F13E013039038003FF0EC07F8140114
0015FC157C12C0153CA37EA215787E6C14706C14F06CEB01E039F78003C039E3F00F0038
E07FFE38C00FF01E2F7CAD27>I<007FB712F8A29039000FC003007C150000701638A200
601618A200E0161CA248160CA5C71500B3A94A7E011FB512E0A22E2D7EAC33>I<B539F0
03FFFCA2D803FCC7EA3FC06C48EC0F001606B3AB160E0000150C7F161C017C1418017E14
386D5C6D146090390F8001E0903907E00380902601F80FC7FC9038007FFCEC0FF02E2E7D
AC35>I<B500C090380FFFC0A2D807FCC73803FE006C48EC00F800015E5F6C7E5F6D1401
017E5DA26D4AC7FCA26E5B011F140680010F5CA26D6C5BA26E133801031430A26D6C5BA2
6E13E001005C8091387E0180A26E48C8FCA21583EC1F86A2EC0FCCA215FC6E5AA26E5AA3
6E5AA26E5A322E7FAC35>I<B53C801FFFF001FFF8A22707FC000190C7EA3FC0D803F06D
48EC1F00047E140EA26C6C027F140CA26D171C0000DBDF801318A26D1738017E9026018F
C01330A2017F17706D90260307E01360A2028016E0011F90260603F05BA202C01501010F
90260C01F85BA202E01503010790261800FC90C7FCA202F05D010349EB7E06A202F8150E
010149EB3F0CA202FC151C010049EB1F98A202FE15B8DA7F80EB0FF0A2023F5D92C71207
A26E5D021E1403A2020E5D020C1401452E7FAC48>I<B500C090380FFFC0A2D807FEC738
01FE006C48EC00F8000116E06C6C5D1601017F4A5A6D6C91C7FC5E6D6C130E6D6C130C5E
6D6C13386D6C13305E6D6C13E06D6C5B4B5AEC7F03DA3F83C8FC1586EC1FCEEC0FEC15F8
14076E5AB04A7E49B512C0A2322D7FAC35>89 D<003FB612C0A29038F0001F0180EB3F80
003EC7EA7F00123C003814FE4A5A5A4A5A4A5A12604A5A4A5AA2C7485A4AC7FCA214FE49
5AA2495A5C1307495AA2495A495A166049C7FC13FEA2485A484814E0A2485A484814C015
01485A48481303150748C7121F00FE14FFB7FCA2232D7CAC2B>I<EAFFE0A3EAE000B3B3
B3A7EAFFE0A30B4379B114>I<0003130C48131C000E13384813704813E0003013C0EA70
0100601380A2EAE00300C01300A300DE137800FF13FCEB83FEA2EA7F81A2383F00FC001E
1378171577AD23>I<EAFFE0A31200B3B3B3A712FFA30B437FB114>I<12035A120E5A5A12
3012701260A212E05AA312DEB4FC1380A2127FA2EA3F00121E09157BAD14>96
D<13FF000713C0380F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07FF137F3801
FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E007E137F007FEBEF8C391F
83C7FC390FFF03F83901FC01E01F207D9E23>I<EA07C012FFA2120F1207AC14FE9038C7
FF809038CF03E09038DC01F09038F8007C49137E49133E497F1680A2150F16C0A9ED1F80
A216005D6D133E6D5B01B05B9038BC01F090380E07E0390607FF80260001FCC7FC222F7E
AD27>I<EB1FE0EB7FFC3801F01E3803E0073907C01F80EA0F80EA1F005A003EEB0F0000
7E90C7FCA2127C12FCA9127EA215C07E6C130101801380380FC0033907E007003801F03E
38007FF8EB1FC01A207E9E1F>I<15F8141FA214011400ACEB0FE0EB7FF83801F81E3803
E0073807C003380F8001EA1F00481300123E127EA25AA9127C127EA2003E13017EEB8003
000F13073903E00EFC3A01F03CFFC038007FF090391FC0F800222F7EAD27>I<EB1F80EB
FFF03803E0783807C03E380F801E381F001FEC0F80123E007E130715C0127C12FCA3B6FC
A200FCC8FCA5127EA2003E14C0123F6C1301390F80038001C013003803E00F3801F03C38
007FF8EB1FC01A207E9E1F>I<EB03F0EB0FFCEB3E1EEB7C3F13F8EA01F0A23803E00C14
00AAB512E0A23803E000B3A6487E387FFF80A2182F7FAE16>I<013F13F89038FFC3FE39
03E1FF1E3807807C000F140C391F003E00A2003E7FA76C133EA26C6C5A00071378380FE1
F0380CFFC0D81C3FC7FC90C8FCA3121E121F380FFFF814FF6C14C04814F0391E0007F848
130048147C12F848143CA46C147C007C14F86CEB01F06CEB03E03907E01F803901FFFE00
38003FF01F2D7E9D23>I<EA07C012FFA2120F1207AC14FE9038C3FF809038C703E09038
DE01F013F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2222E7EAD27>I<EA0780EA0F
C0EA1FE0A4EA0FC0EA0780C7FCA8EA07C012FFA2120F1207B3A5EA0FE0EAFFFCA20E2E7E
AD14>I<130FEB1F80EB3FC0A4EB1F80EB0F0090C7FCA8EB07C013FFA2130F1307B3AD12
30127838FC0F80A21400485AEA783EEA3FF8EA07E0123C83AD16>I<EA07C012FFA2120F
1207ADEC1FFEA2EC0FF0EC07C05D020EC7FC5C5C5C5CEBC3C013C7EBCFE0EBDFF013F9EB
F0F8497EEBC07E143E80816E7E14076E7E816E7E486C487E3AFFFE07FF80A2212E7EAD25
>I<EA07C012FFA2120F1207B3B3A3EA0FE0EAFFFEA20F2E7EAD14>I<2607C07FEB07F03B
FFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F803B07DC00F9C00F01F8D9FF8013C049
90387F000749137EA249137CB2486C01FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C>I<
3807C0FE39FFC3FF809038C703E0390FDE01F0EA07F8496C7EA25BA25BB2486C487E3AFF
FE1FFFC0A2221E7E9D27>I<EB1FE0EB7FF83801F03E3803C00F3907800780390F0003C0
4814E0003EEB01F0A248EB00F8A300FC14FCA9007C14F8A26CEB01F0A26CEB03E0A2390F
8007C03907C00F803901F03E0038007FF8EB1FE01E207E9E23>I<3807C0FE39FFC7FF80
9038CF03E0390FDC01F03907F800FC49137E49133E49133FED1F80A3ED0FC0A8151F1680
A2ED3F00A26D137E6D137C5D9038FC01F09038CE07E09038C7FF80D9C1FCC7FC01C0C8FC
A9487EEAFFFEA2222B7E9D27>I<90380FE01890387FF8383801F81C3903E00E783807C0
07390F8003F8001F1301EA3F00A2007E1300A212FE5AA8127EA36C13017EEB8003380FC0
073803E00E3801F03C38007FF0EB1FC090C7FCA94A7E91381FFFC0A2222B7E9D25>I<38
0781F838FF87FEEB8E3FEA0F9CEA07B813B0EBF01EEBE000A45BB0487EB5FCA2181E7E9D
1C>I<3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA7FF0
6CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C133CA2
6C137838FF01F038E3FFC000C0130017207E9E1C>I<1360A413E0A312011203A2120712
1FB512F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A7FA81B
>I<D807C013F800FF131FA2000F130100071300B21401A314033803E007EC0EFC3A01F8
1CFFC038007FF890391FE0F800221F7E9D27>I<3AFFFC01FFC0A23A0FE0007E00000714
7C15380003143015706C6C1360A26C6C5BA390387C0180A26D48C7FCA2EB3F07EB1F06A2
EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D5A221E7F9C25>I<3BFFFC3FFE07FFA23B0F
E003F001F801C09038E000F00007010114E0812603E00314C0A2913807F8012701F00678
1380A29039F80E7C030000D90C3C1300A290397C181E06A2151F6D486C5AA2168C90391F
600798A216D890390FC003F0A36D486C5AA36DC75A301E7F9C33>I<3AFFFC07FF80A23A
0FF003FC000003EB01F0000114C06D485A000091C7FCEB7C06EB3E0E6D5A14B8EB0FB0EB
07E013036D7E497E1307EB067C497EEB1C1F01387FEB700F496C7E6E7ED803C07F00076D
7E391FE003FC3AFFF007FFC0A2221D7F9C25>I<3AFFFC01FFC0A23A0FE0007E00000714
7C1538000314306D137000011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2EB1F
06A2148EEB0F8CA2EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC06A2
5B131CEA7838EA7070EA3FE0EA0F80222B7F9C25>I<003FB51280A2EB003F003C140000
38137E00305BEA700100605B495A495A130F00005B495A49C7FC5B137E9038FC0180EA01
F8120313F03807E003EA0FC0001F1400138048485A007E5B00FE133FB6FCA2191D7E9C1F
>I<B712C0A22202809223>I<BB12FCA24602809247>I<38078008380FE01C381FF83838
3FFFF038707FE038E01FC03840078016077AAC23>126 D<001C13E0387F03F8A200FF13
FCA2007F13F8A2381C00E016087AAD23>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fp cmss10 10 59
/Fp 59 123 df<12FEA7121E123CA312381278A21270A212F0071178B917>39
D<12FEA7121E123CA312381278A21270A212F00711788617>44 D<B512FCA516057F941C
>I<12FEA70707788617>I<EB03F8EB1FFF017F13C090B57E48803903FE0FF83907F803FC
48486C7EEBE0004848137F497F003F1580A290C7121F4815C0A3007E140FA300FE15E0B3
007FEC1FC0A56C6CEB3F80A36C6CEB7F00A26C6C13FEEBF0016C6C485A3903FE0FF86CB5
5A6C5C6D5B011F90C7FCEB03F8233A7DB72A>48 D<14C013011307131F13FFB5FCA4131F
1200B3B3A5007FB512F0A51C3879B72A>I<EB0FF8EB7FFF48B512C0488048804880391F
F01FFC9038C007FE393F0001FF003E7F007E1580007C147F00FC143F5A007815C0123800
30141F1210C8FCA2153FA21680A2157F160015FEA24A5A4A5A4A5A4A5A4A5A4A5A4AC7FC
14FE495A495A495AEB0FC0495A49C8FC137E5B485A485A485A485A485A48C9FC48B612C0
A622387DB72A>I<EB07F8EB3FFF90B512C048804880000F809038FC0FFC391FE003FE38
3FC0016CC7FC000E80A2000480C8FCA25DA25D14015D14034A5A4A5AEC7FE090381FFFC0
5D4AC7FC6E7E15E09038000FF8EC03FCEC00FE157F1680153F16C0A2ED1FE0A70040143F
006015C0127000F8EC7F807EB4ECFF00387FC003393FF80FFE6CB55A6C5C00035C6C14C0
6C6C90C7FCEB07FC233A7DB72A>I<EC07F8140FA2141B143BA2147B147314F31301A2EB
03E3A2EB07C3130FA2EB1F83A2EB3F03137F137E13FE13FCEA01F8120313F0120713E012
0FEA1FC01380123F13005A12FEB712F8A5C73803F800AE25367EB52A>I<001FB512FEA6
01C0C8FCADEBC1FCEBCFFF01DF13C090B57E819038FE07F89038F803FC496C7E496C7E5B
497FC81380A2153F16C0A9ED7F8012101238EDFF00007C5BB4495A6C6C485A393FF01FF8
6CB55A6C5C6C5C6C5CC649C7FCEB1FF022387DB52A>I<EC3FE0903801FFF8010713FE5B
133F5B9038FFE01E48EB00064990C7FCEA03F8485AA2485A485AA25B123FA2387F007F90
3803FFC0010F13F0497FD87E7F7F39FEFE07FE38FFF8019038E000FF497FED3F805BED1F
C090C7FCA2ED0FE05AA5127E127FA46CEC1FC07FA2001FEC3F807F6C6CEB7F005D3907F8
01FE9038FE07FC6CB55A6C5C6C5C013F5B6D90C7FCEB03FC233A7DB72A>I<B712E0A6C8
1207ED0FC0ED1F80ED3F00157E15FE5D4A5A14034A5AA24A5A4A5AA24A5AA24AC7FCA214
FEA213015C13035C1307A25C130FA35C131FA35C133FA55C137FA823377DB52A>I<EB03
F8EB1FFF017F13C090B57E000314F8A23907FC07FC390FF001FEEBE0004848137F497F00
3F158090C7121FA66C6CEB3F00A26C6C137EA26C6C5B3903F803F8C6B512E06D5BD90FFE
C7FC497E90B512E048EB1FF03907F803FC390FE000FE4848137F4848EB3F8090C7121F48
15C0A200FEEC0FE0A8007FEC1FC0A26D133F003F15806D137F3A1FF001FF00390FFC07FE
6CB55A6C5C6C5C6C5C013F1380D907FCC7FC233A7DB72A>I<EB03FCEB1FFF017F13C090
B57E488048803907FC07FC380FF00148486C7E49137E4848137F8148C71380A2151F00FE
15C0A3150FA216E0A5151F127FA2153F6C7E157F6C7E6D13FF380FF0039038FC0FEF6CB5
EACFC06C141F6C13FE38007FF8EB1FC090C71380153FA2ED7F00A215FEA24A5A4A5A0006
13070007EB1FF0390FC07FE090B55A485C6C91C7FC6C13FC00015B38003FC0233A7DB72A
>I<EC07F8A24A7EA24A7EA2157EEC3F7F143EA291387E3F80A2147C02FC7F151FA2D901
F87F150F01038014F0A201076D7E14E0A2010F6D7E14C0A2011F6D7E1480013F808191C7
FC4981167F137E01FE6E7E90B7FCA24882A3D803F8C7EA0FF05B00078216075B000F8216
035B001F8216015B003F6F7EA248C91380177F127E00FE17C0323A7EB937>65
D<B67E15F815FE6F7E82D9000113F09138003FF8150F6F7E6F7E150115008282A45E5E15
014B5A15074B5AED3FF0EDFFC090B65A4BC7FC15F815FF16C0D9000313F09138003FF8ED
07FC6F7EED00FFEE7F80EE3FC0A2161F17E0160FA4161F17C0163FA2EE7F80ED01FF4B13
00ED0FFEED7FFC90B65A16E016804BC7FC15E02B3A79B937>I<913803FF80023F13F891
B6FC010315C05B131F4948C61380D97FF0130FD9FFC013034849130191C9FC485A485A48
5A5B121F5B123F5BA2485AA448CAFCAC6C7EA46C7EA27F121F7F120F7F6C7E6C7E6C6C15
206E14E06C6D1301D97FF0130FD93FFE137F6DB6FC010715C06D150001005C023F13F002
0313802B3C7BBA35>I<B612C015F815FE6F7E16E090C77FED3FF8ED0FFCED03FE6F7E81
EE7F8017C0163FEE1FE0A2EE0FF0A2160717F8A31603A217FCAB17F8A21607A217F0160F
A2EE1FE0A2EE3FC0A2EE7F8016FF4B13004B5AED0FFCED3FF8EDFFF090B65A168093C7FC
15F815C02E3A78B93C>I<B712F0A690C9FCB390B612C0A590C9FCB3A390B612FCA7263A
78B932>I<B712F0A690C9FCB3A290B6FCA590C9FCB3A9243A79B92F>I<913803FF80023F
13F891B512FE0103ECFFC04915E0131F4948C6FCD97FF0EB1FC0D9FFC013074849130148
90C81240491500485A485A5B121F5B123F5BA2485AA448CAFCA992383FFFF0A36C7EA2ED
0007A26C7EA27F121F7F120F7F6C7E6C7E7F6C7F6C7FEB7FF0D93FFE137F6DB6FC13076D
15C001001500023F13F8020313802C3C7BBA37>I<B4ED3FC0B3A790B7FCA590C8123FB3
AA2A3A78B93B>I<12FFB3B3B3A4083A79B917>I<EC0FF0B3B3AD141F15E00060133F1270
007CEBFFC0D8FFE7138090B5FC1500003F13FC000F5BC613C01C3C7DB927>I<B4FCB3B3
B090B612C0A6223A79B92D>76 D<D8FFC0ED07FFA36D5DA26D5D00FE177FA26D153F0178
153EA2017C157EA26D15FCA3013F14016D15F8A26E1303010F15F06E1307A2010715E06E
130FA2010315C06E131FA2010115806E133FA2010015006E5B027C137E027E13FEA2023E
5BEC3F01A2021F5B1583A2020F5B15C702075BA3913803EFC0A215FF6E5BA26E90C7FCA3
92C8FCA2383A78B949>I<D8FFE0EC1FC0A27FA27FA2487EA2137EA2137F7F80131FA26D
7EA280130780130380130180130080A2147FA2EC3F80A2EC1FC0A2140F15E0140715F014
0315F8140115FC1400A2157EA2157F153F169F151FA2ED0FDFA2ED07FFA281A281A22A3A
78B93B>I<EC07F891387FFF8049B512E04980010F14FC90391FFC0FFE90393FE001FF90
3A7F80007F8049C76C7E48486E7E48486E7E49140700078248486E7E491401001F824914
00A2003F824981007F1780A390C9123FA24817C0AC6C6CED7F80A56C6CEDFF00A26D5C00
1F5EA26C6C4A5AA26C6C4A5A6C6C4A5A6D141F00015E6C6C4A5AD97FC0EBFF806D6C4890
C7FC90391FFC0FFE6DB55A6D5C010114E06D6C1380DA07F8C8FC323E7BBB3D>I<B612C0
15F815FF8216E090C77FED1FF8ED07FC15036F7E150082821780A2163FA4167FA217005E
5E15014B5A1507ED1FF8EDFFF090B65A168093C7FC15F815C090CAFCB3A6293A79B935>
I<EC07F891387FFF8049B512E04980010F14FC90391FFC0FFE90393FE001FF49486C7F49
C7EA3FC048486E7E48486E7EA248486E7E48486E7EA248486E7EA2491400003F82A24848
ED7F80A490C9123F4817C0AC6C17806D157FA46C6CEDFF00A2EC07F86C6C6C6C485AEC01
FED80FF04A5AEC00FF6C6C90387F87F86C6CECCFF0153F6C6C6DB45A6C6C5D90267FC00F
5B6D6C6C90C7FC90391FFC0FFE6DB5FC6D8013016D6C80913907F87FC091C7FC707E707E
83160F707E83707E32467BBB3D>I<B67E15F815FE6F7E8290C77FED1FF06F7EED03FC15
0182150082A282A35EA25E15015E1503ED0FF84B5AEDFFE090B65A5E4BC7FC15F815E090
38000FF01407811403811401816E7E8182153F826F7EA26F7EA26F7E1503826F7EA26F7E
A2EE7F80EE3FC0A2EE1FE02B3A78B936>I<EB03FF011F13F0017F13FE48B612804815C0
5A4848C6FCD81FF0EB1F804848130701801303007F140090C9FCA212FEA67E7E7F7FEA3F
F013FC381FFFC06C13FC6CEBFF806C14E06C14F86C80013F7F01077FD9007F1380020713
C0020013E0157FED1FF0150FA2ED07F8A21503A6ED07F0124012600078EC0FE0007C141F
B4EC3FC001C0EBFF80EBFC036CB61200001F5C6C14F800015C6C6C13C0D907FEC7FC253E
7CBB2E>I<B912C0A6C7D807F8C8FCB3B3B0323A7DB939>I<B4ED1FC0B3B3A76CED3F807F
A36C6CEC7F00A26C6C14FE6C6C13016D495A6C6C495A6C6CEB1FF03A01FFC07FE06C90B5
5A013F5C6D49C7FC010713F89038007FC02A3C79B939>I<B46CED07F0170F6C6CED1FE0
6C6C16C0173F6C6CED7F806D1600000F5E6C6C4A5A6D5D000315036C6C4A5A806C4B5A6D
6C495A80013F4A5A6D6C5C167F6D6C49C7FC6D6C5B15016D6C485A01015CECFF076DEB87
F091387F8FE015CF91383FDFC06EB45AA26E90C8FC5D14076E5AB3A6343A7FB937>89
D<EB1FF0EBFFFC000313FF000F14804814C09038E01FE09038000FF0001C13070018EB03
F81210C7FCEC01FCA7143FEB0FFF90B5FC1203120F381FFE01EA3FE0EA7F80130012FEA4
14037E387F800FEBE03F6CB5FC7E6C13F96C13E1D801FEC7FC1E287DA628>97
D<12FEB3A2EB01FCEB0FFF013F13C090B57EB67E9038F03FF8EBC007496C7EEB0001486D
7EA2157FA3ED3F80AAED7F00A35D5D14016C5CEB80039038C00FF89038F03FF090B55A48
5C6D5BD91FFEC7FC380007F8213B7AB92B>I<EB03FE90381FFFC0017F13E090B512F848
14FC3803FC033907F8007CD80FE01338484813081500485AA248C8FCA3127E12FEA9127F
A36C7EA26D1302001F14066C6C131E6C6C137E9038FC03FE6CB5FCC614FC6D13F0011F13
C0903807FC001F287DA625>I<ED3F80B3A2EB0FE0EB3FFC90B5FC4814BF4814FF3807FE
07380FF801381FE00049137F003F143F5B127F90C7FCA312FEAA127FA36C7E157F6C7E6D
13FF380FF0033807FE076CB512BF6C143F6C13FEEB7FF8D90FE0C7FC213B7DB92B>I<EB
07F8EB1FFE90387FFF8048B512C04814E03907FC0FF0390FF003F8EBE001391FC000FC49
137C003F147E90C7123E5A127E151F12FEB7FCA500FCC8FCA27EA2127EA2127F7E7F6C7E
6D13026C6C130E6C6C133E3903FE01FE6CB5FC6C14FC6D13F0011F13C0903803FE002028
7EA625>I<14FF010713C05B5B5BEB7F819038FE0040491300485AA21203ACB512FCA5D8
03F8C7FCB3AE1A3B7FBA19>I<903907E001F890383FFC1F90397FFE7FFC90B6FC5A3A03
F81FF8003907F00FE0EBE00748486C7EA248486C7EA86C6C485AA26C6C485AEBF00F6C6C
485A48B55A92C7FC485BEB3FFCEB07E090C9FCA37F7F6CB512C015FC15FF4815804815C0
3A3F80007FE048C7EA0FF0007E140700FEEC03F8481401A46C1403007E15F0D87F80130F
6C6CEB1FE03A1FFC01FFC06CB612806C1500000114FC6C6C13F0010790C7FC26387EA52A
>I<12FEB3A2EB01FC90380FFF804913C0017F13E090B512F039FFF81FF8EBE007EBC003
018013FC14011300A35AB3A71E3A7AB92B>I<12FFA81200AC127FB3B308397BB814>I<12
FEB3A3EC03FE4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A5C495A495A495A495A495A49
7EB57EA280EBF7F813E3EBC1FCEB80FE497E487F6E7E81141F6E7E8114076E7E6E7E8114
00157F1680213A7AB929>107 D<12FEB3B3B3A4073A7AB914>I<D901FCEB03F83BFE0FFF
801FFF496D481380017F6DB512C090B500F114E03CFFF81FFBF03FF0D9E007EBC00F903A
C003FF80070180020013F86E140301005BA3485CB3A735267AA542>I<EB01FC39FE0FFF
804913C0017F13E090B512F039FFF81FF8EBE007EBC003018013FC14011300A35AB3A71E
267AA52B>I<EB03FE90380FFF80013F13E090B512F848803903FE03FE3907F800FF4848
EB7F8049133F4848EB1FC04848EB0FE0A290C712074815F0A2007E140300FE15F8A9007F
EC07F0A36C6CEB0FE0A26C6CEB1FC06D133F6C6CEB7F806C6CEBFF003903FE03FE6CB55A
6C5C6D5B011F13C0D903FEC7FC25287EA62A>I<EB01FC38FE0FFF013F13C090B57EB67E
9038F03FF8EBC00F90388003FC1300486D7E14008181A21680153FA9ED7F00A35D5D1401
6C495AEB80076D485A9038F03FF090B55A485C6D5BD91FFEC7FCEB07F890C9FCAF21367A
A52B>I<14F0EAFC07130F133F137F13FF00FD130013FCEAFFF05B5BA25B90C7FCA35AB3
A414267AA51C>114 D<EB7FE03801FFFC0007EBFF804814C05A383FC03F903800078014
01007E90C7FCA4127FA26C7E13F0EBFF806C13F06C13FC6C7F6C7FC61480131F010013C0
143FEC0FE0A21407A3124012600078EB0FC000FE131F39FFC07F8090B5FC6C1400001F5B
000313F838007FC01B287EA620>I<EA01FCAAB6FCA5D801FCC7FCB3A76D138014013900
FF07C014FFA26D1300EB3FFCEB1FE01A307FAE1E>I<00FEEB01FCB3AA1403A214076C13
1F387F807F90B5FC6C13F914F1000F13C1D803FCC7FC1E267AA42B>I<B4EC0FE06CEC1F
C0A27F003FEC3F80A27F001FEC7F00A26C6C137E15FEA26C6C485AA36C6C485AA3D801FC
5B140700005C13FE140F017E5B137F141F013F5BA2149FD91FBFC7FCA3EB0FBE14FE6D5A
A323257FA426>I<00FED901FEEB01FC007F17F802031403A2018013DF003FEE07F01407
ED9F80D81FC016E0020F140F158FD80FE002C013C0030F131F141FED07E0D807F0168002
1E143F143E0003DA03F0130013F8023C5C0001017C147EED01F813FC027814FE0000D9F8
005BA24A13FC017C5D167D137E5C013EEC3DF0013F143F5C011F5D161F36257FA439>I<
D87F80EB0FE0003FEC1FC06C6C133F6DEB7F806C6C1400000714FE6C6C485A3801FC0301
FE5B6C6C485A6D485A90383F9FC0EB1FDF6DB45A92C7FC6D5A6D5A1301A2497E1307497E
ECDF8090381F9FC090383F0FE0496C7EEBFE0301FC7F00016D7E48486C7E4848137F120F
49EB3F804848EB1FC0484814E0007FEC0FF048C7EA07F8252580A426>I<B4EC0FE06CEC
1FC0A26C7EED3F807F001FEC7F00A26C7E15FE7F00075C1401EA03F85DEBFC0312015D38
00FE075D137E140F017F5B133FA290381F9F80A292C7FC130FA2EB079E14DEA2EB03FCA2
6D5AA35C13035CA213075C130FA2495A1220D8383FC8FCEA3FFEA25B5BEA0FE023367FA4
26>I<007FB512FCA415F8C7EA07F0140FEC1FE015C0EC3F80147FECFF005C1301495A49
5A5C130F495A495A5C137F49C7FC485A5B1203485A5B485A121F485A5B48B512FEB6FCA4
1F257EA424>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fq cmss17 17.28 22
/Fq 22 122 df<ED7FC0EDFF804A13004A5A4A5A140F4A5A5D4A5A147F4A5A5D5B4990C7
FCA2495A495AA2495AA2495AA2137F5CA2495AA25A5CA25A91C8FCA25A5BA2120FA25BA2
121FA35B123FA55B127FA85B12FFB3A7127F7FA8123F7FA5121F7FA3120FA27FA21207A2
7F7EA2807EA2807EA26D7EA280133FA26D7EA26D7EA26D7E6D7EA26D7F7F816E7E143F6E
7E816E7E14076E7E6E7E6E1380ED7FC0228F76EA34>40 D<B47E6C7E6C7E6C7E6C7E7F6C
7E12036C7E806C7F137F806D7EA26D7E6D7EA26D7EA26D7EA2817FA26D7FA281147FA281
143FA281141FA281A2140FA281A3140781A5801680A88016C0B3A716805CA816005CA55D
140FA35DA2141FA25DA2143F5DA2147F5DA214FF5DA2495BA25B92C7FCA2495AA2495AA2
495A495AA2495A5C13FF485B91C8FC485A1207485A5B485A485A485A485A228F79EA34>
I<B712F0A924097FA32D>45 D<EE3FFEA24C7EA393B57EA34B80A34B487FA2177F030780
16FCA2030F6D7EA216F8031F80171FDB3FF07FA2170F037F8016E08303FF8116C0A24A6E
7F1680A24A6E7F1600A24A6E7F5DA2020F6F7E5DA2021F6F7E5DA2023F6F7E5DA2027F6F
7EA24A488284A2494982845D49848492C8FC4984845C49B97EA34984A34984A202F0C912
1F017F84855C01FF8585484984A285484984A2854890CA80A2854848851A7FA24848851A
3FA24848851A1FA2484885865B00FF1B808651647CE35A>65 D<B712FEEEFFF017FE717E
18F08418FE8401F0C7001F80040114E0DC003F7F050F7F170305007F727E183F727E8472
1380A2841AC084A6601A80A2601A00604E5A183F4E5A4E5A4D5B05075B051F5B057F5B04
07B5C7FC90B812FC6018E095C8FC17F8EFFF8018F018FC18FF9026F0000181DB000114E0
DC001F7F050713FC05017F716C7E84060F13807213C07213E0847213F0A2F17FF8A2193F
1AFCA2191FA5193FA21AF8197FA219FF1AF0604E13E0604E13C04E1380187F4DB5120005
075B051F5B0403B55A90B912E06196C7FC6018F818C04DC8FC17E0466474E35A>I<D8FF
F0EF3FFCB3B3A790BAFCA901F0CA123FB3B3AC466474E35F>72 D<EAFFF0B3B3B3B3B3AA
0C6474E325>I<EE3FFCB3B3B3B3AB167F17F81220003015FF1278007C4A13F0007E5CD8
7F80010F13E001E0133FD9FE01B512C0B8FC178017006C5D001F5D000315F0C615C0011F
91C7FC010013F02E667AE340>I<B8FC17F017FE717E18E018F8848401F0C700076D7EDC
007F7F051F7F05077F8305007F727E183F727EA2727E841A80A284A21AC0A284A660A21A
80A260A21A00604E5AA24E5A187F4E5A5F05075B051F5B057F5B0407B55A90B9C7FC6018
F86018C095C8FC17FC17C001F0CCFCB3B3A6426474E356>80 D<BD1280A9C9D81FFECAFC
B3B3B3B3B351647BE35C>84 D<4AB4FC021F13E0027F13FC49B57E01076E7E4981498149
81498190B51201489039F8007FFC4849EB1FFE02C0130F48496D7E91C77E5A496E138048
5A82484816C0177F5B127FA24916E090B8FCB9FCA701C0CAFCA37FA3127FA27FA2123F7F
A26C7E7F120F6D16406C6DEC01C06E14036C6D140F6C01F8143F6C01FE903801FFE09039
7FFF801F6D90B6FC7F6D16C06D16006D5D010015F8023F14C0020F49C7FC020013E03341
7CBF3C>101 D<ED1FFE92B512C01403140F5C5C5C91B6FC5BEDF007499038C000404990
C8FC5C130F5C131F5CA3133FB3A2B712E0A926003FF8C8FCB3B3B12A657DE429>I<EAFF
F0ACC7FCB3A3EA7FF0B3B3B3A80C5F77DE20>105 D<DB7FE04AB47E28FFE003FFFE020F
13F8021F6D6C017F13FE027F6E48B6FC91B66C48158001E16F4815C001E7DBF81F15E001
EF6F4815F090B76C4815F8DAF803EDE00F9126E0007F9038FF800102806D6C48C713FC91
C76C49147F496E49143F70161F494C15FE495E70160FA2495EA3495EB3B3A5573F76BE6C
>109 D<ED7FE03AFFE007FFFC021F13FF027F14C091B612E001E315F013E701EF15F890
B712FCECF807ECC0004AEB7FFE91C7121F5B49EC0FFFA25B82A25BA35BB3B3A5303F76BE
45>I<EDFFC0020F13FC023F13FF91B612C0010315F0498149814981498149D9807F7F90
27FFFC000F7F4801F001037F48496D7F4A7F48496E7E4890C86C7E49151F48486F7EA249
1507003F83A24981007F1880A3498100FF18C0AB6D5D007F1880A46C6C4B1300A26D5D00
1F5F6D151F000F5F6D153F6C6D4A5A6E14FF6C6D495B6C6D495B02FC130F6C9026FF807F
5B6D90B65A6D93C7FC6D5D010715F86D5D010015C0023F91C8FC020F13FC020013C03A41
7CBF43>I<ED3FF03AFFE003FFFE021F7F027F14C001E1B67E01E78101EF8190B77E83DA
F8077FECC00191C76C138049141F01F86E13C082496E13E05B7013F082A2EF7FF8A3173F
A218FCA2171FAA173F18F8A3177FA2EFFFF0A25E18E06D5C4C13C06D5C6D4A13805E01FF
91B51200DA80035BECF01F91B65A5F01EF5D01E75D01E3158001E092C7FC023F13FC020F
13F00200138092C9FCB3A9365B76BE45>I<ED1F80D8FFC013FF14075C143F5C01C1B5FC
13C313C713CFEDF00001DF1380D9FFFCC7FC5C14E05C5C91C8FC5BA25BA25BA25BA35BB3
B2213F76BE2E>114 D<ECFFF8010FEBFF80017F14F090B612FC000315FF4816805A5A17
0048EB000F01F813014848EB003F49140F1603484891C7FCA67FA26C7E13FC13FF6C13E0
14FF6C14F06C14FE6C6E7E6C15E06C816C15FC013F80010F801303D9003F1480020114C0
EC001F030713E0150181EE7FF0A2163FA512200070157F007C16E0007E15FFD87FC05B01
F04913C001FF131FB812801700A26C5D001F15F800075DC615C0011F91C7FC010013F02C
417CBF34>I<EB1FFCB1B8FCA926001FFCC8FCB3B3A380178016016D6CEB07C0161FEDC0
FF92B5FC6D15E0A27F17806DECFE006D14F06E1380DA1FF8C7FC2B507ECE31>I<D8FFE0
EC07FFB3B3A95EA25E5EA26D5C4BB5FC6D13076CB4133F91B7FCA26C15E716C76C15076C
14FC6C14F06C148026007FF0C8FC303F76BD45>I<D8FFF0923803FF805F007F18007F00
3F4C5A7FA2001F4C5A7F000F163F6D5EA26C167F6E5D7E6E4A5AA27E6E495B7EA26E495B
137F80013F4A90C7FCA26E5C011F140FA26D6C5C161FA26D6C5C163F6D5D1580167F6D5D
15C07F4C5A81147F5FEC3FE103F190C8FCA2141F5EEC0FF315FB5E1407A26EB45AA25E80
A26E5BA35EA25E5CA293C9FC5CA25D1407A24A5AA25D141FA24A5A147F00305C383F01FF
90B55A5DA292CAFC6C5B5C5C14E000031380395B7EBD3E>121 D
E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 450 382 a Fq(A)45 b(Brief)f(Histo)l(ry)h(of)h(Just-In-Time)e
(\(Prep)l(rint\))450 611 y Fp(John)27 b(Ayco)r(ck)450
727 y(Depa)n(rtment)g(of)h(Computer)f(Science)450 843
y(Universit)n(y)h(of)f(Calga)n(ry)p 450 967 2989 2 v
450 1137 a Fo(Soft)n(w)n(are)j(systems)f(ha)n(v)n(e)i(b)r(een)g(using)f
(\\just-in-time")e(compilation)i(\(JIT\))h(tec)n(hniques)g(since)g(the)
f(1960s.)450 1220 y(Broadly)-6 b(,)31 b(JIT)f(compilation)f(includes)h
(an)n(y)g(translation)g(p)r(erformed)f(dynamically)-6
b(,)30 b(after)f(a)h(program)e(has)450 1303 y(started)g(execution.)44
b(W)-6 b(e)28 b(examine)f(the)h(motiv)l(ation)g(b)r(ehind)g(JIT)f
(compilation,)h(constrain)n(ts)g(imp)r(osed)e(on)450
1386 y(JIT)d(compilation)f(systems,)f(and)i(presen)n(t)g(a)g
(classi\014cation)g(sc)n(heme)f(for)f(suc)n(h)i(systems.)30
b(This)22 b(classi\014cation)450 1469 y(emerges)h(as)h(w)n(e)g(surv)n
(ey)g(fort)n(y)f(y)n(ears)h(of)f(JIT)h(w)n(ork,)g(from)d(1960{2000.)450
1648 y(Categories)g(and)h(Sub)t(ject)f(Descriptors:)30
b(D.3.4)20 b([)p Fn(Programming)f(Languages)p Fo(]:)28
b(Pro)r(cessors;)21 b(K.2)f([)p Fn(Com-)450 1731 y(puting)27
b(Milieux)p Fo(]:)i(History)24 b(of)f(Computing|)p Fm(Softwar)l(e)450
1848 y Fo(General)h(T)-6 b(erms:)30 b(Languages,)25 b(P)n(erformance)
450 1964 y(Additional)f(Key)g(W)-6 b(ords)24 b(and)g(Phrases:)31
b(Just-in-time)22 b(compilation,)h(dynamic)g(compilation)p
450 2063 V 450 2354 a Fp(1.)41 b(INTRODUCTION)649 2487
y Fl(Those)27 b(who)g(cannot)h(remem)n(b)r(er)e(the)i(past)g(are)e
(condemned)i(to)f(rep)r(eat)h(it.)649 2586 y Fk(Ge)l(or)l(ge)j
(Santayana,)g(1863{1952)42 b Fl([Bartlett)28 b(1992])533
2727 y(This)20 b(oft-quoted)h(line)f(is)h(all)f(to)r(o)g(applicable)g
(in)h(computer)f(science.)34 b(Ideas)20 b(are)f(generated,)450
2827 y(explored,)25 b(set)h(aside)f(|)h(only)f(to)h(b)r(e)g(rein)n(v)n
(en)n(ted)f(y)n(ears)f(later.)35 b(Suc)n(h)26 b(is)g(the)g(case)f(with)
h(what)450 2926 y(is)37 b(no)n(w)f(called)h(\\just-in-time")f(or)h
(dynamic)f(compilation,)j(whic)n(h)e(refers)f(to)h(translation)450
3026 y(that)28 b(o)r(ccurs)f(after)g(a)g(program)f(b)r(egins)h
(execution.)533 3125 y(Strictly)33 b(sp)r(eaking,)g(JIT)g(compilation)f
(systems)g(\(\\JIT)g(systems")g(for)g(short\))h(are)f(com-)450
3225 y(pletely)21 b(unnecessary)-7 b(.)33 b(They)20 b(are)g(only)g(a)g
(means)g(to)g(impro)n(v)n(e)f(the)i(time)g(and)f(space)g(e\016ciency)
450 3325 y(of)33 b(programs.)52 b(After)33 b(all,)i(the)e(cen)n(tral)g
(problem)f(JIT)h(systems)g(address)f(is)h(a)g(solv)n(ed)f(one:)450
3424 y(translating)24 b(programming)f(languages)h(in)n(to)h(a)f(form)h
(that)h(is)f(executable)g(on)g(a)g(target)f(plat-)450
3524 y(form.)533 3624 y(What)19 b(is)g(translated?)34
b(The)19 b(scop)r(e)f(and)h(nature)g(of)g(programming)e(languages)g
(that)i(require)450 3723 y(translation)k(in)n(to)i(executable)f(form)g
(co)n(v)n(ers)e(a)i(wide)h(sp)r(ectrum.)36 b(T)-7 b(raditional)23
b(programming)450 3823 y(languages)30 b(lik)n(e)h(Ada,)h(C,)g(and)f(Ja)
n(v)-5 b(a)31 b(are)f(included,)j(as)e(w)n(ell)g(as)g(little)i
(languages)c([Ben)n(tley)450 3922 y(1988])d(suc)n(h)h(as)g(regular)f
(expressions.)533 4022 y(T)-7 b(raditionally)g(,)38 b(there)e(are)g(t)n
(w)n(o)g(approac)n(hes)e(to)i(translation:)54 b(compilation)36
b(and)h(in)n(ter-)450 4122 y(pretation.)73 b(Compilation)39
b(translates)g(one)h(language)e(in)n(to)h(another)g(|)h(C)g(to)g(assem)
n(bly)p 450 4213 V 450 4293 a Fo(This)22 b(w)n(ork)h(w)n(as)g(supp)r
(orted)g(in)g(part)g(b)n(y)g(a)g(gran)n(t)g(from)e(the)i(National)g
(Science)h(and)g(Engineering)f(Researc)n(h)450 4376 y(Council)h(of)f
(Canada.)450 4459 y(Name:)30 b(John)25 b(Ayco)r(c)n(k)450
4542 y(A\016liation:)31 b(Departmen)n(t)24 b(of)f(Computer)g(Science,)i
(Univ)n(ersit)n(y)e(of)h(Calgary)450 4625 y(Address:)31
b(2500)24 b(Univ)n(ersit)n(y)g(Driv)n(e)f(N.W.,)g(Calgary)-6
b(,)23 b(Alb)r(erta,)h(Canada)g(T2N)g(1N4)450 4708 y(Address:)31
b(EMAIL:)23 b(a)n(yco)r(c)n(k@cpsc.ucalgary)-6 b(.ca)450
4874 y(This)18 b(is)g(the)i(author's)f(preprin)n(t;)h(the)f(o\016cial)g
(v)n(ersion)g(app)r(eared)h(in)e Fm(A)n(CM)j(Computing)h(Surveys)e(35)p
Fo(,)g(2)f(\(June)450 4957 y(2003\),)25 b(pp.)31 b(97{113.)1073
4955 y(c)1054 4957 y Fj(\015)o Fo(2003)25 b(A)n(CM.)p
eop
%%Page: 2 2
2 1 bop 450 250 a Fi(2)142 b Fh(\001)157 b Fi(J.)27 b(Ayco)r(ck)450
465 y Fl(language,)40 b(for)e(example)h(|)g(with)g(the)g(implication)g
(that)g(the)g(translated)f(form)g(will)h(b)r(e)450 565
y(more)34 b(amenable)h(to)g(later)g(execution,)i(p)r(ossibly)e(after)g
(further)g(compilation)f(stages.)59 b(In-)450 665 y(terpretation)30
b(eliminates)h(these)g(in)n(termediate)g(steps,)h(p)r(erforming)e(the)h
(same)g(analyses)f(as)450 764 y(compilation,)d(but)h(p)r(erforming)f
(execution)g(immediately)-7 b(.)533 864 y(JIT)37 b(compilation)h(is)f
(used)h(to)f(gain)g(the)i(b)r(ene\014ts)f(of)g(b)r(oth)g(\(static\))g
(compilation)f(and)450 964 y(in)n(terpretation.)67 b(These)38
b(b)r(ene\014ts)h(will)f(b)r(e)g(brough)n(t)f(out)h(in)h(later)e
(sections,)j(so)e(w)n(e)f(only)450 1064 y(summarize)27
b(them)h(here:)450 1222 y(|Compiled)k(programs)d(run)j(faster,)g(esp)r
(ecially)f(if)h(they)g(are)f(compiled)g(in)n(to)h(a)f(form)h(that)533
1321 y(is)h(directly)f(executable)h(on)f(the)h(underlying)g(hardw)n
(are.)50 b(Static)33 b(compilation)g(can)f(also)533 1421
y(dev)n(ote)27 b(an)h(arbitrary)d(amoun)n(t)j(of)f(time)h(to)g(program)
e(analysis)g(and)i(optimization.)37 b(This)533 1520 y(brings)28
b(us)h(to)f(the)h(primary)f(constrain)n(t)f(on)i(JIT)f(systems:)39
b(sp)r(eed.)h(A)29 b(JIT)f(system)h(m)n(ust)533 1620
y(not)d(cause)g(un)n(to)n(w)n(ard)e(pauses)i(in)g(normal)f(program)g
(execution)g(as)h(a)g(result)g(of)g(its)g(op)r(era-)533
1720 y(tion.)450 1842 y(|In)n(terpreted)37 b(programs)f(are)h(t)n
(ypically)g(smaller,)j(if)e(only)g(b)r(ecause)f(the)i(represen)n
(tation)533 1941 y(c)n(hosen)22 b(is)h(at)g(a)f(higher)g(lev)n(el)h
(than)g(mac)n(hine)f(co)r(de,)i(and)f(can)f(carry)g(m)n(uc)n(h)g(more)g
(seman)n(tic)533 2041 y(information)27 b(implicitly)-7
b(.)450 2163 y(|In)n(terpreted)18 b(programs)e(tend)j(to)f(b)r(e)h
(more)e(p)r(ortable.)34 b(Assuming)18 b(a)g(mac)n(hine-indep)r(enden)n
(t)533 2262 y(represen)n(tation,)28 b(suc)n(h)i(as)e(high-lev)n(el)h
(source)f(co)r(de)i(or)e(virtual)h(mac)n(hine)g(co)r(de,)h(only)f(the)
533 2362 y(in)n(terpreter)36 b(need)i(b)r(e)f(supplied)h(to)f(run)g
(the)h(program)d(on)j(a)e(di\013eren)n(t)i(mac)n(hine.)66
b(\(Of)533 2461 y(course,)27 b(the)h(program)d(still)j(ma)n(y)f(b)r(e)i
(doing)e(nonp)r(ortable)g(op)r(erations,)f(but)i(that's)g(a)g(dif-)533
2561 y(feren)n(t)f(matter.\))450 2683 y(|In)n(terpreters)e(ha)n(v)n(e)f
(access)h(to)h(run-time)g(information,)f(suc)n(h)h(as)f(input)i
(parameters,)e(con-)533 2782 y(trol)31 b(\015o)n(w,)h(and)f(target)g
(mac)n(hine)g(sp)r(eci\014cs.)49 b(This)32 b(information)f(ma)n(y)f(c)n
(hange)h(from)g(run)533 2882 y(to)c(run)g(or)f(b)r(e)i(unobtainable)e
(prior)g(to)h(run-time.)37 b(Additionally)-7 b(,)28 b(gathering)d(some)
i(t)n(yp)r(es)533 2982 y(of)f(information)g(ab)r(out)h(a)f(program)e(b)
r(efore)i(it)h(runs)f(ma)n(y)g(in)n(v)n(olv)n(e)e(algorithms)i(whic)n
(h)g(are)533 3081 y(undecidable)i(using)f(static)g(analysis.)533
3237 y(T)-7 b(o)38 b(narro)n(w)d(our)i(fo)r(cus)h(somewhat,)i(w)n(e)e
(only)f(examine)h(soft)n(w)n(are-based)d(JIT)i(systems)450
3336 y(that)d(ha)n(v)n(e)f(a)g(non)n(trivial)g(translation)f(asp)r
(ect.)56 b(Kepp)r(el,)35 b(Eggers,)e(and)h(Henry)f(elo)r(quen)n(tly)450
3436 y(build)i(an)f(argumen)n(t)f(for)h(the)g(more)f(general)g(case)h
(of)g(run-time)g(co)r(de)g(generation,)g(where)450 3536
y(this)28 b(latter)f(restriction)g(is)g(remo)n(v)n(ed)f([Kepp)r(el)i
(et)g(al.)f(1991].)533 3635 y(Note)34 b(that)g(w)n(e)f(use)g(the)h
(term)g(\\execution")e(in)i(a)f(broad)g(sense)g(|)g(w)n(e)h(call)f(a)g
(program)450 3735 y(represen)n(tation)28 b(executable)h(if)h(it)g(can)g
(b)r(e)g(executed)f(b)n(y)h(the)g(JIT)f(system)h(in)f(an)n(y)g(manner,)
450 3835 y(either)e(directly)h(as)f(in)h(mac)n(hine)f(co)r(de,)g(or)g
(indirectly)g(using)h(an)f(in)n(terpreter.)450 4029 y
Fp(2.)41 b(JIT)28 b(COMPILA)-7 b(TION)27 b(TECHNIQUES)450
4162 y Fl(W)-7 b(ork)40 b(on)g(JIT)g(compilation)g(tec)n(hniques)g
(often)h(fo)r(cuses)f(around)f(implemen)n(tation)i(of)f(a)450
4261 y(particular)f(programming)f(language.)73 b(W)-7
b(e)41 b(ha)n(v)n(e)e(follo)n(w)n(ed)g(this)i(same)e(division)h(in)h
(this)450 4361 y(section,)27 b(ordering)f(from)h(earliest)g(to)h
(latest)f(where)g(p)r(ossible.)450 4533 y Fp(2.1)41 b(Genesis)450
4666 y Fl(Self-mo)r(difying)22 b(co)r(de)f(has)g(existed)g(since)g(the)
h(earliest)e(da)n(ys)g(of)i(computing,)g(but)g(w)n(e)f(exclude)450
4766 y(that)38 b(from)f(consideration)f(b)r(ecause)i(there)f(is)h(t)n
(ypically)f(no)g(compilation)g(or)g(translation)450 4865
y(asp)r(ect)27 b(in)n(v)n(olv)n(ed.)533 4965 y(Instead,)k(w)n(e)f(susp)
r(ect)h(that)f(the)h(earliest)f(published)h(w)n(ork)e(on)h(JIT)g
(compilation)g(is)g(Mc-)450 5065 y(Carth)n(y's)37 b(1960)g(LISP)h(pap)r
(er.)69 b(He)38 b(men)n(tions)g(compilation)g(of)g(functions)h(in)n(to)
f(mac)n(hine)p eop
%%Page: 3 3
3 2 bop 2060 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)157
b Fh(\001)141 b Fi(3)450 465 y Fl(language,)29 b(a)h(pro)r(cess)f(fast)
h(enough)g(that)g(the)h(compiler's)e(output)i(needn't)g(b)r(e)f(sa)n(v)
n(ed)f([Mc-)450 565 y(Carth)n(y)22 b(1960].)34 b(This)23
b(can)g(b)r(e)h(seen)f(as)g(an)g(inevitable)g(result)g(of)h(ha)n(ving)e
(programs)f(and)i(data)450 665 y(share)j(the)i(same)f(notation)h
([McCarth)n(y)e(1981].)533 765 y(Another)32 b(early)f(published)h
(reference)f(to)h(JIT)g(compilation)f(dates)h(bac)n(k)f(to)h(1966.)48
b(The)450 864 y(Univ)n(ersit)n(y)21 b(of)i(Mic)n(higan)e(Executiv)n(e)g
(System)i(for)e(the)i(IBM)f(7090)f(explicitly)h(notes)g(that)g(the)450
964 y(assem)n(bler)d([Univ)n(ersit)n(y)h(of)h(Mic)n(higan)f(1966b,)g
(page)g(1])g(and)h(loader)e([Univ)n(ersit)n(y)h(of)h(Mic)n(higan)450
1064 y(1966a,)26 b(page)h(6])h(can)g(b)r(e)h(used)f(to)g(translate)f
(and)h(load)g(during)g(execution.)38 b(\(The)29 b(man)n(ual's)450
1163 y(preface)21 b(sa)n(ys)f(that)j(most)e(sections)g(w)n(ere)g
(written)h(b)r(efore)g(August)g(1965,)f(so)g(this)h(lik)n(ely)f(dates)
450 1263 y(bac)n(k)27 b(further.\))533 1363 y(Thompson's)34
b(1968)e Fk(CA)n(CM)49 b Fl(pap)r(er)34 b(is)g(frequen)n(tly)g(cited)h
(as)e(\\early)g(w)n(ork")g(in)h(mo)r(dern)450 1462 y(publications.)60
b(He)36 b(compiles)f(regular)f(expressions)g(in)n(to)h(IBM)h(7094)d(co)
r(de)j(in)f(an)h(ad)f(ho)r(c)450 1562 y(fashion,)27 b(co)r(de)h(whic)n
(h)f(is)h(then)g(executed)f(to)h(p)r(erform)f(matc)n(hing)g([Thompson)g
(1968].)450 1736 y Fp(2.2)41 b(LC)696 1706 y Fg(2)450
1869 y Fl(The)26 b(Language)e(for)h(Con)n(v)n(ersational)e(Computing,)j
(or)f(LC)2348 1839 y Fg(2)2385 1869 y Fl(,)i(w)n(as)d(a)i(language)e
(designed)h(for)450 1969 y(in)n(teractiv)n(e)h(programming)g([Mitc)n
(hell)i(et)g(al.)f(1968].)35 b(Although)28 b(used)g(brie\015y)f(at)h
(Carnegie-)450 2068 y(Mellon)18 b(Univ)n(ersit)n(y)g(for)f(teac)n
(hing,)j(LC)1681 2038 y Fg(2)1736 2068 y Fl(w)n(as)e(primarily)f(an)h
(exp)r(erimen)n(tal)g(language)f([Mitc)n(hell)450 2168
y(2000].)34 b(It)24 b(migh)n(t)f(otherwise)g(b)r(e)h(consigned)f(to)g
(the)i(dustbin)f(of)f(history)-7 b(,)24 b(if)g(not)g(for)f(the)h(tec)n
(h-)450 2268 y(niques)g(used)g(b)n(y)f(Mitc)n(hell)i(in)f(its)g
(implemen)n(tation)g([Mitc)n(hell)h(1970],)e(tec)n(hniques)g(that)i
(later)450 2367 y(in\015uenced)j(JIT)f(systems)g(for)h(Smalltalk)f(and)
g(Self.)533 2467 y(Mitc)n(hell)g(observ)n(ed)d(that)j(compiled)f(co)r
(de)g(can)g(b)r(e)h(deriv)n(ed)e(from)h(an)g(in)n(terpreter)f(at)h
(run-)450 2567 y(time,)41 b(simply)d(b)n(y)g(storing)f(the)i(actions)e
(p)r(erformed)g(during)h(in)n(terpretation.)67 b(This)38
b(only)450 2666 y(w)n(orks)e(for)i(co)r(de)g(that)g(has)g(b)r(een)h
(executed,)h(ho)n(w)n(ev)n(er)c(|)j(he)f(giv)n(es)f(the)h(example)g(of)
g(an)450 2766 y(if-then-else)29 b(statemen)n(t,)g(where)f(only)g(the)h
(else-part)f(is)g(executed.)41 b(T)-7 b(o)28 b(handle)h(suc)n(h)f
(cases,)450 2866 y(co)r(de)22 b(w)n(as)g(generated)f(for)h(the)h
(unexecuted)g(part)f(whic)n(h)h(re-in)n(v)n(ok)n(ed)d(the)j(in)n
(terpreter)e(should)450 2965 y(it)28 b(ev)n(er)f(b)r(e)h(executed)f
(\(the)h(then-part,)g(in)g(the)g(example)f(ab)r(o)n(v)n(e\).)450
3139 y Fp(2.3)41 b(APL)450 3272 y Fl(The)20 b(seminal)g(w)n(ork)f(on)h
(e\016cien)n(t)h(APL)f(implemen)n(tation)g(is)g(Abrams')g(dissertation)
f([Abrams)450 3372 y(1970].)34 b(Abrams)24 b(conco)r(cted)g(t)n(w)n(o)g
(k)n(ey)g(APL)g(optimization)g(strategies,)g(whic)n(h)g(he)h(describ)r
(ed)450 3472 y(using)37 b(the)h(connotativ)n(e)e(terms)h(\\drag-along")
c(and)38 b(\\b)r(eating.")65 b(Drag-along)34 b(defers)j(ex-)450
3571 y(pression)26 b(ev)-5 b(aluation)26 b(as)g(long)g(as)g(p)r
(ossible,)h(gathering)e(con)n(text)i(information)f(in)h(the)g(hop)r(es)
450 3671 y(that)d(a)g(more)g(e\016cien)n(t)g(ev)-5 b(aluation)23
b(metho)r(d)i(migh)n(t)f(b)r(ecome)g(apparen)n(t;)g(this)h(migh)n(t)f
(no)n(w)f(b)r(e)450 3770 y(called)j(lazy)f(ev)-5 b(aluation.)36
b(Beating)25 b(is)h(the)g(transformation)e(of)i(co)r(de)g(to)g(reduce)f
(the)h(amoun)n(t)450 3870 y(of)i(data)f(manipulation)g(in)n(v)n(olv)n
(ed)f(during)h(expression)f(ev)-5 b(aluation.)533 3970
y(Drag-along)19 b(and)i(b)r(eating)h(relate)e(to)i(JIT)f(compilation)g
(b)r(ecause)g(APL)g(is)h(a)f(v)n(ery)f(dynamic)450 4070
y(language;)k(t)n(yp)r(es)g(and)g(attributes)h(of)f(data)g(ob)5
b(jects)24 b(are)f(not,)i(in)g(general,)f(kno)n(wn)g(un)n(til)g(run-)
450 4169 y(time.)75 b(T)-7 b(o)39 b(fully)i(realize)e(these)h
(optimizations')g(p)r(oten)n(tial,)j(their)d(application)f(m)n(ust)h(b)
r(e)450 4269 y(dela)n(y)n(ed)26 b(un)n(til)j(run-time)e(information)g
(is)g(a)n(v)-5 b(ailable.)533 4369 y(Abrams')26 b(\\APL)f(Mac)n(hine")h
(emplo)n(y)n(ed)f(t)n(w)n(o)h(separate)f(JIT)h(compilers.)35
b(The)27 b(\014rst)f(trans-)450 4469 y(lated)f(APL)f(programs)e(in)n
(to)i(p)r(ost\014x)h(co)r(de)f(for)g(a)h(D-mac)n(hine)2415
4438 y Fg(1)2451 4469 y Fl(,)h(whic)n(h)e(main)n(tained)h(a)f(bu\013er)
450 4568 y(of)f(deferred)f(instructions.)35 b(The)23
b(D-mac)n(hine)g(acted)g(as)f(an)h(`algebraically)d(simplifying)k(com-)
450 4668 y(piler')i([Abrams)f(1970,)f(page)h(84])g(whic)n(h)h(w)n(ould)
g(p)r(erform)f(drag-along)e(and)j(b)r(eating)g(at)f(run-)450
4767 y(time,)j(in)n(v)n(oking)e(an)i(E-mac)n(hine)e(to)h(execute)h(the)
g(bu\013ered)g(instructions)f(when)h(necessary)-7 b(.)533
4867 y(Abrams')25 b(w)n(ork)f(w)n(as)g(directed)h(to)n(w)n(ards)f(an)h
(arc)n(hitecture)f(for)h(e\016cien)n(t)h(supp)r(ort)f(of)g(APL,)p
450 4985 391 4 v 450 5041 a Ff(1)485 5065 y Fo(Presumably)d(\\D")i(sto)
r(o)r(d)h(for)d(\\Deferral")i(or)f(\\Drag-Along.")p eop
%%Page: 4 4
4 3 bop 450 250 a Fi(4)142 b Fh(\001)157 b Fi(J.)27 b(Ayco)r(ck)806
441 y Fm(slower)p 1231 443 750 4 v 232 w Fe(\033)p 1981
443 V 1334 w(-)171 b Fm(faster)1139 524 y Fo(in)n(terpreted)1139
607 y(source)24 b(co)r(de)1689 524 y(in)n(terpreted)17
b(virtual)1689 607 y(mac)n(hine)23 b(co)r(de)2350 524
y(nativ)n(e)h(co)r(de)806 690 y Fm(smal)t(ler)p 1231
692 V 199 w Fe(\033)p 1981 692 V 1334 w(-)168 b Fm(lar)l(ger)1434
869 y Fo(Fig.)23 b(1.)71 b(The)24 b(time-space)f(tradeo\013.)450
1075 y Fl(hardw)n(are)37 b(supp)r(ort)j(for)f(high-lev)n(el)f
(languages)g(b)r(eing)h(a)h(p)r(opular)e(pursuit)i(of)f(the)h(time.)450
1175 y(Abrams)24 b(nev)n(er)f(built)i(the)f(mac)n(hine,)h(ho)n(w)n(ev)n
(er;)e(an)h(implemen)n(tation)g(w)n(as)f(attempted)i(a)f(few)450
1275 y(y)n(ears)17 b(later)h([Sc)n(hro)r(eder)f(and)i(V)-7
b(aughn)18 b(1973].)1898 1245 y Fg(2)1968 1275 y Fl(The)g(tec)n
(hniques)h(w)n(ere)e(later)h(expanded)h(up)r(on)450 1374
y(b)n(y)i(others)f([Miller)h(1977],)g(although)f(the)h(basic)g(JIT)g
(nature)f(nev)n(er)g(c)n(hanged,)i(and)f(w)n(ere)f(used)450
1474 y(for)33 b(the)h(soft)n(w)n(are)d(implemen)n(tation)j(of)f
(Hewlett-P)n(ac)n(k)-5 b(ard's)31 b(APL)p Fd(n)p Fl(3000)g([Johnston)i
(1977;)450 1574 y(v)-5 b(an)28 b(Dyk)n(e)f(1977].)450
1751 y Fp(2.4)41 b(Mixed)27 b(Co)r(de,)g(Thro)n(w-Aw)n(a)n(y)f(Co)r
(de,)h(and)h(BASIC)450 1885 y Fl(The)34 b(tradeo\013)g(b)r(et)n(w)n
(een)g(execution)g(time)g(and)g(space)g(often)g(underlies)g(the)g
(argumen)n(t)f(for)450 1984 y(JIT)25 b(compilation.)35
b(This)25 b(tradeo\013)f(is)h(summarized)f(in)h(Figure)g(1.)35
b(The)25 b(other)f(consideration)450 2084 y(is)35 b(that)g(most)f
(programs)f(sp)r(end)i(the)g(ma)5 b(jorit)n(y)34 b(of)h(time)g
(executing)g(a)f(minorit)n(y)g(of)h(co)r(de,)450 2184
y(based)d(on)h(data)f(from)g(empirical)g(studies)h([Kn)n(uth)f(1971].)
51 b(Tw)n(o)32 b(w)n(a)n(ys)f(to)h(reconcile)g(these)450
2283 y(observ)-5 b(ations)26 b(ha)n(v)n(e)g(app)r(eared:)36
b(mixed)28 b(co)r(de)f(and)h(thro)n(w-a)n(w)n(a)n(y)c(compiling.)533
2383 y(\\Mixed)37 b(co)r(de")g(refers)f(to)h(the)h(implemen)n(tation)g
(of)f(a)g(program)e(as)i(a)g(mixture)g(of)g(na-)450 2483
y(tiv)n(e)26 b(co)r(de)f(and)h(in)n(terpreted)f(co)r(de,)h(prop)r(osed)
f(indep)r(enden)n(tly)h(b)n(y)g([Dakin)g(and)f(P)n(o)r(ole)g(1973])450
2583 y(and)h([Da)n(wson)g(1973].)35 b(The)26 b(frequen)n(tly-executed)g
(parts)g(of)g(the)h(program)e(w)n(ould)h(b)r(e)h(in)f(na-)450
2682 y(tiv)n(e)h(co)r(de,)h(the)g(infrequen)n(tly-executed)f(parts)g
(in)n(terpreted,)g(hop)r(efully)h(yielding)g(a)f(smaller)450
2782 y(memory)38 b(fo)r(otprin)n(t)g(with)h(little)g(or)f(no)g(impact)h
(on)f(sp)r(eed.)70 b(A)38 b(\014ne-grained)g(mixture)g(is)450
2882 y(implied:)51 b(implemen)n(ting)35 b(the)f(program)f(with)i(in)n
(terpreted)e(co)r(de)i(and)f(the)g(libraries)f(with)450
2981 y(nativ)n(e)27 b(co)r(de)g(w)n(ould)h Fk(not)35
b Fl(constitute)28 b(mixed)g(co)r(de.)533 3081 y(A)43
b(further)g(t)n(wist)g(to)g(the)g(mixed)g(co)r(de)g(approac)n(h)e(in)n
(v)n(olv)n(ed)h(customizing)g(the)i(in)n(ter-)450 3181
y(preter)28 b([Pittman)g(1987].)37 b(Instead)28 b(of)g(mixing)g(nativ)n
(e)g(co)r(de)g(in)n(to)g(the)g(program,)f(the)h(nativ)n(e)450
3281 y(co)r(de)33 b(manifests)g(itself)h(as)f(sp)r(ecial)f(virtual)h
(mac)n(hine)g(instructions;)j(the)d(program)e(is)i(then)450
3380 y(compiled)28 b(en)n(tirely)f(in)n(to)g(virtual)g(mac)n(hine)g(co)
r(de.)533 3480 y(The)35 b(basic)g(idea)g(of)g(mixed)h(co)r(de,)h(switc)
n(hing)d(b)r(et)n(w)n(een)i(di\013eren)n(t)f(t)n(yp)r(es)g(of)g
(executable)450 3580 y(co)r(de,)f(is)g(still)f(applicable)g(to)g(JIT)g
(systems,)h(although)e(few)i(researc)n(hers)c(at)j(the)h(time)f(ad-)450
3680 y(v)n(o)r(cated)g(generating)g(the)h(mac)n(hine)f(co)r(de)h(at)g
(run-time.)56 b(Keeping)33 b(b)r(oth)h(a)g(compiler)f(and)450
3779 y(an)28 b(in)n(terpreter)g(in)g(memory)g(at)g(run-time)h(ma)n(y)f
(ha)n(v)n(e)f(b)r(een)i(considered)e(to)r(o)h(costly)g(on)g(the)450
3879 y(mac)n(hines)f(of)g(the)h(da)n(y)-7 b(,)27 b(negating)g(an)n(y)g
(program)e(size)j(tradeo\013.)533 3979 y(The)41 b(case)e(against)h
(mixed)h(co)r(de)f(comes)g(from)g(soft)n(w)n(are)f(engineering)g([Bro)n
(wn)h(1976].)450 4079 y(Ev)n(en)34 b(assuming)g(that)h(the)h(ma)5
b(jorit)n(y)33 b(of)i(co)r(de)g(will)g(b)r(e)h(shared)e(b)r(et)n(w)n
(een)h(the)g(in)n(terpreter)450 4178 y(and)f(compiler,)i(there)e(are)g
(still)g(t)n(w)n(o)g(disparate)f(pieces)i(of)f(co)r(de)g(\(the)h(in)n
(terpreter)f(prop)r(er)450 4278 y(and)24 b(the)h(compiler's)e(co)r(de)h
(generator\))f(whic)n(h)h(m)n(ust)h(b)r(e)f(main)n(tained)g(and)g
(exhibit)h(iden)n(tical)450 4378 y(b)r(eha)n(vior.)533
4478 y(\(Prop)r(onen)n(ts)j(of)i(partial)f(ev)-5 b(aluation,)29
b(or)g(program)f(sp)r(ecialization,)h(will)h(note)g(that)g(this)450
4578 y(is)i(a)g(sp)r(ecious)f(argumen)n(t)h(in)g(some)g(sense,)g(b)r
(ecause)g(a)g(compiler)f(can)h(b)r(e)h(though)n(t)f(of)g(as)f(a)450
4677 y(sp)r(ecialized)i(in)n(terpreter)f([Jones)g(et)h(al.)g(1993].)51
b(Ho)n(w)n(ev)n(er,)33 b(the)g(use)g(of)g(partial)f(ev)-5
b(aluation)450 4777 y(tec)n(hniques)27 b(is)h(not)f(curren)n(tly)g
(widespread.\))p 450 4902 391 4 v 450 4958 a Ff(2)485
4982 y Fo(In)c(the)g(end,)g(Litton)h(Industries)f(\(Sc)n(hro)r(eder)h
(and)f(V)-6 b(aughn's)23 b(emplo)n(y)n(er\))f(nev)n(er)h(built)g(the)g
(mac)n(hine)g([Mau-)450 5065 y(riello)f(2000].)p eop
%%Page: 5 5
5 4 bop 2060 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)157
b Fh(\001)141 b Fi(5)533 465 y Fl(This)18 b(brings)g(us)g(to)g(the)h
(second)f(manner)g(of)g(reconciliation:)31 b(thro)n(w-a)n(w)n(a)n(y)15
b(compiling)j([Bro)n(wn)450 565 y(1976].)49 b(This)32
b(w)n(as)g(presen)n(ted)f(purely)h(as)g(a)g(space)f(optimization:)46
b(instead)32 b(of)g(static)h(com-)450 665 y(pilation,)27
b(parts)f(of)h(a)g(program)e(could)h(b)r(e)i(compiled)f(dynamically)f
(on)h(an)f(as-needed)h(basis.)450 764 y(Up)r(on)g(exhausting)e(memory)
-7 b(,)26 b(some)g(or)f(all)h(of)g(the)h(compiled)f(co)r(de)g(could)g
(b)r(e)g(thro)n(wn)g(a)n(w)n(a)n(y;)450 864 y(the)i(co)r(de)f(w)n(ould)
h(b)r(e)g(regenerated)d(later)i(if)h(necessary)-7 b(.)533
964 y(BASIC)21 b(w)n(as)f(the)h(testb)r(ed)h(for)e(thro)n(w-a)n(w)n(a)n
(y)e(compilation.)34 b(Bro)n(wn)19 b(essen)n(tially)h(c)n(haracter-)450
1064 y(ized)28 b(the)g(tec)n(hnique)f(as)g(a)h(go)r(o)r(d)f(w)n(a)n(y)f
(to)i(address)e(the)i(time-space)f(tradeo\013)g([Bro)n(wn)g(1976];)450
1163 y(Hammond)33 b(w)n(as)e(somewhat)h(more)g(adaman)n(t,)h(claiming)f
(thro)n(w-a)n(w)n(a)n(y)e(compilation)i(to)g(b)r(e)450
1263 y(sup)r(erior)26 b(except)i(when)g(memory)f(is)g(tigh)n(t)h
([Hammond)f(1977].)533 1363 y(A)19 b(go)r(o)r(d)e(discussion)h(of)g
(mixed)h(co)r(de)f(and)g(thro)n(w-a)n(w)n(a)n(y)d(compiling)j(ma)n(y)g
(b)r(e)h(found)g(in)f([Bro)n(wn)450 1462 y(1990].)450
1635 y Fp(2.5)41 b(F)n(ORTRAN)450 1768 y Fl(Some)f(of)f(the)h(\014rst)g
(w)n(ork)e(on)i(JIT)f(systems)g(where)h(programs)d(automatically)i
(optimize)450 1868 y(their)25 b(\\hot)g(sp)r(ots")g(at)g(run-time)g(is)
h(due)f(to)g(Hansen)h([Hansen)f(1974].)2681 1838 y Fg(3)2752
1868 y Fl(He)h(addressed)e(three)450 1967 y(imp)r(ortan)n(t)j
(questions:)450 2127 y(\(1\))42 b(What)34 b(co)r(de)f(should)h(b)r(e)g
(optimized?)56 b(Hansen)33 b(c)n(hose)g(a)h(simple,)h(lo)n(w-cost)d
(frequency)598 2226 y(mo)r(del,)24 b(main)n(taining)f(a)f
(frequency-of-execution)g(coun)n(ter)h(for)f(eac)n(h)h(blo)r(c)n(k)g
(of)g(co)r(de)g(\(w)n(e)598 2326 y(use)29 b(the)i(generic)d(term)i
(\\blo)r(c)n(k")f(to)g(describ)r(e)h(a)f(unit)i(of)f(co)r(de;)g(the)h
(exact)e(nature)g(of)h(a)598 2426 y(blo)r(c)n(k)d(is)g(immaterial)g
(for)g(our)g(purp)r(oses\).)450 2548 y(\(2\))42 b(When)29
b(should)g(the)g(co)r(de)f(b)r(e)i(optimized?)41 b(The)28
b(frequency)h(coun)n(ters)e(serv)n(ed)h(a)g(second)598
2648 y(r^)-42 b(ole:)36 b(crossing)25 b(a)i(threshold)g(v)-5
b(alue)28 b(made)f(the)h(asso)r(ciated)e(blo)r(c)n(k)h(of)h(co)r(de)f
(a)g(candidate)598 2747 y(for)22 b(the)i(next)f(\\lev)n(el")f(of)h
(optimization,)h(as)f(describ)r(ed)g(b)r(elo)n(w.)35
b(\\Sup)r(ervisor")21 b(co)r(de)i(w)n(as)598 2847 y(in)n(v)n(ok)n(ed)e
(b)r(et)n(w)n(een)i(blo)r(c)n(ks,)g(whic)n(h)g(w)n(ould)f(assess)g(the)
h(coun)n(ters,)g(p)r(erform)f(optimization)598 2947 y(if)f(necessary)-7
b(,)21 b(and)g(transfer)g(con)n(trol)f(to)h(the)h(next)f(blo)r(c)n(k)g
(of)g(co)r(de.)35 b(The)21 b(latter)g(op)r(eration)598
3046 y(could)30 b(b)r(e)h(a)g(direct)f(call,)i(or)e(in)n(terpreter)f
(in)n(v)n(o)r(cation)h(|)h(mixed)g(co)r(de)f(w)n(as)g(supp)r(orted)598
3146 y(b)n(y)d(Hansen's)g(design.)450 3269 y(\(3\))42
b(Ho)n(w)21 b(should)h(the)g(co)r(de)g(b)r(e)h(optimized?)35
b(A)23 b(set)f(of)g(con)n(v)n(en)n(tional)e(mac)n(hine-indep)r(enden)n
(t)598 3368 y(and)41 b(mac)n(hine-dep)r(enden)n(t)h(optimizations)f(w)n
(ere)g(c)n(hosen)g(and)h(ordered,)i(so)d(a)g(blo)r(c)n(k)598
3468 y(migh)n(t)30 b(\014rst)h(b)r(e)g(optimized)h(b)n(y)e(constan)n(t)
g(folding,)i(b)n(y)f(common)f(sub)r(expression)g(elim-)598
3567 y(ination)j(the)i(second)e(time)i(optimization)e(o)r(ccurs,)i(b)n
(y)f(co)r(de)g(motion)g(the)g(third)g(time,)598 3667
y(and)29 b(so)f(on.)42 b(Hansen)29 b(observ)n(es)e(that)i(this)h(sc)n
(heme)f(limits)g(the)h(amoun)n(t)f(of)g(time)g(tak)n(en)598
3767 y(at)j(an)n(y)g(giv)n(en)g(optimization)h(p)r(oin)n(t)g(\(esp)r
(ecially)f(imp)r(ortan)n(t)h(if)g(the)g(frequency)g(mo)r(del)598
3866 y(pro)n(v)n(es)d(to)i(b)r(e)g(incorrect\),)g(as)g(w)n(ell)g(as)f
(allo)n(wing)g(optimizations)g(to)h(b)r(e)h(incremen)n(tally)598
3966 y(added)27 b(to)h(the)g(compiler.)533 4122 y(Programs)h(using)i
(the)i(resulting)e(Adaptiv)n(e)g(F)n(OR)-7 b(TRAN)33
b(system)e(rep)r(ortedly)g(w)n(ere)g(not)450 4222 y(alw)n(a)n(ys)g
(faster)i(than)g(their)g(statically)f(compiled-and-optimized)h(coun)n
(terparts,)g(but)g(p)r(er-)450 4321 y(formed)27 b(b)r(etter)h(o)n(v)n
(erall.)533 4421 y(Returning)e(again)e(to)i(mixed)f(co)r(de,)h(Ng)g
(and)g(Can)n(toni)f(implemen)n(ted)h(a)f(v)-5 b(arian)n(t)25
b(of)h(F)n(OR-)450 4521 y(TRAN)35 b(using)e(this)h(tec)n(hnique)g([Ng)g
(and)g(Can)n(toni)f(1976].)54 b(Their)34 b(system)f(could)h(compile)450
4620 y(functions)27 b(at)f(run-time)h(in)n(to)f
(\\pseudo-instructions,")f(probably)g(a)i(tok)n(enized)f(form)g(of)g
(the)p 450 4736 391 4 v 450 4792 a Ff(3)485 4816 y Fo([Da)n(wson)i
(1973])g(men)n(tions)g(a)g(1967)i(rep)r(ort)e(b)n(y)g(Barbieri)f(and)i
(Morrissey)e(where)h(a)g(program)f(b)r(egins)i(ex-)450
4899 y(ecution)h(in)e(in)n(terpreted)i(form,)e(and)h(frequen)n
(tly-executed)i(parts)e(`can)g(b)r(e)g(con)n(v)n(erted)i(to)e(mac)n
(hine)f(co)r(de.')450 4982 y(Ho)n(w)n(ev)n(er,)g(it)f(is)f(not)i(clear)
f(if)f(the)i(con)n(v)n(ersion)g(to)g(mac)n(hine)f(co)r(de)h(o)r
(ccurred)f(at)h(run-time.)40 b(Unfortunately)-6 b(,)450
5065 y(w)n(e)24 b(ha)n(v)n(e)h(not)f(b)r(een)h(able)f(to)g(obtain)g
(the)h(cited)f(w)n(ork)g(as)g(of)f(this)h(writing.)p
eop
%%Page: 6 6
6 5 bop 450 250 a Fi(6)142 b Fh(\001)157 b Fi(J.)27 b(Ayco)r(ck)450
465 y Fl(source)19 b(co)r(de)h(rather)g(than)g(a)g(lo)n(w)n(er-lev)n
(el)e(virtual)i(mac)n(hine)f(co)r(de.)35 b(The)20 b
(pseudo-instructions)450 565 y(w)n(ould)27 b(then)g(b)r(e)h(in)n
(terpreted.)36 b(They)27 b(claimed)g(that)h(run-time)f(compilation)g(w)
n(as)f(useful)h(for)450 665 y(some)39 b(applications)g(and)h(a)n(v)n
(oided)f(a)g(slo)n(w)g(compile-link)h(pro)r(cess.)73
b(They)40 b(did)g(not)g(pro-)450 764 y(duce)30 b(mixed)g(co)r(de)g(at)g
(run-time;)h(their)f(use)g(of)g(the)g(term)g(referred)f(to)h(the)g
(abilit)n(y)g(to)g(ha)n(v)n(e)450 864 y(statically-compiled)j(F)n(OR)-7
b(TRAN)34 b(programs)d(call)i(their)h(pseudo-instruction)f(in)n
(terpreter)450 964 y(automatically)27 b(when)g(needed)h(via)f(link)n
(er)g(tric)n(k)n(ery)-7 b(.)450 1181 y Fp(2.6)41 b(Smalltalk)450
1316 y Fl(Smalltalk)23 b(source)f(co)r(de)h(is)h(compiled)f(in)n(to)g
(virtual)g(mac)n(hine)g(co)r(de)g(when)h(new)f(metho)r(ds)h(are)450
1415 y(added)i(to)g(a)g(class)f([Goldb)r(erg)h(and)g(Robson)f(1985].)35
b(The)26 b(p)r(erformance)g(of)g(na)-9 b(\177)-32 b(\020v)n(e)24
b(Smalltalk)450 1515 y(implemen)n(tations)j(left)i(something)e(to)g(b)r
(e)h(desired,)f(ho)n(w)n(ev)n(er.)533 1617 y(Rather)c(than)g(attac)n(k)
f(the)i(p)r(erformance)e(problem)h(with)g(hardw)n(are,)f(Deutsc)n(h)i
(and)f(Sc)n(hi\013-)450 1717 y(man)35 b(made)g(k)n(ey)g(optimizations)g
(in)h(soft)n(w)n(are.)58 b(The)35 b(observ)-5 b(ation)34
b(b)r(ehind)j(this)e(w)n(as)g(that)450 1816 y(they)f(could)f(pic)n(k)g
(the)h(most)g(e\016cien)n(t)f(represen)n(tation)f(for)h(information,)i
(so)e(long)g(as)g(con-)450 1916 y(v)n(ersion)c(b)r(et)n(w)n(een)h
(represen)n(tations)e(happ)r(ened)i(automatically)f(and)h(transparen)n
(tly)f(to)g(the)450 2016 y(user)e([Deutsc)n(h)h(and)f(Sc)n(hi\013man)h
(1984].)533 2118 y(JIT)21 b(con)n(v)n(ersion)d(of)j(virtual)f(mac)n
(hine)h(co)r(de)f(to)h(nativ)n(e)f(co)r(de)h(w)n(as)f(one)g(of)h(the)g
(optimization)450 2217 y(tec)n(hniques)27 b(they)g(used,)g(a)g(pro)r
(cess)f(they)h(lik)n(ened)g(to)g(macro-expansion.)34
b(Pro)r(cedures)25 b(w)n(ere)450 2317 y(compiled)33 b(to)g(nativ)n(e)f
(co)r(de)h(lazily)-7 b(,)34 b(when)f(execution)g(en)n(tered)g(the)g
(pro)r(cedure;)i(the)e(nativ)n(e)450 2417 y(co)r(de)26
b(w)n(as)g(cac)n(hed)g(for)g(later)g(use.)36 b(Their)26
b(system)h(w)n(as)e(link)n(ed)i(to)f(memory)g(managemen)n(t)g(in)450
2516 y(that)e(nativ)n(e)f(co)r(de)h(w)n(ould)f(nev)n(er)g(b)r(e)h
(paged)f(out,)h(just)g(thro)n(wn)f(a)n(w)n(a)n(y)f(and)i(regenerated)e
(later)450 2616 y(if)28 b(necessary)-7 b(.)533 2718 y(In)25
b(turn,)h(Deutsc)n(h)g(and)f(Sc)n(hi\013man)g(credit)g(the)h(dynamic)f
(translation)f(idea)h(to)g(Rau)g([Rau)450 2817 y(1978].)43
b(Rau)30 b(w)n(as)g(concerned)f(with)i(\\univ)n(ersal)e(host)h(mac)n
(hines")f(whic)n(h)h(w)n(ould)g(execute)g(a)450 2917
y(v)-5 b(ariet)n(y)24 b(of)h(high-lev)n(el)e(languages)g(w)n(ell)i
(\(compared)f(to,)h(sa)n(y)-7 b(,)25 b(a)f(sp)r(ecialized)g(APL)h(mac)n
(hine\).)450 3017 y(He)k(prop)r(osed)f(dynamic)h(translation)f(to)h
(micro)r(co)r(de)f(at)h(the)g(gran)n(ularit)n(y)e(of)i(single)f
(virtual)450 3116 y(mac)n(hine)36 b(instructions.)64
b(A)38 b(hardw)n(are)c(cac)n(he,)39 b(the)e(dynamic)f(translation)g
(bu\013er,)j(w)n(ould)450 3216 y(store)25 b(completed)i(translations;)e
(a)h(cac)n(he)f(miss)h(w)n(ould)g(signify)g(a)g(missing)g(translation,)
f(and)450 3316 y(fault)j(to)f(a)h(dynamic)f(translation)f(routine.)450
3532 y Fp(2.7)41 b(Self)450 3668 y Fl(The)31 b(Self)g(programming)d
(language)h([Ungar)g(and)i(Smith)g(1987;)f(Smith)i(and)e(Ungar)g
(1995],)450 3767 y(in)25 b(con)n(trast)e(to)i(man)n(y)f(of)h(the)g
(other)f(languages)f(men)n(tioned)h(in)h(this)g(section,)g(is)g
(primarily)e(a)450 3867 y(researc)n(h)d(v)n(ehicle.)34
b(Self)22 b(is)g(in)f(man)n(y)h(w)n(a)n(ys)e(in\015uenced)i(b)n(y)f
(Smalltalk,)i(in)f(that)f(b)r(oth)h(are)f(pure)450 3967
y(ob)5 b(ject-orien)n(ted)32 b(languages)f(|)i(ev)n(erything)f(is)h(an)
g(ob)5 b(ject.)53 b(But)33 b(Self)h(esc)n(hews)e(classes)g(in)450
4066 y(fa)n(v)n(or)26 b(of)i(protot)n(yp)r(es,)g(and)g(otherwise)f
(attempts)h(to)g(unify)h(a)f(n)n(um)n(b)r(er)f(of)i(concepts.)38
b(Ev)n(ery)450 4166 y(action)e(is)f(dynamic)h(and)g(c)n(hangeable,)h
(and)f(ev)n(en)f(basic)h(op)r(erations,)h(lik)n(e)e(lo)r(cal)h(v)-5
b(ariable)450 4265 y(access,)36 b(require)e(in)n(v)n(o)r(cation)g(of)i
(a)f(metho)r(d.)60 b(T)-7 b(o)35 b(further)g(complicate)g(matters,)i
(Self)f(is)f(a)450 4365 y(dynamically-t)n(yp)r(ed)d(language,)g
(meaning)f(that)i(the)g(t)n(yp)r(es)f(of)h(iden)n(ti\014ers)f(are)f
(not)i(kno)n(wn)450 4465 y(un)n(til)28 b(run-time.)533
4567 y(Self)6 b('s)20 b(un)n(usual)f(design)f(mak)n(es)h(e\016cien)n(t)
g(implemen)n(tation)g(di\016cult.)35 b(This)19 b(resulted)g(in)g(the)
450 4666 y(dev)n(elopmen)n(t)32 b(of)g(the)g(most)g(aggressiv)n(e,)f
(am)n(bitious)h(JIT)f(compilation)h(and)g(optimization)450
4766 y(up)23 b(to)g(that)g(time.)36 b(The)22 b(Self)i(group)d(noted)i
(three)g(distinct)g(generations)e(of)i(compiler)f([H\177)-42
b(olzle)450 4866 y(1994],)43 b(an)e(organization)f(w)n(e)h(follo)n(w)f
(b)r(elo)n(w;)48 b(in)42 b(all)f(cases,)j(the)e(compiler)f(w)n(as)f(in)
n(v)n(ok)n(ed)450 4965 y(dynamically)27 b(up)r(on)h(a)f(metho)r(d's)h
(in)n(v)n(o)r(cation,)e(as)h(in)g(Deutsc)n(h)h(and)g(Sc)n(hi\013man's)f
(Smalltalk)450 5065 y(system.)p eop
%%Page: 7 7
7 6 bop 2060 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)157
b Fh(\001)141 b Fi(7)533 465 y Fl(2.7.1)41 b Fk(First)26
b(Gener)l(ation.)43 b Fl(Almost)23 b(all)g(the)h(optimization)f(tec)n
(hniques)g(emplo)n(y)n(ed)f(b)n(y)h(Self)450 565 y(compilers)28
b(dealt)g(with)i(t)n(yp)r(e)f(information,)f(and)g(transforming)g(a)g
(program)f(in)h(suc)n(h)h(a)f(w)n(a)n(y)450 665 y(that)j(some)f
(certain)n(t)n(y)f(could)h(b)r(e)h(had)g(ab)r(out)f(the)h(t)n(yp)r(es)f
(of)h(iden)n(ti\014ers.)45 b(Only)30 b(a)g(few)h(tec)n(h-)450
764 y(niques)c(had)h(a)f(direct)h(relationship)e(with)i(JIT)g
(compilation,)f(ho)n(w)n(ev)n(er.)533 865 y(Chief)19
b(among)e(these,)j(in)f(the)g(\014rst)f(generation)f(Self)i(compiler,)g
(w)n(as)f(customization)f([Cham-)450 965 y(b)r(ers)31
b(et)g(al.)g(1989;)h(Cham)n(b)r(ers)e(and)h(Ungar)f(1989;)i(Cham)n(b)r
(ers)e(1992].)46 b(Instead)31 b(of)g(dynam-)450 1065
y(ically)f(compiling)g(a)f(metho)r(d)i(in)n(to)f(nativ)n(e)g(co)r(de)g
(that)g(w)n(ould)g(w)n(ork)f(for)h(an)n(y)f(in)n(v)n(o)r(cation)g(of)
450 1164 y(the)j(metho)r(d,)h(the)e(compiler)g(pro)r(duced)g(a)g(v)n
(ersion)f(of)h(the)h(metho)r(d)g(that)g(w)n(as)e(customized)450
1264 y(to)h(that)g(particular)e(con)n(text.)46 b(Muc)n(h)31
b(more)e(t)n(yp)r(e)i(information)f(w)n(as)g(a)n(v)-5
b(ailable)30 b(to)g(the)h(JIT)450 1364 y(compiler)37
b(compared)f(to)h(static)g(compilation,)i(and)e(b)n(y)g(exploiting)g
(this)g(fact)h(the)f(result-)450 1463 y(ing)28 b(co)r(de)g(w)n(as)g(m)n
(uc)n(h)g(more)g(e\016cien)n(t.)39 b(While)29 b(metho)r(d)g(calls)f
(from)g(similar)f(con)n(texts)h(could)450 1563 y(share)23
b(customized)g(co)r(de,)i(\\o)n(v)n(ercustomization")20
b(could)k(still)g(consume)g(a)f(lot)h(of)g(memory)f(at)450
1663 y(run-time;)31 b(w)n(a)n(ys)d(to)i(com)n(bat)f(this)i(problem)e(w)
n(ere)g(later)g(studied)i([Diec)n(kmann)e(and)h(H\177)-42
b(olzle)450 1762 y(1997].)533 1928 y(2.7.2)41 b Fk(Se)l(c)l(ond)34
b(Gener)l(ation.)43 b Fl(The)32 b(second)f(generation)f(Self)j
(compiler)e(extended)h(one)g(of)450 2028 y(the)20 b(program)d
(transformation)h(tec)n(hniques)h(used)g(b)n(y)h(its)f(predecessor,)g
(and)g(computed)h(m)n(uc)n(h)450 2127 y(b)r(etter)28
b(t)n(yp)r(e)g(information)f(for)g(lo)r(ops)g([Cham)n(b)r(ers)g(and)g
(Ungar)g(1990;)e(Cham)n(b)r(ers)i(1992].)533 2229 y(This)32
b(Self)h(compiler's)f(output)g(w)n(as)g(indeed)g(faster)g(than)h(that)f
(of)h(the)f(\014rst)g(generation,)450 2328 y(but)j(it)g(came)f(at)g(a)g
(price.)57 b(The)35 b(compiler)e(ran)h(15)f(to)i(35)e(times)i(more)e
(slo)n(wly)h(on)g(b)r(enc)n(h-)450 2428 y(marks)24 b([Cham)n(b)r(ers)h
(and)h(Ungar)e(1990;)g(Cham)n(b)r(ers)h(and)h(Ungar)e(1991],)g(to)i
(the)g(p)r(oin)n(t)f(where)450 2527 y(man)n(y)i(users)g(refused)g(to)h
(use)f(the)h(new)g(compiler!)f([H\177)-42 b(olzle)27
b(1994])533 2629 y(Mo)r(di\014cations)40 b(w)n(ere)g(made)h(to)g(the)g
(resp)r(onsible)f(algorithms)g(to)g(sp)r(eed)i(up)f(compila-)450
2728 y(tion)25 b([Cham)n(b)r(ers)e(and)i(Ungar)e(1991].)34
b(One)24 b(suc)n(h)g(mo)r(di\014cation)h(w)n(as)e(called)h(\\deferred)g
(com-)450 2828 y(pilation)29 b(of)f(uncommon)h(cases.")1524
2798 y Fg(4)1600 2828 y Fl(The)f(compiler)h(is)f(informed)h(that)g
(certain)f(ev)n(en)n(ts,)g(suc)n(h)450 2927 y(as)23 b(arithmetic)g(o)n
(v)n(er\015o)n(w,)f(are)h(unlik)n(ely)g(to)g(o)r(ccur.)35
b(That)23 b(b)r(eing)h(the)g(case,)f(no)h(co)r(de)f(is)g(gener-)450
3027 y(ated)i(for)f(these)h(uncommon)g(cases;)g(a)g(stub)g(is)g(left)g
(in)h(the)f(co)r(de)g(instead,)g(whic)n(h)g(will)g(in)n(v)n(ok)n(e)450
3127 y(the)h(compiler)f(again)g(if)h(necessary)-7 b(.)35
b(The)25 b(practical)g(result)h(of)f(this)h(is)g(that)g(the)g(co)r(de)g
(for)f(un-)450 3226 y(common)j(cases)f(need)h(not)g(b)r(e)h(analyzed)e
(up)r(on)i(initial)f(compilation,)g(sa)n(ving)f(a)h(substan)n(tial)450
3326 y(amoun)n(t)f(of)h(time.)1031 3296 y Fg(5)533 3427
y Fl(Ungar,)22 b(Smith,)i(Cham)n(b)r(ers,)f(and)f(H\177)-42
b(olzle)22 b([1992])e(giv)n(e)h(a)h(go)r(o)r(d)f(presen)n(tation)g(of)h
(optimiza-)450 3527 y(tion)30 b(tec)n(hniques)g(used)g(in)g(Self)h(and)
e(the)i(resulting)e(p)r(erformance)g(in)h(the)h(\014rst)f(and)f(second)
450 3626 y(generation)d(compilers.)533 3792 y(2.7.3)41
b Fk(Thir)l(d)28 b(Gener)l(ation.)43 b Fl(The)24 b(third)g(generation)f
(Self)h(compiler)g(attac)n(k)n(ed)f(the)h(issue)g(of)450
3892 y(slo)n(w)32 b(compilation)g(at)h(a)g(m)n(uc)n(h)f(more)g
(fundamen)n(tal)h(lev)n(el.)53 b(The)33 b(Self)g(compiler)f(w)n(as)g
(part)450 3992 y(of)c(an)g(in)n(teractiv)n(e,)g(graphical)f
(programming)f(en)n(vironmen)n(t;)i(executing)g(the)h(compiler)e(on-)
450 4091 y(the-\015y)32 b(resulted)f(in)h(a)f(noticeable)g(pause)g(in)g
(execution.)49 b(H\177)-42 b(olzle)31 b(argued)f(that)i(measuring)450
4191 y(pauses)24 b(in)g(execution)g(for)g(JIT)g(compilation)g(b)n(y)g
(timing)h(the)g(amoun)n(t)f(of)g(time)h(the)g(compiler)450
4291 y(to)r(ok)30 b(to)g(run)g(w)n(as)g(deceptiv)n(e,)h(and)f(not)g
(represen)n(tativ)n(e)f(of)h(the)h(user's)e(exp)r(erience)h([H\177)-42
b(olzle)450 4390 y(1994;)22 b(H\177)-42 b(olzle)21 b(and)h(Ungar)f
(1994b].)33 b(Tw)n(o)21 b(in)n(v)n(o)r(cations)f(of)i(the)g(compiler)f
(could)h(b)r(e)g(separated)450 4490 y(b)n(y)i(a)f(brief)h(spurt)g(of)g
(program)e(execution,)j(but)f(w)n(ould)g(b)r(e)g(p)r(erceiv)n(ed)f(as)h
(one)f(long)h(pause)f(b)n(y)p 450 4653 391 4 v 450 4709
a Ff(4)485 4733 y Fo(In)f(Cham)n(b)r(ers')f(thesis,)i(this)f(is)g
(referred)g(to)h(as)f(\\lazy)h(compilation)f(of)g(uncommon)f(branc)n
(hes,")j(an)f(idea)f(he)450 4816 y(attributes)j(to)g(a)f(suggestion)h
(b)n(y)f(John)h(Maloney)f(in)f(1989)i([Cham)n(b)r(ers)e(1992,)h(page)h
(123].)32 b(Ho)n(w)n(ev)n(er,)25 b(this)e(is)450 4899
y(the)i(same)d(tec)n(hnique)k(used)e(in)f([Mitc)n(hell)g(1970],)h(alb)r
(eit)g(for)f(di\013eren)n(t)h(reasons.)450 4958 y Ff(5)485
4982 y Fo(This)29 b(tec)n(hnique)k(can)e(b)r(e)f(applied)h(to)g
(dynamic)f(compilation)f(of)h(exception)j(handling)d(co)r(de)i([Lee)e
(et)h(al.)450 5065 y(2000].)p eop
%%Page: 8 8
8 7 bop 450 250 a Fi(8)142 b Fh(\001)157 b Fi(J.)27 b(Ayco)r(ck)450
465 y Fl(the)j(user.)42 b(H\177)-42 b(olzle)29 b(comp)r(ensated)h(b)n
(y)f(considering)f(temp)r(orally-related)g(groups)g(of)i(pauses,)450
565 y(or)d(`pause)g(clusters,')g(rather)f(than)i(individual)g
(compilation)f(pauses.)533 666 y(As)d(for)g(the)g(compiler)f(itself,)j
(compilation)d(time)i(w)n(as)e(reduced)g(|)h(or)f(at)h(least)g(spread)f
(out)450 765 y(|)34 b(b)n(y)g(using)g(adaptiv)n(e)f(optimization,)i
(similar)f(to)g(Hansen's)f(F)n(OR)-7 b(TRAN)35 b(w)n(ork.)55
b(Initial)450 865 y(metho)r(d)28 b(compilation)g(w)n(as)f(p)r(erformed)
g(b)n(y)h(a)f(fast,)h(non-optimizing)f(compiler;)h(frequency-)450
964 y(of-in)n(v)n(o)r(cation)23 b(coun)n(ters)g(w)n(ere)h(k)n(ept)h
(for)f(eac)n(h)g(metho)r(d)h(to)f(determine)h(when)g(recompilation)450
1064 y(should)d(o)r(ccur)f([H\177)-42 b(olzle)22 b(1994;)g(H\177)-42
b(olzle)22 b(and)g(Ungar)f(1994b;)h(H\177)-42 b(olzle)22
b(and)g(Ungar)f(1994a].)33 b(They)450 1164 y(mak)n(e)27
b(an)g(in)n(teresting)g(commen)n(t)g(on)h(this)g(mec)n(hanism:)649
1339 y(.)14 b(.)g(.)g(in)23 b(the)h(course)e(of)h(our)g(exp)r(erimen)n
(ts)f(w)n(e)h(disco)n(v)n(ered)e(that)j(the)f(trigger)f(mec)n(h-)649
1439 y(anism)33 b(\(\\when"\))f(is)h(m)n(uc)n(h)g(less)f(imp)r(ortan)n
(t)h(for)f(go)r(o)r(d)g(recompilation)g(results)649 1539
y(than)c(the)g(selection)f(mec)n(hanism)g(\(\\what"\).)g([H\177)-42
b(olzle)28 b(1994,)e(page)g(38])2920 1508 y Fg(6)533
1706 y Fl(This)35 b(ma)n(y)g(come)g(from)g(the)h(sligh)n(tly)f(coun)n
(ter-in)n(tuitiv)n(e)f(notion)h(that)h(the)g(b)r(est)f(candi-)450
1805 y(date)d(for)g(recompilation)f(is)h Fk(not)40 b
Fl(necessarily)31 b(the)i(metho)r(d)g(whose)e(coun)n(ter)h(triggered)e
(the)450 1905 y(recompilation.)36 b(Ob)5 b(ject-orien)n(ted)25
b(programming)g(st)n(yle)i(tends)h(to)f(encourage)e(short)i(meth-)450
2005 y(o)r(ds;)e(a)e(b)r(etter)g(c)n(hoice)g(ma)n(y)g(b)r(e)h(to)f
(\(re\)optimize)g(the)h(metho)r(d's)g(caller)e(and)i(incorp)r(orate)d
(the)450 2104 y(frequen)n(tly-in)n(v)n(ok)n(ed)k(metho)r(d)j(inline)h
([H\177)-42 b(olzle)27 b(and)g(Ungar)g(1994b].)533 2205
y(Adaptiv)n(e)35 b(optimization)g(adds)g(the)g(complication)g(that)g(a)
g(mo)r(di\014ed)g(metho)r(d)h(ma)n(y)f(al-)450 2304 y(ready)j(b)r(e)i
(executing,)i(and)d(ha)n(v)n(e)f(information)h(\(suc)n(h)g(as)g(an)g
(activ)-5 b(ation)39 b(record)e(on)i(the)450 2404 y(stac)n(k\))27
b(that)i(dep)r(ends)g(on)e(the)i(previous)e(v)n(ersion)g(of)h(the)g(mo)
r(di\014ed)h(metho)r(d)g([H\177)-42 b(olzle)28 b(1994];)450
2504 y(this)g(m)n(ust)g(b)r(e)g(tak)n(en)f(in)n(to)g(consideration.)
1830 2473 y Fg(7)533 2604 y Fl(The)32 b(Self)g(compiler's)f(JIT)g
(optimization)g(w)n(as)g(assisted)g(b)n(y)g(the)h(in)n(tro)r(duction)g
(of)f(\\t)n(yp)r(e)450 2704 y(feedbac)n(k")k([H\177)-42
b(olzle)35 b(1994;)j(H\177)-42 b(olzle)36 b(and)f(Ungar)g(1994a].)59
b(As)36 b(a)f(program)f(executed,)k(t)n(yp)r(e)450 2803
y(information)27 b(w)n(as)g(gathered)g(b)n(y)g(the)h(run-time)g
(system,)g(a)f(straigh)n(tforw)n(ard)e(pro)r(cess.)36
b(This)450 2903 y(t)n(yp)r(e)26 b(information)g(w)n(ould)f(then)i(b)r
(e)f(a)n(v)-5 b(ailable)25 b(if)h(and)g(when)g(recompilation)f(o)r
(ccurred,)g(p)r(er-)450 3003 y(mitting)d(more)f(aggressiv)n(e)d
(optimization.)35 b(Information)20 b(gleaned)h(using)g(t)n(yp)r(e)h
(feedbac)n(k)f(w)n(as)450 3102 y(later)34 b(sho)n(wn)f(to)i(b)r(e)g
(comparable)d(with,)37 b(and)d(p)r(erhaps)g(complemen)n(tary)f(to,)k
(information)450 3202 y(from)27 b(static)h(t)n(yp)r(e)g(inference)f
([Agesen)g(and)h(H\177)-42 b(olzle)27 b(1995;)f(Agesen)h(1996].)450
3386 y Fp(2.8)41 b(Slim)27 b(Bina)n(ries)g(and)h(Ob)r(eron)450
3519 y Fl(One)21 b(problem)h(with)g(soft)n(w)n(are)e(distribution)i
(and)g(main)n(tenance)f(is)g(the)i(heterogeneous)d(com-)450
3619 y(puting)g(en)n(vironmen)n(t)e(in)i(whic)n(h)f(soft)n(w)n(are)e
(runs:)33 b(di\013eren)n(t)19 b(computer)g(arc)n(hitectures)f(require)
450 3719 y(di\013eren)n(t)i(binary)g(executables.)34
b(Ev)n(en)19 b(within)i(a)f(single)g(line)g(of)h(bac)n(kw)n
(ards-compatible)c(pro-)450 3818 y(cessors,)28 b(man)n(y)h(v)-5
b(ariations)29 b(in)g(capabilit)n(y)g(can)h(exist;)g(a)f(program)f
(statically)h(compiled)g(for)450 3918 y(the)39 b(least-common)f
(denominator)f(of)i(pro)r(cessor)d(ma)n(y)i(not)h(tak)n(e)f(full)i(adv)
-5 b(an)n(tage)37 b(of)h(the)450 4017 y(pro)r(cessor)25
b(on)j(whic)n(h)f(it)h(ev)n(en)n(tually)f(executes.)533
4118 y(In)21 b(his)g(do)r(ctoral)f(w)n(ork,)h(F)-7 b(ranz)20
b(addressed)g(these)h(problems)f(using)g(\\slim)h(binaries")e([F)-7
b(ranz)450 4218 y(1994;)49 b(F)-7 b(ranz)43 b(and)g(Kistler)f(1997].)82
b(A)43 b(slim)g(binary)g(con)n(tains)f(a)h(high-lev)n(el,)j(mac)n
(hine-)450 4317 y(indep)r(enden)n(t)d(represen)n(tation)1452
4287 y Fg(8)1529 4317 y Fl(of)f(a)f(program)f(mo)r(dule.)80
b(When)42 b(a)g(mo)r(dule)g(is)g(loaded,)450 4417 y(executable)36
b(co)r(de)f(is)h(generated)f(for)h(it)g(on-the-\015y)-7
b(,)38 b(whic)n(h)e(can)f(presumably)g(tailor)g(itself)450
4516 y(to)i(the)h(run-time)g(en)n(vironmen)n(t.)65 b(F)-7
b(ranz,)40 b(and)d(later)g(Kistler,)i(claimed)f(that)f(generating)p
450 4653 391 4 v 450 4709 a Ff(6)485 4733 y Fo(The)29
b(same)f(commen)n(t,)h(with)f(sligh)n(tly)h(di\013eren)n(t)g(w)n
(ording,)h(also)f(app)r(ears)g(in)f([H\177)-35 b(olzle)29
b(and)g(Ungar)g(1994a,)450 4816 y(page)c(328].)450 4875
y Ff(7)485 4899 y Fo(Hansen's)e(w)n(ork)h(could)h(ignore)f(this)f(p)r
(ossibilit)n(y;)g(the)i(F)n(OR)-6 b(TRAN)23 b(of)h(the)h(time)d(did)i
(not)h(allo)n(w)e(recursion,)450 4982 y(and)h(so)g(activ)l(ation)h
(records)f(and)g(a)g(stac)n(k)h(w)n(ere)e(unnecessary)i([Seb)r(esta)g
(1999].)450 5041 y Ff(8)485 5065 y Fo(This)e(represen)n(tation)i(is)e
(an)h(abstract)h(syn)n(tax)g(tree,)e(to)i(b)r(e)f(precise.)p
eop
%%Page: 9 9
9 8 bop 2060 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)157
b Fh(\001)141 b Fi(9)450 465 y Fl(co)r(de)23 b(for)g(an)f(en)n(tire)h
(mo)r(dule)h(at)f(once)f(w)n(as)g(often)i(sup)r(erior)e(to)h(the)g
(metho)r(d-at-a-time)g(strat-)450 565 y(egy)28 b(used)h(b)n(y)g
(Smalltalk)f(and)h(Self,)h(in)f(terms)f(of)h(the)h(resulting)e(co)r(de)
h(p)r(erformance)e([F)-7 b(ranz)450 665 y(1994;)26 b(Kistler)h(1999].)
533 765 y(F)-7 b(ast)31 b(co)r(de)h(generation)e(w)n(as)h(critical)f
(to)i(the)g(slim)g(binary)e(approac)n(h.)47 b(Data)32
b(structures)450 865 y(w)n(ere)24 b(delicately)i(arranged)d(to)i
(facilitate)g(this;)i(generated)d(co)r(de)h(that)h(could)f(b)r(e)h
(reused)f(w)n(as)450 964 y(noted)j(and)f(copied)g(if)h(needed)g(later,)
f(rather)g(than)g(b)r(eing)h(regenerated)e([F)-7 b(ranz)27
b(1994].)533 1065 y(F)-7 b(ranz)31 b(implemen)n(ted)h(slim)g(binaries)e
(for)h(the)h(Ob)r(eron)e(system,)j(whic)n(h)e(allo)n(ws)f(dynamic)450
1164 y(loading)d(of)i(mo)r(dules)f([Wirth)h(and)f(Gutknec)n(h)n(t)h
(1989].)38 b(Loading)27 b(and)h(generating)f(co)r(de)h(for)450
1264 y(a)j(slim)g(binary)f(w)n(as)g(not)h(faster)f(than)h(loading)f(a)h
(traditional)f(binary)g([F)-7 b(ranz)31 b(1994;)f(F)-7
b(ranz)450 1364 y(and)29 b(Kistler)g(1997],)g(but)h(F)-7
b(ranz)29 b(argued)f(that)i(this)g(w)n(ould)f(ev)n(en)n(tually)g(b)r(e)
h(the)g(case)f(as)f(the)450 1463 y(sp)r(eed)g(discrepancy)e(b)r(et)n(w)
n(een)i(pro)r(cessors)d(and)i(I/O)g(devices)g(increased)g([F)-7
b(ranz)27 b(1994].)533 1564 y(Using)h(slim)g(binaries)f(as)g(a)h
(starting)f(p)r(oin)n(t,)h(Kistler's)g(w)n(ork)e(in)n(v)n(estigated)h
(\\con)n(tin)n(uous")450 1663 y(run-time)k(optimization,)h(where)f
(parts)f(of)h(an)g(executing)g(program)e(can)i(b)r(e)h(optimized)f
Fk(ad)450 1763 y(in\014nitum)p Fl(.)38 b(He)29 b(con)n(trasts)d(this)j
(to)f(the)h(adaptiv)n(e)e(optimization)h(used)h(in)f(Self,)h(where)f
(opti-)450 1862 y(mization)f(of)h(metho)r(ds)g(w)n(ould)f(ev)n(en)n
(tually)g(cease)f([Kistler)h(1999].)533 1963 y(Of)20
b(course,)g(re-optimization)e(is)h(only)h(useful)g(if)g(a)f(new,)i(b)r
(etter,)h(solution)d(can)g(b)r(e)h(obtained;)450 2062
y(this)40 b(implies)g(that)h(con)n(tin)n(uous)d(optimization)i(is)g(b)r
(est)g(suited)g(to)g(optimizations)g(whose)450 2162 y(input)30
b(v)-5 b(aries)29 b(o)n(v)n(er)e(time)j(with)g(the)g(program's)d
(execution.)2372 2132 y Fg(9)2451 2162 y Fl(Accordingly)-7
b(,)29 b(Kistler)g(lo)r(ok)n(ed)450 2262 y(at)d(cac)n(he)f
(optimizations)g(|)h(rearranging)d(\014elds)j(in)g(a)f(structure)h
(dynamically)f(to)h(optimize)450 2361 y(a)32 b(program's)e(data-access)
g(patterns)i([Kistler)g(1999;)h(Kistler)e(and)h(F)-7
b(ranz)32 b(1999])f(|)h(and)g(a)450 2461 y(dynamic)e(v)n(ersion)f(of)i
(trace)e(sc)n(heduling,)i(whic)n(h)g(optimizes)f(based)g(on)g
(information)g(ab)r(out)450 2561 y(a)d(program's)f(con)n(trol)g(\015o)n
(w)h(during)g(execution)g([Kistler)g(1999].)533 2661
y(The)33 b(con)n(tin)n(uous)f(optimizer)g(itself)i(executes)e(in)h(the)
h(bac)n(kground,)e(as)g(a)g(separate)g(lo)n(w-)450 2761
y(priorit)n(y)38 b(thread)g(whic)n(h)h(executes)f(only)h(during)f(a)g
(program's)f(idle)i(time)h([Kistler)e(1997;)450 2860
y(Kistler)27 b(1999].)37 b(Kistler)27 b(uses)h(a)g(more)f
(sophisticated)h(metric)g(than)g(straigh)n(tforw)n(ard)d(coun-)450
2960 y(ters)31 b(to)h(determine)f(when)h(to)f(optimize,)i(and)e(observ)
n(es)f(that)i(deciding)f Fk(what)40 b Fl(to)32 b(optimize)450
3059 y(is)27 b(highly)h(optimization-sp)r(eci\014c)f([Kistler)g(1999].)
533 3160 y(An)35 b(idea)e(similar)h(to)g(con)n(tin)n(uous)f
(optimization)h(has)f(b)r(een)i(implemen)n(ted)f(for)g(Sc)n(heme.)450
3259 y(Burger)29 b([1997])f(dynamically)i(reordered)f(co)r(de)h(blo)r
(c)n(ks)f(using)h(pro\014le)g(information,)h(to)f(im-)450
3359 y(pro)n(v)n(e)39 b(co)r(de)i(lo)r(calit)n(y)f(and)g(hardw)n(are)f
(branc)n(h)h(prediction.)76 b(His)40 b(sc)n(heme)h(relied)f(on)g(the)
450 3459 y(\(cop)n(ying\))c(garbage)f(collector)h(to)h(lo)r(cate)f(p)r
(oin)n(ters)h(to)f(old)h(v)n(ersions)e(of)i(a)g(function,)j(and)450
3558 y(up)r(date)34 b(them)g(to)f(p)r(oin)n(t)h(to)f(the)h(new)n(er)e
(v)n(ersion.)53 b(This)34 b(dynamic)f(recompilation)f(pro)r(cess)450
3658 y(could)27 b(b)r(e)h(rep)r(eated)g(an)n(y)e(n)n(um)n(b)r(er)i(of)f
(times)h([Burger)e(1997,)g(page)h(70].)450 3839 y Fp(2.9)41
b(T)-7 b(emplates,)26 b(ML,)h(and)h(C)450 3973 y Fl(ML)39
b(and)g(C)f(mak)n(e)g(strange)g(b)r(edfello)n(ws,)j(but)f(the)f(same)f
(approac)n(h)f(has)i(b)r(een)g(tak)n(en)f(to)450 4072
y(dynamic)25 b(compilation)g(in)h(b)r(oth.)37 b(This)26
b(approac)n(h)d(is)j(called)f(\\staged)f(compilation,")h(where)450
4172 y(compilation)37 b(of)h(a)g(single)g(program)e(is)h(divided)i(in)n
(to)f(t)n(w)n(o)f(stages:)56 b(static)38 b(and)g(dynamic)450
4272 y(compilation.)e(Prior)26 b(to)i(run-time,)f(a)g(static)h
(compiler)f(compiles)g(\\templates,")g(essen)n(tially)450
4371 y(building)36 b(blo)r(c)n(ks)f(whic)n(h)g(are)g(pieced)h(together)
f(at)g(run-time)h(b)n(y)f(the)h(dynamic)f(compiler,)450
4471 y(whic)n(h)f(ma)n(y)g(also)f(place)h(run-time)g(v)-5
b(alues)33 b(in)n(to)h(holes)g(left)h(in)f(the)h(templates.)57
b(T)n(ypically)450 4570 y(these)35 b(templates)g(are)f(sp)r(eci\014ed)i
(b)n(y)e(user)h(annotations,)h(although)e(some)g(w)n(ork)g(has)g(b)r
(een)450 4670 y(done)27 b(on)h(deriving)e(them)j(automatically)d([Mo)r
(c)n(k)h(et)h(al.)f(1999].)533 4770 y(As)36 b(just)h(describ)r(ed,)g
(template-based)f(systems)f(arguably)f(do)i(not)g(\014t)g(our)f
(description)p 450 4902 391 4 v 450 4958 a Ff(9)485 4982
y Fo(Although,)21 b(making)e(the)h(general)h(case)f(for)f(run-time)f
(optimization,)j(he)f(discusses)f(in)n(termo)r(dule)h(optimiza-)450
5065 y(tions)k(where)g(this)f(is)g(not)i(the)f(case)h([Kistler)d
(1997].)p eop
%%Page: 10 10
10 9 bop 450 250 a Fi(10)142 b Fh(\001)158 b Fi(J.)26
b(Ayco)r(ck)450 465 y Fl(of)k(JIT)f(compilers,)h(since)g(there)f(w)n
(ould)h(app)r(ear)f(to)h(b)r(e)g(no)g(non)n(trivial)e(translation)h
(asp)r(ect.)450 565 y(Ho)n(w)n(ev)n(er,)c(templates)i(ma)n(y)f(b)r(e)i
(enco)r(ded)f(in)g(a)f(form)h(whic)n(h)g(requires)e(run-time)i
(translation)450 665 y(b)r(efore)39 b(execution,)i(or)d(the)h(dynamic)g
(compiler)f(ma)n(y)g(p)r(erform)h(run-time)f(optimizations)450
764 y(after)27 b(connecting)g(the)h(templates.)533 864
y(T)-7 b(emplates)30 b(ha)n(v)n(e)f(b)r(een)i(applied)f(to)g(\(subsets)
g(of)6 b(\))31 b(ML)g([Leone)e(and)h(Lee)g(1994;)g(Lee)g(and)450
964 y(Leone)21 b(1996;)h(Wic)n(kline)f(et)h(al.)f(1998].)34
b(They)21 b(ha)n(v)n(e)f(also)h(b)r(een)h(used)f(for)h(run-time)f(sp)r
(ecializa-)450 1064 y(tion)26 b(of)g(C)g([Consel)f(and)g(No)n(\177)-39
b(el)25 b(1996;)g(Marlet)g(et)h(al.)g(1999],)e(as)h(w)n(ell)h(as)f
(dynamic)h(extensions)450 1163 y(of)31 b(C)h([Auslander)f(et)h(al.)f
(1996;)g(Engler)g(et)g(al.)g(1996;)h(P)n(oletto)e(et)i(al.)f(1997].)47
b(One)31 b(system,)450 1263 y(Dynamo,)779 1233 y Fg(10)877
1263 y Fl(prop)r(osed)c(to)h(p)r(erform)f(staged)g(compilation)g(and)h
(dynamic)g(optimization)f(for)450 1362 y(Sc)n(heme)g(and)h(Ja)n(v)-5
b(a,)26 b(as)h(w)n(ell)h(as)e(ML)i([Leone)f(and)h(Dyb)n(vig)f(1997].)
533 1462 y(T)-7 b(emplates)36 b(aside,)i(ML)e(ma)n(y)f(b)r(e)h
(dynamically)g(compiled)g(an)n(yw)n(a)n(y)-7 b(.)60 b(In)36
b(Cardelli's)f(de-)450 1562 y(scription)27 b(of)h(his)f(ML)h(compiler,)
f(he)h(notes)649 1720 y([Compilation])40 b(is)f(rep)r(eated)g(for)h(ev)
n(ery)e(de\014nition)i(or)f(expression)f(t)n(yp)r(ed)i(b)n(y)649
1820 y(the)34 b(user.)13 b(.)h(.)g(or)32 b(fetc)n(hed)h(from)g(an)g
(external)f(\014le.)54 b(Because)32 b(of)h(the)h(in)n(teractiv)n(e)649
1919 y(use)29 b(of)g(the)h(compiler,)f(the)h(compilation)e(of)i(small)e
(phrases)g(m)n(ust)i(b)r(e)f(virtually)649 2019 y(instan)n(taneous.)36
b([Cardelli)27 b(1984,)f(page)g(209])450 2191 y Fp(2.10)40
b(Erlang)450 2324 y Fl(Erlang)33 b(is)h(a)g(functional)h(language,)g
(designed)f(for)g(use)g(in)h(large,)g(soft)g(real-time)e(systems)450
2423 y(suc)n(h)e(as)f(telecomm)n(unications)h(equipmen)n(t)g
([Armstrong)f(1997].)46 b(Johansson)29 b(et)j(al.)f([2000])450
2523 y(describ)r(e)18 b(the)i(implemen)n(tation)e(of)h(a)f(JIT)h
(compiler)f(for)g(Erlang,)h(HiPE,)f(designed)h(to)f(address)450
2623 y(p)r(erformance)27 b(problems.)533 2723 y(As)35
b(a)f(recen)n(tly-designed)g(system)g(without)i(historical)e(baggage,)g
(HiPE)g(stands)h(out)g(in)450 2822 y(that)24 b(the)h(user)f(m)n(ust)g
(explicitly)g(in)n(v)n(ok)n(e)f(the)h(JIT)g(compiler.)35
b(The)25 b(rationale)d(for)i(this)h(is)f(that)450 2922
y(it)30 b(giv)n(es)e(the)i(user)e(a)h(\014ne)h(degree)e(of)h(con)n
(trol)f(o)n(v)n(er)g(the)h(p)r(erformance/co)r(de)f(space)h(tradeo\013)
450 3021 y(that)f(mixed)g(co)r(de)f(o\013ers)g([Johansson)f(et)h(al.)h
(2000].)533 3121 y(HiPE)18 b(exercises)g(considerable)g(care)f(when)j
(p)r(erforming)e(`mo)r(de-switc)n(hes')g(bac)n(k)g(and)h(forth)450
3221 y(b)r(et)n(w)n(een)24 b(nativ)n(e)g(and)f(in)n(terpreted)h(co)r
(de.)36 b(Mo)r(de-switc)n(hes)23 b(ma)n(y)g(b)r(e)i(needed)f(at)g(the)g
(ob)n(vious)450 3321 y(lo)r(cations)34 b({)h(calls)g(and)g(returns)f({)
h(as)g(w)n(ell)g(as)f(for)h(thro)n(wn)f(exceptions.)60
b(Their)34 b(calls)h(use)450 3420 y(the)29 b(mo)r(de)f(of)h(the)f
Fk(c)l(al)t(ler)39 b Fl(rather)27 b(than)i(the)g(mo)r(de)f(of)g(the)h
(called)f(co)r(de;)h(they)g(con)n(trast)e(this)450 3520
y(to)32 b(tec)n(hniques)f(used)h(for)g(mixed)g(co)r(de)f(in)i(Lisp)e
(\([Gabriel)h(and)g(Masin)n(ter)f(1985])f(discusses)450
3619 y(mixed)e(co)r(de)f(calls)g(in)h(Lisp)f(and)h(their)f(p)r
(erformance)g(implications\).)450 3791 y Fp(2.11)40 b(Sp)r
(ecialization)27 b(and)g(O'Caml)450 3924 y Fl(O'Caml)18
b(is)g(another)f(functional)i(language,)g(and)f(can)g(b)r(e)h
(considered)e(a)h(dialect)g(of)h(ML)f([R)n(\023)-39 b(em)n(y)450
4024 y(et)29 b(al.)f(1999].)37 b(The)29 b(O'Caml)f(in)n(terpreter)f
(has)h(b)r(een)h(the)g(fo)r(cus)f(of)g(run-time)h(sp)r(ecialization)450
4124 y(w)n(ork.)533 4224 y(Piumarta)24 b(and)i(Riccardi)f([1998])f(sp)r
(ecialize)h(the)h(in)n(terpreter's)e(instructions)h(to)h(the)g(pro-)450
4323 y(gram)32 b(b)r(eing)g(run,)i(in)f(a)g(limited)g(w)n(a)n(y)-7
b(.)1699 4293 y Fg(11)1821 4323 y Fl(They)32 b(\014rst)h(dynamically)f
(translate)f(in)n(terpreted)450 4423 y(b)n(yteco)r(des)21
b(in)n(to)g(direct)h(threaded)f(co)r(de)g([Bell)h(1973],)f(then)h
(dynamically)f(com)n(bine)g(blo)r(c)n(ks)g(of)450 4522
y(instructions)26 b(together)f(in)n(to)g(new)i(`macro)d(op)r(co)r
(des,')i(mo)r(difying)g(the)h(co)r(de)f(to)g(use)f(the)i(new)450
4622 y(instructions.)43 b(This)29 b(reduces)g(the)h(o)n(v)n(erhead)e
(of)i(instruction)f(dispatc)n(h,)h(and)g(yields)f(opp)r(or-)p
450 4736 391 4 v 450 4792 a Ff(10)515 4816 y Fo(A)g(name)f(collision:)
41 b(Leone)30 b(and)g(Dyb)n(vig's)e(\\Dynamo")i(is)e(di\013eren)n(t)i
(from)c(the)k(\\Dynamo")f(of)g(Bala)g(et)450 4899 y(al.)23
b([1999].)450 4958 y Ff(11)515 4982 y Fo([Thibault)d(et)h(al.)f(2000])h
(pro)n(vide)f(an)h(alternativ)n(e)h(view)e(on)h(Piumarta)e(and)i
(Riccardi's)e(w)n(ork)h(with)h(resp)r(ect)450 5065 y(to)j(sp)r
(ecialization.)p eop
%%Page: 11 11
11 10 bop 2022 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)
157 b Fh(\001)141 b Fi(11)450 465 y Fl(tunities)32 b(for)e
(optimization)h(in)g(macro)f(op)r(co)r(des)h(whic)n(h)g(w)n(ould)f(not)
h(ha)n(v)n(e)f(b)r(een)i(p)r(ossible)e(if)450 565 y(the)e(instructions)
f(w)n(ere)f(separate)g(\(although)i(they)f(do)g(not)h(p)r(erform)f(suc)
n(h)g(optimizations\).)450 665 y(As)f(presen)n(ted,)g(their)g(tec)n
(hnique)f(do)r(es)h(not)g(tak)n(e)f(dynamic)h(execution)f(paths)h(in)n
(to)g(accoun)n(t,)450 764 y(and)35 b(they)g(note)g(that)g(it)h(is)e(b)r
(est)i(suited)f(to)g(lo)n(w-lev)n(el)e(instruction)i(sets,)i(where)d
(dispatc)n(h)450 864 y(time)28 b(is)g(a)f(relativ)n(ely)f(large)g
(factor)h(in)h(p)r(erformance.)533 964 y(A)i(more)f(general)g(approac)n
(h)f(to)i(run-time)g(sp)r(ecialization)f(is)h(tak)n(en)f(b)n(y)h
([Thibault)g(et)g(al.)450 1063 y(2000].)57 b(They)35
b(apply)g(their)f(program)f(sp)r(ecializer,)j(T)-7 b(emp)r(o)35
b([Consel)g(et)g(al.)g(1998],)g(to)f(the)450 1163 y(Ja)n(v)-5
b(a)26 b(virtual)h(mac)n(hine)g(and)h(the)g(O'Caml)f(in)n(terpreter)f
(at)i(run-time.)37 b(They)27 b(note)h(that)649 1315 y(While)i(the)h(sp)
r(eedup)f(obtained)f(b)n(y)g(sp)r(ecialization)g(is)h(signi\014can)n
(t,)f(it)h(do)r(es)g(not)649 1414 y(comp)r(ete)39 b(with)g(results)f
(obtained)h(with)g(hand-written)f(o\013-line)h(or)f(run-time)649
1514 y(compilers.)27 b([Thibault)h(et)g(al.)f(2000,)f(page)h(170])450
1665 y(But)h(later)f(state)g(that)649 1817 y(.)14 b(.)g(.)g(program)28
b(sp)r(ecialization)g(is)i(en)n(tering)f(relativ)n(e)f(maturit)n(y)-7
b(.)30 b([Thibault)g(et)g(al.)649 1916 y(2000,)c(page)h(175])450
2067 y(This)22 b(ma)n(y)f(b)r(e)h(tak)n(en)f(to)h(imply)g(that,)i(at)d
(least)h(for)f(the)h(time)h(b)r(eing,)g(program)d(sp)r(ecialization)450
2167 y(ma)n(y)e(not)g(b)r(e)h(as)f(fruitful)h(as)f(other)f(approac)n
(hes)g(to)h(dynamic)g(compilation)g(and)g(optimization.)450
2335 y Fp(2.12)40 b(Prolog)450 2468 y Fl(Prolog)27 b(systems)i
(dynamically)f(compile,)h(to)r(o,)h(although)e(the)i(execution)f(mo)r
(del)g(of)g(Prolog)450 2567 y(necessitates)35 b(use)g(of)h(sp)r
(ecialized)f(tec)n(hniques.)61 b(V)-7 b(an)36 b(Ro)n(y)f([1994])f(giv)n
(es)g(an)h(outstanding,)450 2667 y(detailed)28 b(surv)n(ey)f(of)i(the)f
(area.)38 b(One)28 b(of)g(SICStus)h(Prolog's)c(nativ)n(e)j(co)r(de)g
(compilers,)g(whic)n(h)450 2766 y(could)d(b)r(e)h(in)n(v)n(ok)n(ed)e
(and)i(ha)n(v)n(e)e(its)i(output)g(loaded)e(dynamically)-7
b(,)26 b(is)f(describ)r(ed)g(in)h([Ha)n(ygo)r(o)r(d)450
2866 y(1994].)450 3034 y Fp(2.13)40 b(Simulation,)27
b(Bina)n(ry)h(T)-7 b(ranslation,)26 b(and)h(Machine)g(Co)r(de)450
3167 y Fl(Sim)n(ulation)g(is)g(the)g(pro)r(cess)f(of)h(running)g(nativ)
n(e)f(executable)h(mac)n(hine)f(co)r(de)h(for)g(one)f(arc)n(hi-)450
3266 y(tecture)31 b(on)f(another)g(arc)n(hitecture.)1617
3236 y Fg(12)1732 3266 y Fl(Ho)n(w)g(do)r(es)h(this)g(relate)f(to)g
(JIT)g(compilation?)46 b(One)450 3366 y(of)35 b(the)h(tec)n(hniques)f
(for)g(sim)n(ulation)g(is)h(binary)e(translation;)39
b(in)c(particular,)i(w)n(e)e(fo)r(cus)g(on)450 3465 y(dynamic)26
b(binary)e(translation)h(that)h(in)n(v)n(olv)n(es)e(translating)g(from)
i(one)f(mac)n(hine)g(co)r(de)h(to)f(an-)450 3565 y(other)h(at)g
(run-time.)36 b(T)n(ypically)-7 b(,)26 b(binary)f(translators)f(are)i
(highly)g(sp)r(ecialized)f(with)i(resp)r(ect)450 3665
y(to)21 b(source)f(and)i(target;)g(researc)n(h)d(on)j(retargetable)d
(and)i(\\resourceable")d(binary)j(translators)450 3764
y(is)31 b(still)g(in)g(its)g(infancy)g([Ung)g(and)g(Cifuen)n(tes)g
(2000].)45 b(Altman,)32 b(Kaeli,)f(and)g(She\013er)g([2000])450
3864 y(has)d(a)g(go)r(o)r(d)f(discussion)h(of)g(the)h(c)n(hallenges)d
(in)n(v)n(olv)n(ed)h(in)i(binary)e(translation,)h(and)g(Cmelik)450
3964 y(and)35 b(Kepp)r(el)f([1994])f(compares)h(pre-1995)e(sim)n
(ulation)i(systems)g(in)h(detail.)58 b(Rather)35 b(than)450
4063 y(duplicating)28 b(their)f(w)n(ork,)f(w)n(e)i(will)f(tak)n(e)g(a)g
(higher-lev)n(el)f(view.)533 4163 y(Ma)n(y)35 b([1987])g(prop)r(osed)g
(that)h(sim)n(ulators)f(could)h(b)r(e)g(categorized)f(b)n(y)g(their)i
(implemen-)450 4263 y(tation)f(tec)n(hnique)h(in)n(to)f(three)h
(generations.)61 b(T)-7 b(o)37 b(this,)i(w)n(e)d(add)g(a)g(fourth)h
(generation)e(to)450 4362 y(c)n(haracterize)25 b(more)i(recen)n(t)g(w)n
(ork.)450 4514 y(\(1\))42 b(First)18 b(generation)g(sim)n(ulators)f(w)n
(ere)h(in)n(terpreters,)h(whic)n(h)g(w)n(ould)f(simply)h(in)n(terpret)g
(eac)n(h)598 4614 y(source)32 b(instruction)h(as)f(needed.)55
b(As)33 b(migh)n(t)g(b)r(e)h(exp)r(ected,)h(these)e(tended)h(to)f
(exhibit)598 4713 y(p)r(o)r(or)27 b(p)r(erformance)f(due)i(to)f(in)n
(terpretation)g(o)n(v)n(erhead.)p 450 4819 391 4 v 450
4875 a Ff(12)515 4899 y Fo(W)-6 b(e)27 b(use)f(the)h(term)e(\\sim)n
(ulate")g(in)h(preference)h(to)f(\\em)n(ulate")h(as)f(the)h(latter)f
(has)g(the)h(connotation)h(that)450 4982 y(hardw)n(are)22
b(is)f(hea)n(vily)h(in)n(v)n(olv)n(ed)g(in)f(the)i(pro)r(cess.)30
b(Ho)n(w)n(ev)n(er,)22 b(some)f(literature)h(uses)g(the)g(w)n(ords)f
(in)n(terc)n(hange-)450 5065 y(ably)-6 b(.)p eop
%%Page: 12 12
12 11 bop 450 250 a Fi(12)142 b Fh(\001)158 b Fi(J.)26
b(Ayco)r(ck)450 465 y Fl(\(2\))42 b(Second)34 b(generation)e(sim)n
(ulators)h(dynamically)h(translated)f(source)g(instructions)h(in)n(to)
598 565 y(target)26 b(instruction)i(one)f(at)g(a)h(time,)g(cac)n(hing)e
(the)i(translations)e(for)h(later)g(use.)450 689 y(\(3\))42
b(Third)25 b(generation)f(sim)n(ulators)h(impro)n(v)n(ed)f(up)r(on)i
(the)g(p)r(erformance)f(of)h(second)f(genera-)598 789
y(tion)j(sim)n(ulators)f(b)n(y)i(dynamically)f(translating)f(en)n(tire)
h(blo)r(c)n(ks)g(of)h(source)e(instructions)598 888 y(at)38
b(a)f(time.)70 b(This)38 b(in)n(tro)r(duces)f(new)i(questions)e(as)h
(to)g(what)g(should)g(b)r(e)h(translated.)598 988 y(Most)f(suc)n(h)h
(systems)g(translated)f(either)h(basic)g(blo)r(c)n(ks)f(of)h(co)r(de)g
(or)f(extended)h(basic)598 1088 y(blo)r(c)n(ks)22 b([Cmelik)i(and)f
(Kepp)r(el)h(1994],)e(re\015ecting)h(the)h(static)g(con)n(trol)e(\015o)
n(w)h(of)g(the)h(source)598 1187 y(program.)51 b(Other)32
b(static)h(translation)f(units)h(are)f(p)r(ossible:)47
b(one)33 b(anomalous)e(system,)598 1287 y(D)n(AISY,)19
b(p)r(erformed)f(page-at-a-time)f(translations)g(from)h(P)n(o)n(w)n
(erPC)e(to)i(VLIW)h(instruc-)598 1386 y(tions)27 b([Eb)r(cio\025)-42
b(glu)27 b(and)g(Altman)h(1996;)e(Eb)r(cio\025)-42 b(glu)27
b(and)g(Altman)h(1997].)450 1510 y(\(4\))42 b(What)32
b(w)n(e)g(call)h(fourth)f(generation)f(sim)n(ulators)g(expand)h(up)r
(on)h(the)g(third)f(generation)598 1610 y(b)n(y)h(dynamically)g
(translating)g(paths,)i(or)e(traces.)54 b(A)35 b(path)f(re\015ects)f
(the)h(con)n(trol)f(\015o)n(w)598 1710 y(exhibited)23
b(b)n(y)g(the)g(source)f(program)e(at)j(run-time,)h(a)f(dynamic)f
(instead)h(of)g(a)f(static)h(unit)598 1809 y(of)28 b(translation.)38
b(The)29 b(most)f(recen)n(t)g(w)n(ork)f(on)h(binary)f(translation)h(is)
g(concen)n(trated)f(on)598 1909 y(this)g(t)n(yp)r(e)h(of)g(system.)533
2066 y(F)-7 b(ourth)37 b(generation)e(sim)n(ulators)g(are)h(predominan)
n(t)g(in)h(recen)n(t)f(literature)g([Bala)g(et)h(al.)450
2166 y(1999;)g(Chen)f(et)g(al.)f(2000;)i(Dea)n(v)n(er)d(et)i(al.)f
(1999;)i(Gsc)n(h)n(wind)e(et)h(al.)f(2000;)i(Klaib)r(er)e(2000;)450
2266 y(Zheng)27 b(and)g(Thompson)g(2000].)36 b(The)27
b(structure)g(of)h(these)f(is)h(fairly)f(similar:)450
2427 y(\(1\))42 b(Pro\014led)17 b(execution.)33 b(The)19
b(sim)n(ulator's)e(e\013ort)h(should)h(b)r(e)g(concen)n(trated)e(on)h
(\\hot")g(areas)598 2527 y(of)32 b(co)r(de)g(that)g(are)f(frequen)n
(tly)h(executed.)50 b(F)-7 b(or)32 b(example,)h(initialization)f(co)r
(de)g(that)g(is)598 2626 y(executed)25 b(only)f(once)h(should)f(not)h
(b)r(e)h(translated)e(or)g(optimized.)36 b(T)-7 b(o)25
b(determine)g(whic)n(h)598 2726 y(execution)30 b(paths)h(are)e(hot,)j
(the)f(source)f(program)e(is)j(executed)g(in)g(some)f(manner)g(and)598
2826 y(pro\014le)g(information)h(is)h(gathered.)47 b(Time)32
b(in)n(v)n(ested)f(in)g(doing)g(this)h(is)f(assumed)g(to)g(b)r(e)598
2925 y(recoup)r(ed)c(ev)n(en)n(tually)-7 b(.)598 3029
y(When)37 b(source)g(and)g(target)f(arc)n(hitectures)g(are)g
(dissimilar,)j(or)d(the)i(source)e(arc)n(hitec-)598 3128
y(ture)f(is)h(uncomplicated)g(\(suc)n(h)f(as)g(a)h(RISC)g(pro)r
(cessor\))e(then)i(in)n(terpretation)f(of)g(the)598 3228
y(source)21 b(program)f(is)i(t)n(ypically)g(emplo)n(y)n(ed)f(to)h
(execute)g(the)h(source)e(program)f([Bala)i(et)g(al.)598
3328 y(1999;)27 b(Gsc)n(h)n(wind)i(et)g(al.)g(2000;)f(T)-7
b(ransmeta)28 b(Corp)r(oration)f(2001;)h(Zheng)g(and)h(Thomp-)598
3427 y(son)h(2000].)47 b(The)31 b(alternativ)n(e)f(approac)n(h,)h
(direct)g(execution,)h(is)f(b)r(est)h(summed)f(up)h(b)n(y)598
3527 y(Rosen)n(blum,)27 b(Herro)r(d,)g(Witc)n(hel,)h(and)f(Gupta)h
([1995,)e(page)h(36]:)797 3634 y(By)c(far)f(the)i(fastest)f(sim)n
(ulator)f(of)h(the)h(CPU,)f(MMU,)g(and)g(memory)g(system)797
3734 y(of)k(an)h(SGI)g(m)n(ultipro)r(cessor)e(is)h(an)g(SGI)h(m)n
(ultipro)r(cessor.)598 3841 y(In)21 b(other)h(w)n(ords,)f(when)h(the)g
(source)f(and)g(target)g(arc)n(hitectures)f(are)h(the)h(same,)g(as)g
(in)f(the)598 3941 y(case)31 b(where)h(the)h(goal)f(is)g(dynamic)h
(optimization)f(of)h(a)f(source)f(program,)h(the)h(source)598
4040 y(program)c(can)h(b)r(e)i(executed)f(directly)g(b)n(y)f(the)i
(CPU.)f(The)g(sim)n(ulator)f(regains)f(con)n(trol)598
4140 y(p)r(erio)r(dically)35 b(as)g(a)h(result)f(of)h(appropriately)f
(mo)r(difying)h(the)g(source)f(program[Chen)598 4240
y(et)27 b(al.)h(2000])e(or)g(b)n(y)i(less)f(direct)g(means)g(suc)n(h)h
(as)e(in)n(terrupts)i([Gorton)e(2001].)450 4364 y(\(2\))42
b(Hot)24 b(path)g(detection.)36 b(In)24 b(lieu)g(of)g(hardw)n(are)e
(supp)r(ort,)j(hot)f(paths)g(ma)n(y)f(b)r(e)i(detected)f(b)n(y)598
4463 y(k)n(eeping)e(coun)n(ters)g(to)h(record)f(frequency)h(of)g
(execution)g([Zheng)g(and)g(Thompson)g(2000],)598 4563
y(or)28 b(b)n(y)i(w)n(atc)n(hing)e(for)h(co)r(de)h(that)f(is)h
(structurally)e(lik)n(ely)i(to)f(b)r(e)h(hot,)g(lik)n(e)f(the)h(target)
f(of)598 4663 y(a)e(bac)n(kw)n(ards)f(branc)n(h)h([Bala)g(et)h(al.)g
(1999].)36 b(With)29 b(hardw)n(are)d(supp)r(ort,)i(the)g(program's)598
4762 y(program)c(coun)n(ter)i(can)h(b)r(e)g(sampled)f(at)h(in)n(terv)-5
b(als)26 b(to)g(detect)i(hot)e(sp)r(ots)h([Dea)n(v)n(er)e(et)i(al.)598
4862 y(1999].)598 4965 y(Some)f(other)f(considerations)g(are)g(that)h
(paths)g(ma)n(y)g(b)r(e)g(strategically)f Fk(exclude)l(d)35
b Fl(if)27 b(they)598 5065 y(are)36 b(to)r(o)h(exp)r(ensiv)n(e)g(or)g
(di\016cult)h(to)f(translate)g([Zheng)g(and)g(Thompson)g(2000],)h(and)p
eop
%%Page: 13 13
13 12 bop 2022 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)
157 b Fh(\001)141 b Fi(13)598 465 y Fl(c)n(ho)r(osing)25
b(go)r(o)r(d)h(stopping)g(p)r(oin)n(ts)g(for)g(paths)g(can)h(b)r(e)g
(as)e(imp)r(ortan)n(t)i(as)e(c)n(ho)r(osing)h(go)r(o)r(d)598
565 y(starting)j(p)r(oin)n(ts)h(in)g(terms)g(of)f(k)n(eeping)h(a)f
(manageable)g(n)n(um)n(b)r(er)g(of)h(traces)f([Gsc)n(h)n(wind)598
665 y(et)e(al.)h(2000].)450 783 y(\(3\))42 b(Co)r(de)26
b(generation)e(and)i(optimization.)36 b(Once)26 b(a)f(hot)h(path)g(has)
g(b)r(een)g(noted,)h(the)f(sim)n(u-)598 882 y(lator)e(will)i(translate)
f(it)h(in)n(to)f(co)r(de)g(for)g(the)h(target)f(arc)n(hitecture,)g(or)g
(p)r(erhaps)g(optimize)598 982 y(the)30 b(co)r(de.)46
b(The)30 b(correctness)f(of)h(the)h(translation)f(is)g(alw)n(a)n(ys)f
(at)h(issue,)h(and)f(some)g(em-)598 1081 y(pirical)d(v)n(eri\014cation)
f(tec)n(hniques)h(are)g(discussed)g(in)h([Zheng)f(and)g(Thompson)g
(2000].)450 1199 y(\(4\))42 b(\\Bail-out")19 b(mec)n(hanism.)35
b(In)22 b(the)g(case)f(of)h(dynamic)f(optimization)h(systems)f(\(where)
g(the)598 1299 y(source)i(and)i(target)f(arc)n(hitectures)f(are)h(the)h
(same\),)g(there)g(is)f(the)i(p)r(oten)n(tial)e(for)h(a)f(nega-)598
1399 y(tiv)n(e)h(impact)h(on)f(the)h(source)e(program's)f(p)r
(erformance.)35 b(A)26 b(bail-out)f(mec)n(hanism)g([Bala)598
1498 y(et)k(al.)f(1999])f(heuristically)h(tries)g(to)h(detect)g(suc)n
(h)f(a)h(problem)f(and)h(rev)n(ert)e(bac)n(k)h(to)g(the)598
1598 y(source)g(program's)f(direct)i(execution;)i(this)e(can)g(b)r(e)h
(sp)r(otted,)h(for)e(example,)g(b)n(y)g(moni-)598 1697
y(toring)d(the)i(stabilit)n(y)e(of)i(the)f(w)n(orking)f(set)h(of)g
(paths.)37 b(Suc)n(h)27 b(a)g(mec)n(hanism)g(can)f(also)g(b)r(e)598
1797 y(used)h(to)h(a)n(v)n(oid)e(handling)h(complicated)g(cases.)533
1948 y(Another)j(recurring)f(theme)i(in)f(recen)n(t)g(binary)f
(translation)h(w)n(ork)f(is)h(the)h(issue)f(of)g(hard-)450
2048 y(w)n(are)i(supp)r(ort)g(for)h(binary)f(translation,)h(esp)r
(ecially)g(for)f(translating)g(co)r(de)h(for)f(legacy)g(ar-)450
2147 y(c)n(hitectures)f(in)n(to)h(VLIW)g(co)r(de.)49
b(This)32 b(has)f(attracted)g(in)n(terest)h(b)r(ecause)f(VLIW)h(arc)n
(hitec-)450 2247 y(tures)25 b(promise)f(legacy)g(arc)n(hitecture)g
(implemen)n(tations)h(whic)n(h)g(ha)n(v)n(e)f(higher)h(p)r(erformance,)
450 2347 y(greater)e(instruction-lev)n(el)h(parallelism)g([Eb)r
(cio\025)-42 b(glu)24 b(and)h(Altman)g(1996;)g(Eb)r(cio\025)-42
b(glu)24 b(and)h(Alt-)450 2446 y(man)g(1997],)e(higher)h(clo)r(c)n(k)g
(rates)g([Altman)h(et)g(al.)f(2000;)g(Gsc)n(h)n(wind)g(et)h(al.)f
(2000],)g(and)g(lo)n(w)n(er)450 2546 y(p)r(o)n(w)n(er)k(requiremen)n
(ts)h([Klaib)r(er)f(2000].)41 b(Binary)29 b(translation)f(w)n(ork)g(in)
i(these)g(pro)r(cessors)d(is)450 2646 y(still)h(done)f(b)n(y)h(soft)n
(w)n(are)e(at)h(run-time,)h(and)f(is)h(th)n(us)g(still)g(dynamic)f
(binary)g(translation,)g(al-)450 2745 y(though)22 b(o)r(ccasionally)e
(pac)n(k)-5 b(aged)21 b(under)h(more)f(fanciful)i(names)e(to)h
(enrapture)f(v)n(en)n(ture)h(capi-)450 2845 y(talists)c([Gepp)r(ert)i
(and)e(P)n(erry)f(2000].)32 b(The)19 b(k)n(ey)f(idea)g(in)h(these)g
(systems)f(is)h(that,)i(for)d(e\016ciency)-7 b(,)450
2944 y(the)23 b(target)e(VLIW)i(should)f(pro)n(vide)f(a)h(sup)r(erset)g
(of)h(the)f(source)f(arc)n(hitecture)g([Eb)r(cio\025)-42
b(glu)22 b(and)450 3044 y(Altman)34 b(1997];)g(these)f(extra)f
(resources,)h(unseen)g(b)n(y)g(the)g(source)f(program,)h(can)f(b)r(e)i
(used)450 3144 y(b)n(y)h(the)h(binary)f(translator)f(for)h(aggressiv)n
(e)e(optimizations)i(or)g(to)h(sim)n(ulate)f(troublesome)450
3243 y(asp)r(ects)27 b(of)h(the)g(source)e(arc)n(hitecture.)450
3411 y Fp(2.14)40 b(Java)450 3544 y Fl(Ja)n(v)-5 b(a)35
b(is)h(implemen)n(ted)h(b)n(y)f(static)g(compilation)f(to)h(b)n(yteco)r
(de)g(instructions)g(for)g(the)g(Ja)n(v)-5 b(a)450 3644
y(virtual)39 b(mac)n(hine,)j(or)c(JVM.)i(Early)e(JVMs)h(w)n(ere)f(only)
h(in)n(terpreters,)i(resulting)e(in)h(less-)450 3743
y(than-stellar)26 b(p)r(erformance:)649 3895 y(In)n(terpreting)h(b)n
(yteco)r(des)g(is)g(slo)n(w.)g([Cramer)f(et)i(al.)g(1997,)d(page)i(37])
649 4047 y(Ja)n(v)-5 b(a)23 b(isn't)h(just)h(slo)n(w,)f(it's)g
Fk(r)l(e)l(al)t(ly)33 b Fl(slo)n(w,)23 b Fk(surprisingly)33
b Fl(slo)n(w.)23 b([T)n(yma)h(1998,)e(page)649 4147 y(41])533
4298 y(Regardless)28 b(of)h(ho)n(w)g(vitriolic)g(the)h(expression,)f
(the)h(message)e(w)n(as)h(that)h(Ja)n(v)-5 b(a)28 b(programs)450
4397 y(had)d(to)g(run)g(faster,)h(and)f(the)g(primary)f(means)h(lo)r
(ok)n(ed)f(to)i(for)e(accomplishing)g(this)i(w)n(as)e(JIT)450
4497 y(compilation)29 b(of)h(Ja)n(v)-5 b(a)29 b(b)n(yteco)r(des.)43
b(Indeed,)31 b(Ja)n(v)-5 b(a)28 b(brough)n(t)h(the)i(term)f
(\\just-in-time")f(in)n(to)450 4597 y(common)f(use)h(in)f(computing)h
(literature.)1798 4567 y Fg(13)1908 4597 y Fl(Unquestionably)-7
b(,)28 b(the)h(pressure)e(for)i(fast)f(Ja)n(v)-5 b(a)450
4696 y(implemen)n(tations)26 b(spurred)g(a)g(renaissance)e(in)j(JIT)f
(researc)n(h;)e(at)j(no)f(other)f(time)i(in)g(history)450
4796 y(has)g(suc)n(h)g(concen)n(trated)g(time)h(and)f(money)h(b)r(een)g
(in)n(v)n(ested)f(in)g(it.)p 450 4902 391 4 v 450 4958
a Ff(13)515 4982 y Fo(Gosling)f([2001])g(p)r(oin)n(ts)g(out)h(that)g
(the)g(term)d(\\just-in-time")h(is)g(b)r(orro)n(w)n(ed)h(from)e(man)n
(ufacturing)i(termi-)450 5065 y(nology)-6 b(,)24 b(and)g(traces)h(his)e
(o)n(wn)h(use)g(of)f(the)i(term)d(bac)n(k)j(to)f(ab)r(out)h(1993.)p
eop
%%Page: 14 14
14 13 bop 450 250 a Fi(14)142 b Fh(\001)158 b Fi(J.)26
b(Ayco)r(ck)533 465 y Fl(An)37 b(early)d(view)i(of)g(Ja)n(v)-5
b(a)35 b(JIT)h(compilation)f(is)h(giv)n(en)f(b)n(y)h(Cramer,)h(F)-7
b(riedman,)38 b(Miller,)450 565 y(Seb)r(erger,)c(Wilson,)h(and)e(W)-7
b(olczk)n(o)33 b([1997],)g(who)g(w)n(ere)g(engineers)f(at)h(Sun)h
(Microsystems,)450 665 y(the)23 b(progenitor)f(of)h(Ja)n(v)-5
b(a.)34 b(They)23 b(mak)n(e)f(the)h(observ)-5 b(ation)22
b(that)h(there)g(is)g(an)g(upp)r(er)g(b)r(ound)g(on)450
764 y(the)k(sp)r(eedup)g(ac)n(hiev)-5 b(able)26 b(b)n(y)g(JIT)g
(compilation,)h(noting)f(that)h(in)n(terpretation)f(prop)r(er)f(only)
450 864 y(accoun)n(ted)34 b(for)f(68\045)h(of)h(execution)f(time)h(in)f
(a)g(pro\014le)g(they)h(ran.)56 b(They)35 b(also)e(adv)n(o)r(cated)450
964 y(the)28 b(direct)g(use)f(of)h(JVM)g(b)n(yteco)r(des,)f(a)g(stac)n
(k-based)f(instruction)i(set,)g(as)f(an)g(in)n(termediate)450
1063 y(represen)n(tation)32 b(for)g(JIT)i(compilation)e(and)i
(optimization.)53 b(In)34 b(retrosp)r(ect,)g(this)g(is)f(a)g(mi-)450
1163 y(norit)n(y)e(viewp)r(oin)n(t;)i(most)f(later)f(w)n(ork,)g
(including)h(Sun's)f(o)n(wn)g([Sun)h(Microsystems)f(2001],)450
1262 y(in)n(v)-5 b(ariably)25 b(b)r(egan)g(b)n(y)h(con)n(v)n(erting)e
(JVM)i(co)r(de)f(in)n(to)h(a)f(register-based)f(in)n(termediate)h
(repre-)450 1362 y(sen)n(tation.)533 1462 y(The)36 b(in)n(teresting)f
(trend)h(in)g(Ja)n(v)-5 b(a)34 b(JIT)i(w)n(ork)e([Adl-T)-7
b(abatabai)35 b(et)h(al.)f(1998;)k(Bik)c(et)h(al.)450
1562 y(1999;)25 b(Burk)n(e)h(et)h(al.)g(1999;)e(Cierniak)h(and)h(Li)g
(1997;)f(Ishizaki)g(et)h(al.)g(1999;)e(Krall)h(and)g(Gra\015)450
1661 y(1997;)d(Krall)g(1998;)h(Y)-7 b(ang)23 b(et)i(al.)e(1999])f(is)i
(the)h(implicit)g(assumption)e(that)h(mere)g(translation)450
1761 y(from)34 b(b)n(yteco)r(de)g(to)g(nativ)n(e)f(co)r(de)h(is)g(not)g
(enough:)50 b(co)r(de)34 b(optimization)g(is)g(necessary)e(to)r(o.)450
1861 y(A)n(t)37 b(the)g(same)g(time,)i(this)e(w)n(ork)f(recognizes)f
(that)i(traditional)f(optimization)g(tec)n(hniques)450
1960 y(are)26 b(exp)r(ensiv)n(e,)h(and)g(lo)r(oks)g(for)f(mo)r
(di\014cations)h(to)g(optimization)g(algorithms)f(that)i(strik)n(e)e(a)
450 2060 y(balance)h(b)r(et)n(w)n(een)g(sp)r(eed)h(of)g(algorithm)e
(execution)h(and)h(sp)r(eed)g(of)f(the)h(resulting)f(co)r(de.)533
2160 y(There)42 b(ha)n(v)n(e)f(also)h(b)r(een)g(approac)n(hes)f(to)h
(Ja)n(v)-5 b(a)41 b(JIT)h(compilation)g(b)r(esides)g(the)h(usual)450
2260 y(in)n(terpret-\014rst-optimize-later.)57 b(A)36
b(compile-only)e(strategy)-7 b(,)36 b(with)g(no)f(in)n(terpreter)f
(what-)450 2359 y(so)r(ev)n(er,)k(w)n(as)f(adopted)g(b)n(y)g([Burk)n(e)
f(et)i(al.)f(1999],)h(who)f(also)g(implemen)n(ted)h(their)f(system)450
2459 y(in)30 b(Ja)n(v)-5 b(a;)29 b(impro)n(v)n(emen)n(ts)f(to)h(their)g
(JIT)h(directly)f(b)r(ene\014ted)h(their)f(system.)43
b(Agesen)29 b([1997])450 2559 y(translated)22 b(JVM)h(b)n(yteco)r(des)g
(in)n(to)f(Self)i(co)r(de,)g(to)e(lev)n(erage)f(optimizations)i
(already)e(existing)450 2658 y(in)35 b(the)g(Self)g(compiler.)58
b(Annotations)34 b(w)n(ere)g(tried)g(b)n(y)h(Azev)n(edo,)h(Nicolau,)g
(and)e(Hummel)450 2758 y([1999])21 b(to)j(shift)g(the)f(e\013ort)g(of)g
(co)r(de)g(optimization)g(prior)f(to)h(run-time:)35 b(information)23
b(needed)450 2858 y(for)g(e\016cien)n(t)h(JIT)f(optimization)h(w)n(as)f
(precomputed)g(and)h(tagged)e(on)i(to)f(b)n(yteco)r(de)h(as)f(anno-)450
2957 y(tations,)f(whic)n(h)e(w)n(ere)g(then)h(used)f(b)n(y)h(the)g(JIT)
f(system)g(to)h(assist)e(its)i(w)n(ork.)33 b(Finally)-7
b(,)22 b(Plezb)r(ert)450 3057 y(and)h(Cytron)g([1997])f(prop)r(osed)g
(and)h(ev)-5 b(aluated)24 b(the)f(idea)h(of)f(\\con)n(tin)n(uous)f
(compilation")g(for)450 3156 y(Ja)n(v)-5 b(a)30 b(in)h(whic)n(h)g(an)g
(in)n(terpreter)f(and)h(compiler)g(w)n(ould)f(execute)h(concurren)n
(tly)-7 b(,)31 b(preferably)450 3256 y(on)c(separate)f(pro)r(cessors.)
1287 3226 y Fg(14)450 3459 y Fp(3.)41 b(CLASSIFICA)-7
b(TION)29 b(OF)f(JIT)f(SYSTEMS)450 3592 y Fl(In)21 b(the)h(course)e(of)
h(surv)n(eying)e(JIT)i(w)n(ork,)g(some)g(common)g(attributes)g
(emerged.)34 b(W)-7 b(e)21 b(prop)r(ose)450 3692 y(that)28
b(JIT)f(systems)g(can)g(b)r(e)h(classi\014ed)f(according)f(to)i(three)f
(prop)r(erties.)450 3856 y(\(1\))42 b(In)n(v)n(o)r(cation.)58
b(A)36 b(JIT)f(compiler)f(is)h(explicitly)h(in)n(v)n(ok)n(ed)e(if)h
(the)h(user)f(m)n(ust)g(tak)n(e)f(some)598 3956 y(action)25
b(to)g(cause)g(compilation)g(at)g(run-time.)36 b(An)26
b(implicitly)h(in)n(v)n(ok)n(ed)d(JIT)h(compiler)g(is)598
4056 y(transparen)n(t)h(to)h(the)h(user.)450 4182 y(\(2\))42
b(Executabilit)n(y)-7 b(.)38 b(JIT)28 b(systems)g(t)n(ypically)g(in)n
(v)n(olv)n(e)e(t)n(w)n(o)i(languages:)36 b(a)28 b(source)g(language)598
4281 y(to)33 b(translate)g(from,)i(and)e(a)g(target)g(language)f(to)h
(translate)g(to)h(\(although)f(these)g(lan-)598 4381
y(guages)j(can)i(b)r(e)h(the)g(same,)h(if)f(the)g(JIT)f(system)g(is)h
(only)f(p)r(erforming)f(optimization)598 4481 y(on-the-\015y\).)52
b(W)-7 b(e)34 b(call)f(a)f(JIT)h(system)g(mono)r(executable)f(if)i(it)f
(can)g(only)f(execute)h(one)598 4580 y(of)c(these)h(languages;)f(p)r
(oly)n(executable)g(if)i(more)e(than)g(one)h(can)f(b)r(e)i(executed.)43
b(P)n(oly)n(ex-)598 4680 y(ecutable)28 b(JIT)h(systems)g(ha)n(v)n(e)e
(the)j(luxury)e(of)h(deciding)g(when)g(compiler)f(in)n(v)n(o)r(cation)g
(is)598 4780 y(w)n(arran)n(ted,)d(since)j(either)f(program)f(represen)n
(tation)f(can)j(b)r(e)g(used.)p 450 4902 391 4 v 450
4958 a Ff(14)515 4982 y Fo(As)17 b(opp)r(osed)i(to)f(the)h(ongoing)f
(optimization)g(of)f(Kistler's)f(\\con)n(tin)n(uous)k(optimization,")e
(only)g(compilation)450 5065 y(o)r(ccurred)24 b(concurren)n(tly)h
(using)f(\\con)n(tin)n(uous)h(compilation,")e(and)i(only)e(happ)r(ened)
j(once)f([Kistler)d(2001].)p eop
%%Page: 15 15
15 14 bop 2022 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)
157 b Fh(\001)141 b Fi(15)450 465 y Fl(\(3\))42 b(Concurrency)-7
b(.)41 b(This)29 b(prop)r(ert)n(y)f(c)n(haracterizes)f(ho)n(w)i(the)h
(JIT)f(compiler)g(executes,)h(rel-)598 565 y(ativ)n(e)25
b(to)h(the)g(program)e(itself.)37 b(If)26 b(program)e(execution)h
(pauses)h(under)f(its)h(o)n(wn)g(v)n(olition)598 665
y(to)i(p)r(ermit)i(compilation,)e(it)i(is)e(not)h(concurren)n(t;)f(the)
i(JIT)e(compiler)g(in)h(this)h(case)e(ma)n(y)598 764
y(b)r(e)c(in)n(v)n(ok)n(ed)e(via)h(subroutine)g(call,)h(message)e
(transmission,)i(or)e(transfer)h(of)g(con)n(trol)g(to)g(a)598
864 y(coroutine.)39 b(In)29 b(con)n(trast,)f(a)h(concurren)n(t)e(JIT)i
(compiler)f(can)g(op)r(erate)g(as)h(the)g(program)598
964 y(executes)39 b(concurren)n(tly:)61 b(in)40 b(a)g(separate)f
(thread)g(or)g(pro)r(cess,)k(ev)n(en)c(on)h(a)g(di\013eren)n(t)598
1063 y(pro)r(cessor.)533 1215 y(JIT)30 b(systems)g(that)h(function)g
(in)g(hard)f(real-time)g(ma)n(y)f(constitute)i(a)f(fourth)h
(classifying)450 1315 y(prop)r(ert)n(y)-7 b(,)29 b(but)i(there)e(seems)
h(to)g(b)r(e)g(little)g(researc)n(h)e(in)i(the)g(area)f(at)g(presen)n
(t;)i(it)f(is)g(unclear)450 1414 y(if)e(hard)f(real-time)g(constrain)n
(ts)f(p)r(ose)h(an)n(y)g(unique)h(problems)f(to)g(JIT)g(systems.)533
1514 y(Some)36 b(trends)f(are)g(apparen)n(t.)61 b(F)-7
b(or)35 b(instance,)j(implicitly)e(in)n(v)n(ok)n(ed)e(JIT)i(compilers)f
(are)450 1614 y(de\014nitely)25 b(predominan)n(t)f(in)h(recen)n(t)f(w)n
(ork.)34 b(Executabilit)n(y)24 b(v)-5 b(aries)24 b(from)g(system)h(to)f
(system,)450 1713 y(but)40 b(this)g(is)g(more)f(an)g(issue)g(of)h
(design)f(than)h(an)f(issue)h(of)f(JIT)h(tec)n(hnology)-7
b(.)71 b(W)-7 b(ork)39 b(on)450 1813 y(concurren)n(t)c(JIT)h(compilers)
g(is)g(curren)n(tly)g(only)g(b)r(eginning,)i(and)f(will)f(lik)n(ely)g
(increase)g(in)450 1912 y(imp)r(ortance)27 b(as)g(pro)r(cessor)e(tec)n
(hnology)i(ev)n(olv)n(es.)450 2099 y Fp(4.)41 b(TOOLS)28
b(F)n(OR)f(JIT)g(COMPILA)-7 b(TION)450 2232 y Fl(General,)25
b(p)r(ortable)h(to)r(ols)f(for)g(JIT)h(compilation)f(that)h(help)g
(with)h(the)f(dynamic)f(generation)450 2332 y(of)32 b(binary)f(co)r(de)
h(did)g(not)g(app)r(ear)f(un)n(til)i(relativ)n(ely)d(recen)n(tly)-7
b(.)50 b(T)-7 b(o)31 b(v)-5 b(arying)31 b(degrees,)h(these)450
2432 y(to)r(olkits)27 b(address)g(three)g(issues:)450
2584 y(\(1\))42 b(Binary)27 b(co)r(de)h(generation.)36
b(As)29 b(argued)e(in)h([Ramsey)f(and)h(F)-7 b(ern\023)-42
b(andez)28 b(1995],)e(emitting)598 2684 y(binary)j(co)r(de)i(suc)n(h)f
(as)g(mac)n(hine)g(language)f(is)i(a)f(situation)h(rife)f(with)h(opp)r
(ortunit)n(y)f(for)598 2784 y(error.)52 b(There)33 b(are)g(asso)r
(ciated)f(b)r(o)r(okk)n(eeping)h(tasks)f(to)r(o:)49 b(information)33
b(ma)n(y)g(not)g(y)n(et)598 2883 y(b)r(e)g(a)n(v)-5 b(ailable)31
b(up)r(on)j(initial)f(co)r(de)f(generation,)h(lik)n(e)f(the)i(lo)r
(cation)e(of)h(forw)n(ard)e(branc)n(h)598 2983 y(targets.)j(Once)23
b(disco)n(v)n(ered,)f(the)i(information)e(m)n(ust)i(b)r(e)g(bac)n
(kpatc)n(hed)e(in)n(to)h(the)g(appro-)598 3082 y(priate)k(lo)r
(cations.)450 3201 y(\(2\))42 b(Cac)n(he)37 b(coherence.)66
b(CPU)38 b(sp)r(eed)g(adv)-5 b(ances)37 b(ha)n(v)n(e)g(far)g(outstripp)
r(ed)i(memory)e(sp)r(eed)598 3300 y(adv)-5 b(ances)24
b(in)h(recen)n(t)g(y)n(ears)e([Hennessy)i(and)g(P)n(atterson)e(1996].)
34 b(T)-7 b(o)25 b(comp)r(ensate,)g(mo)r(d-)598 3400
y(ern)k(CPUs)h(incorp)r(orate)f(a)h(small,)g(fast)g(cac)n(he)g(memory)
-7 b(,)30 b(the)h(con)n(ten)n(ts)e(of)h(whic)n(h)h(ma)n(y)598
3500 y(get)26 b(temp)r(orarily)g(out)g(of)h(sync)f(with)i(main)e
(memory)-7 b(.)36 b(When)27 b(dynamically)f(generating)598
3599 y(co)r(de,)32 b(care)f(m)n(ust)h(b)r(e)g(tak)n(en)f(to)h(ensure)f
(that)h(the)g(cac)n(he)f(con)n(ten)n(ts)g(re\015ect)h(co)r(de)f(writ-)
598 3699 y(ten)24 b(to)g(main)g(memory)g(b)r(efore)f(execution)h(is)g
(attempted.)37 b(The)24 b(situation)g(is)g(ev)n(en)g(more)598
3799 y(complicated)e(when)g(sev)n(eral)e(CPUs)i(share)f(a)h(single)g
(memory)-7 b(.)35 b(Kepp)r(el)22 b(giv)n(es)f(a)h(detailed)598
3898 y(discussion)k([Kepp)r(el)i(1991].)450 4016 y(\(3\))42
b(Execution.)k(The)31 b(hardw)n(are)e(or)h(op)r(erating)g(system)g(ma)n
(y)g(imp)r(ose)h(restrictions)f(whic)n(h)598 4116 y(limit)g(where)g
(executable)g(co)r(de)g(ma)n(y)f(reside.)44 b(F)-7 b(or)30
b(example,)g(memory)f(earmark)n(ed)f(for)598 4216 y(data)36
b(ma)n(y)h(not)g(allo)n(w)g(execution)g(\(i.e.,)j(instruction)d(fetc)n
(hes\))h(b)n(y)f(default,)j(meaning)598 4315 y(that)27
b(co)r(de)g(could)g(b)r(e)h(generated)e(in)n(to)g(the)i(data)f(memory)
-7 b(,)26 b(but)i(not)f(executed)g(without)598 4415 y(platform-sp)r
(eci\014c)g(wrangling.)35 b(Again,)27 b(refer)g(to)g(Kepp)r(el)h([Kepp)
r(el)g(1991].)533 4567 y(Only)23 b(the)i(\014rst)e(issue)h(is)f(relev)
-5 b(an)n(t)23 b(for)h(JIT)f(compilation)g(to)h(in)n(terpreted)f
(virtual)g(mac)n(hine)450 4666 y(co)r(de)30 b(|)f(in)n(terpreters)g
(don't)h(directly)f(execute)h(the)g(co)r(de)f(they)h(in)n(terpret)f(|)h
(but)g(there)g(is)450 4766 y(no)d(reason)e(wh)n(y)i(JIT)f(compilation)h
(to)r(ols)f(cannot)g(b)r(e)i(useful)f(for)g(generation)e(of)i
(non-nativ)n(e)450 4866 y(co)r(de)g(as)g(w)n(ell.)533
4965 y(T)-7 b(able)34 b(1)f(giv)n(es)g(a)g(comparison)f(of)i(the)g(to)r
(olkits.)55 b(In)34 b(addition)g(to)f(indicating)h(ho)n(w)f(w)n(ell)450
5065 y(the)j(to)r(olkits)g(supp)r(ort)g(the)g(three)g(areas)e(ab)r(o)n
(v)n(e,)j(w)n(e)f(ha)n(v)n(e)f(added)h(t)n(w)n(o)f(extra)g(categories.)
p eop
%%Page: 16 16
16 15 bop 450 250 a Fi(16)142 b Fh(\001)158 b Fi(J.)26
b(Ayco)r(ck)1521 441 y Fo(Binary)1521 524 y(Co)r(de)53
b(Gen-)1521 607 y(eration)1981 441 y(Cac)n(he)65 b(Co-)1981
524 y(herence)2440 441 y(Execution)93 b(Abstract)2840
524 y(In)n(terface)3240 441 y(Input)500 690 y([Engler)23
b(1996])617 b Fj(\017)425 b(\017)f(\017)365 b(\017)g
Fo(ad)24 b(ho)r(c)500 773 y([Engler)f(and)h(Pro)r(ebsting)g(1994])124
b Fj(\017)425 b(\017)f(\017)365 b(\017)g Fo(tree)500
856 y([F)-6 b(raser)23 b(and)h(Pro)r(ebsting)g(1999])135
b Fj(\017)425 b(\017)f(\017)365 b(\017)g Fo(p)r(ost\014x)500
939 y([Kepp)r(el)23 b(1991])1061 b Fj(\017)424 b(\017)365
b(\017)g Fo(n/a)500 1022 y([Ramsey)22 b(and)j(F)-6 b(ern\023)-35
b(andez)25 b(1995])100 b Fj(\017)1684 b Fo(ad)24 b(ho)r(c)1354
1201 y(T)-6 b(able)25 b(1.)70 b(Comparison)23 b(of)g(JIT)h(to)r
(olkits.)450 1398 y Fl(First,)41 b(an)e(\\abstract)e(in)n(terface")h
(is)g(one)h(that)g(is)f(arc)n(hitecture-indep)r(enden)n(t.)70
b(Use)39 b(of)f(a)450 1498 y(to)r(olkit's)30 b(abstract)e(in)n(terface)
i(implies)g(that)g(v)n(ery)f(little,)i(if)f(an)n(y)-7
b(,)30 b(of)g(the)g(user's)f(co)r(de)h(needs)450 1598
y(mo)r(di\014cation)c(in)h(order)e(to)i(use)f(a)g(new)h(platform.)36
b(The)27 b(dra)n(wbac)n(ks)d(are)i(that)g(arc)n(hitecture-)450
1697 y(dep)r(enden)n(t)40 b(op)r(erations)d(lik)n(e)i(register)e(allo)r
(cation)h(ma)n(y)g(b)r(e)h(di\016cult,)k(and)c(the)g(mapping)450
1797 y(from)24 b(abstract)e(to)i(actual)g(mac)n(hine)f(ma)n(y)g(b)r(e)h
(sub)r(optimal,)h(suc)n(h)f(as)f(a)g(mapping)h(from)g(RISC)450
1897 y(abstraction)i(to)i(CISC)f(mac)n(hinery)-7 b(.)533
1996 y(Second,)42 b(\\input")e(refers)e(to)i(the)g(structure,)i(if)e
(an)n(y)-7 b(,)42 b(of)d(the)h(input)g(exp)r(ected)g(b)n(y)f(the)450
2096 y(to)r(olkit.)j(With)30 b(resp)r(ect)g(to)f(JIT)g(compilation,)g
(more)g(complicated)g(input)h(structures)f(tak)n(e)450
2196 y(more)j(time)i(and)e(space)h(for)f(the)h(user)g(to)f(pro)r(duce)h
(and)g(the)g(to)r(olkit)g(to)g(consume)f([Engler)450
2295 y(1996].)533 2395 y(Using)j(a)f(to)r(ol)h(ma)n(y)f(solv)n(e)g
(some)g(problems)g(but)i(in)n(tro)r(duce)e(others.)58
b(T)-7 b(o)r(ols)34 b(for)h(binary)450 2495 y(co)r(de)40
b(generation)f(help)h(a)n(v)n(oid)e(man)n(y)i(errors)e(compared)h(to)h
(man)n(ually)f(emitting)i(binary)450 2594 y(co)r(de.)52
b(These)32 b(to)r(ols,)h(ho)n(w)n(ev)n(er,)f(require)f(detailed)i(kno)n
(wledge)e(of)i(binary)e(instruction)i(for-)450 2694 y(mats)k(whose)g
(sp)r(eci\014cation)g(ma)n(y)g(itself)h(b)r(e)g(prone)f(to)g(error.)64
b(Engler)37 b(and)g(Hsieh)h([2000])450 2793 y(presen)n(t)27
b(a)g(\\metato)r(ol")f(that)h(can)g(automatically)f(deriv)n(e)h(these)g
(instruction)g(enco)r(dings)g(b)n(y)450 2893 y(rep)r(eatedly)g
(querying)g(the)h(existing)f(system)g(assem)n(bler)f(with)i(v)-5
b(arying)27 b(inputs.)450 3080 y Fp(5.)41 b(CONCLUSION)450
3213 y Fl(Dynamic,)34 b(or)e(just-in-time,)i(compilation)e(is)h(an)f
(old)h(implemen)n(tation)f(tec)n(hnique)h(with)g(a)450
3313 y(fragmen)n(ted)c(history)-7 b(.)44 b(By)30 b(collecting)f(this)i
(historical)e(information)g(together,)h(w)n(e)g(hop)r(e)g(to)450
3413 y(shorten)d(the)h(v)n(o)n(y)n(age)d(of)i(redisco)n(v)n(ery)-7
b(.)450 3631 y Fc(A)n(CKNO)n(WLEDGMENTS)450 3747 y Fl(Thanks)31
b(to)g(Nigel)h(Horsp)r(o)r(ol,)g(Shannon)f(Jaeger,)g(and)g(Mik)n(e)g
(Zastre,)h(who)f(pro)r(ofread)f(and)450 3847 y(commen)n(ted)23
b(on)f(drafts)h(of)f(this)h(pap)r(er.)35 b(Commen)n(ts)23
b(from)f(the)h(anon)n(ymous)f(referees)f(help)r(ed)450
3946 y(impro)n(v)n(e)35 b(the)j(presen)n(tation)d(as)h(w)n(ell.)65
b(Also,)39 b(thanks)d(to)h(Ric)n(k)f(Gorton,)j(James)d(Gosling,)450
4046 y(Thomas)29 b(Kistler,)h(Ralph)h(Mauriello,)e(and)h(Jim)h(Mitc)n
(hell)f(for)g(supplying)g(historical)f(infor-)450 4146
y(mation)38 b(and)g(clari\014cations.)67 b(Ev)n(elyn)37
b(Duesterw)n(ald's)g(PLDI)h(2000)e(tutorial)i(notes)g(w)n(ere)450
4245 y(helpful)28 b(in)g(preparing)e(Section)i(2.9.)450
4432 y Fc(REFERENCES)531 4549 y Fb(Abrams,)f(P.)g(S.)70
b Fo(1970.)97 b Fm(A)n(n)27 b(APL)g(Machine)p Fo(.)e(Ph.)g(D.)g
(thesis,)h(Stanford)g(Univ)n(ersit)n(y)-6 b(.)25 b(SLA)n(C)g(Rep)r(ort)
655 4632 y(114.)531 4724 y Fb(Adl-T)-6 b(aba)l(t)l(abai,)26
b(A.-R.,)i(Cierniak,)g(M.,)g(Lueh,)f(G.-Y.,)h(P)-6 b(arikh,)28
b(V.)f(M.,)h(and)f(Stichnoth,)g(J.)g(M.)655 4807 y Fo(1998.)91
b(F)-6 b(ast,)21 b(e\013ectiv)n(e)h(co)r(de)f(generation)g(in)f(a)g
(just-in-time)e(Ja)n(v)l(a)j(compiler.)d(In)j Fm(PLDI)h('98)29
b Fo(\(1998\),)655 4890 y(pp.)24 b(280{290.)531 4982
y Fb(A)n(gesen,)k(O.)70 b Fo(1996.)97 b Fm(Concr)l(ete)28
b(T)-5 b(yp)l(e)27 b(Infer)l(enc)l(e:)37 b(Delivering)26
b(Obje)l(ct-Oriente)l(d)g(Applic)l(ations)p Fo(.)h(Ph.)655
5065 y(D.)c(thesis,)h(Stanford)g(Univ)n(ersit)n(y)-6
b(.)23 b(Also)g(as)h(SMLI)g(TR-96-52,)f(Sun)h(Microsystems,)e(Jan)n
(uary)i(1996.)p eop
%%Page: 17 17
17 16 bop 2022 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)
157 b Fh(\001)141 b Fi(17)531 465 y Fb(A)n(gesen,)20
b(O.)71 b Fo(1997.)89 b(Design)18 b(and)h(implemen)n(tation)e(of)g
(Pep,)i(a)g(Ja)n(v)l(a)f(just-in-time)e(translator.)i
Fm(The)l(ory)655 549 y(and)27 b(Pr)l(actic)l(e)f(of)f(Obje)l(ct)g
(Systems)k(3)p Fo(,)23 b(2,)h(127{155.)531 647 y Fb(A)n(gesen,)c(O.)e
(and)g(H)1105 641 y(\177)1102 647 y(olzle,)j(U.)71 b
Fo(1995.)88 b(T)n(yp)r(e)18 b(feedbac)n(k)g(vs.)e(concrete)j(t)n(yp)r
(e)f(inference:)28 b(A)16 b(comparison)655 730 y(of)24
b(optimization)h(tec)n(hniques)h(for)d(ob)t(ject-orien)n(ted)j
(languages.)f(In)g Fm(OOPSLA)h('95)34 b Fo(\(1995\),)26
b(pp.)e(91{)655 813 y(107.)531 912 y Fb(Al)l(tman,)j(E.,)i(Gschwind,)g
(M.,)f(Sa)l(tha)l(ye,)f(S.,)h(K)n(osonocky,)h(S.,)f(Bright,)h(A.,)f
(Fritts,)i(J.,)e(Led)o(ak,)655 995 y(P.,)d(Appenzeller,)f(D.,)g(A)n
(gricola,)g(C.,)h(and)e(Filan,)h(Z.)71 b Fo(2000.)93
b(BO)n(A:)21 b(The)h(arc)n(hitecture)i(of)e(a)655 1078
y(binary)i(translation)g(pro)r(cessor.)f(T)-6 b(ec)n(hnical)25
b(Rep)r(ort)f(R)n(C)g(21665,)g(IBM)g(Researc)n(h)g(Division.)531
1177 y Fb(Al)l(tman,)d(E.)h(R.,)h(Kaeli,)f(D.,)h(and)e(Sheffer,)g(Y.)71
b Fo(2000.)91 b(W)-6 b(elcome)20 b(to)g(the)h(opp)r(ortunities)g(of)f
(binary)655 1260 y(translation.)k Fm(IEEE)j(Computer)32
b(33)p Fo(,)24 b(3)f(\(Marc)n(h\),)h(40{45.)531 1359
y Fb(Armstr)o(ong,)g(J.)71 b Fo(1997.)95 b(The)24 b(dev)n(elopmen)n(t)g
(of)g(Erlang.)f(In)h Fm(ICFP)j('97)33 b Fo(\(1997\),)25
b(pp.)e(196{203.)531 1458 y Fb(A)n(uslander,)30 b(J.,)g(Philipose,)h
(M.,)f(Chambers,)f(C.,)h(Eggers,)g(S.)f(J.,)h(and)e(Bershad,)j(B.)e(N.)
71 b Fo(1996.)655 1541 y(F)-6 b(ast,)24 b(e\013ectiv)n(e)i(dynamic)d
(compilation.)g(In)h Fm(PLDI)h('96)34 b Fo(\(1996\),)25
b(pp.)e(149{159.)531 1640 y Fb(Azevedo,)38 b(A.,)f(Nicola)o(u,)f(A.,)h
(and)e(Hummel,)h(J.)70 b Fo(1999.)104 b(Ja)n(v)l(a)35
b(annotation-a)n(w)n(are)g(just-in-time)655 1723 y(\(AJIT\))25
b(compilation)e(system.)g(In)h Fm(JA)-7 b(V)g(A)25 b('99)33
b Fo(\(1999\),)25 b(pp.)f(142{151.)531 1822 y Fb(Bala,)h(V.,)h(Duester)
-6 b(w)g(ald,)27 b(E.,)f(and)f(Banerjia,)h(S.)70 b Fo(1999.)95
b(T)-6 b(ransparen)n(t)25 b(dynamic)e(optimization.)655
1905 y(T)-6 b(ec)n(hnical)25 b(Rep)r(ort)f(HPL-1999-77,)g(Hewlett-P)n
(ac)n(k)l(ard.)531 2004 y Fb(Bar)l(tlett,)c(J.)70 b Fo(1992.)88
b Fm(F)-5 b(amiliar)21 b(Quotations)h Fo(\(16)2008 1980
y Fa(th)2090 2004 y Fo(ed.\).)17 b(Little,)h(Bro)n(wn)f(and)g(Compan)n
(y)-6 b(.)16 b(J.)h(Kaplan,)655 2087 y(editor.)531 2186
y Fb(Bell,)25 b(J.)g(R.)71 b Fo(1973.)95 b(Threaded)25
b(co)r(de.)f Fm(Commun.)j(A)n(CM)34 b(16)p Fo(,)24 b(6)f(\(June\),)i
(370{372.)531 2285 y Fb(Bentley,)32 b(J.)70 b Fo(1988.)101
b(Little)29 b(languages.)h(In)g Fm(Mor)l(e)h(Pr)l(o)l(gr)l(amming)i(Pe)
l(arls)5 b Fo(,)32 b(pp.)d(83{100.)h(Addison-)655 2368
y(W)-6 b(esley)g(.)531 2467 y Fb(Bik,)24 b(A.)f(J.)f(C.,)i(Girkar,)f
(M.,)h(and)f(Ha)o(ghigha)l(t,)e(M.)h(R.)71 b Fo(1999.)93
b(Exp)r(eriences)22 b(with)g(Ja)n(v)l(a)g(JIT)g(opti-)655
2550 y(mization.)i(In)i Fm(Innovative)h(A)n(r)l(chite)l(ctur)l(e)g(for)
g(F)-5 b(utur)l(e)27 b(Gener)l(ation)g(High-Performanc)l(e)g(Pr)l(o)l
(c)l(essors)655 2633 y(and)g(Systems)h Fo(\(1999\),)d(pp.)f(87{94.)h
(IEEE.)531 2732 y Fb(Br)o(o)o(wn,)i(P.)h(J.)71 b Fo(1976.)97
b(Thro)n(w-a)n(w)n(a)n(y)26 b(compiling.)e Fm(Softwar)l(e)29
b(|)e(Pr)l(actic)l(e)h(and)h(Exp)l(erienc)l(e)i(6)p Fo(,)c(423{)655
2815 y(434.)531 2914 y Fb(Br)o(o)o(wn,)e(P.)g(J.)71 b
Fo(1990.)95 b Fm(Writing)25 b(Inter)l(active)g(Compilers)i(and)f
(Interpr)l(eters)p Fo(.)d(Wiley)-6 b(.)531 3012 y Fb(Bur)o(ger,)23
b(R.)g(G.)71 b Fo(1997.)93 b Fm(E\016cient)23 b(Compilation)i(and)g(Pr)
l(o\014le-Driven)f(Dynamic)g(R)l(e)l(c)l(ompilation)i(in)655
3095 y(Scheme)p Fo(.)e(Ph.)f(D.)g(thesis,)g(Indiana)i(Univ)n(ersit)n(y)
-6 b(.)531 3194 y Fb(Burke,)29 b(M.)f(G.,)g(Choi,)h(J.-D.,)g(Fink,)g
(S.,)g(Gr)o(o)o(ve,)f(D.,)h(Hind,)g(M.,)g(Sarkar,)f(V.,)h(Serrano,)f
(M.)g(J.,)655 3277 y(Sreedhar,)h(V.)f(C.,)h(and)f(Sriniv)-6
b(asan,)28 b(H.)71 b Fo(1999.)98 b(The)27 b(Jalap)r(e)r(~)-37
b(no)28 b(dynamic)e(optimizing)g(com-)655 3360 y(piler)d(for)g(Ja)n(v)l
(a.)h(In)g Fm(JA)-7 b(V)g(A)25 b('99)34 b Fo(\(1999\),)25
b(pp.)e(129{141.)531 3459 y Fb(Cardelli,)39 b(L.)71 b
Fo(1984.)106 b(Compiling)33 b(a)h(functional)h(language.)h(In)f
Fm(1984)i(Symp)l(osium)g(on)f(Lisp)g(and)655 3542 y(F)-5
b(unctional)27 b(Pr)l(o)l(gr)l(amming)k Fo(\(1984\),)26
b(pp.)d(208{217.)531 3641 y Fb(Chambers,)g(C.)71 b Fo(1992.)94
b Fm(The)24 b(Design)g(and)h(Implementation)g(of)g(the)f(Self)g
(Compiler,)h(an)g(Optimizing)655 3724 y(Compiler)g(for)e(Obje)l
(ct-Oriente)l(d)f(Pr)l(o)l(gr)l(amming)k(L)l(anguages)p
Fo(.)21 b(Ph.)g(D.)g(thesis,)g(Stanford)h(Univ)n(ersit)n(y)-6
b(.)531 3823 y Fb(Chambers,)28 b(C.)g(and)g(Ungar,)g(D.)71
b Fo(1989.)97 b(Customization:)37 b(Optimizing)26 b(compiler)f(tec)n
(hnology)j(for)655 3906 y(Self,)22 b(a)h(dynamically-t)n(yp)r(ed)g(ob)t
(ject-orien)n(ted)h(programming)c(language.)j(In)g Fm(PLDI)i('89)32
b Fo(\(1989\),)24 b(pp.)655 3989 y(146{160.)531 4088
y Fb(Chambers,)19 b(C.)g(and)f(Ungar,)h(D.)71 b Fo(1990.)88
b(Iterativ)n(e)18 b(t)n(yp)r(e)g(analysis)f(and)g(extended)i(message)e
(splitting:)655 4171 y(Optimizing)i(dynamically-t)n(yp)r(ed)g(ob)t
(ject-orien)n(ted)i(programs.)d(In)i Fm(PLDI)h('90)29
b Fo(\(1990\),)22 b(pp.)d(150{164.)531 4270 y Fb(Chambers,)27
b(C.)g(and)h(Ungar,)f(D.)70 b Fo(1991.)97 b(Making)26
b(pure)g(ob)t(ject-orien)n(ted)h(languages)g(practical.)f(In)655
4353 y Fm(OOPSLA)f('91)33 b Fo(\(1991\),)25 b(pp.)f(1{15.)531
4452 y Fb(Chambers,)40 b(C.,)g(Ungar,)g(D.,)h(and)c(Lee,)k(E.)71
b Fo(1989.)107 b(An)36 b(e\016cien)n(t)h(implemen)n(tation)f(of)f
(Self,)k(a)655 4535 y(dynamically-t)n(yp)r(ed)29 b(ob)t(ject-orien)n
(ted)h(programming)c(language)j(based)h(on)e(protot)n(yp)r(es.)i(In)f
Fm(OOP-)655 4618 y(SLA)c('89)34 b Fo(\(1989\),)25 b(pp.)e(49{70.)531
4717 y Fb(Chen,)35 b(W.-K.,)i(Lerner,)f(S.,)f(Chaiken,)h(R.,)g(and)d
(Gillies,)j(D.)e(M.)70 b Fo(2000.)104 b(Mo)t(jo:)47 b(A)32
b(dynamic)655 4800 y(optimization)d(system.)e(In)i Fm(Thir)l(d)j(A)n
(CM)e(Workshop)i(on)e(F)-5 b(e)l(e)l(db)l(ack-dir)l(e)l(cte)l(d)32
b(and)f(Dynamic)f(Opti-)655 4883 y(mization)d(\(FDDO-3\))e
Fo(\(Decem)n(b)r(er)f(2000\).)531 4982 y Fb(Cierniak,)j(M.)f(and)g(Li,)
h(W.)71 b Fo(1997.)97 b(Briki:)32 b(an)25 b(optimizing)f(Ja)n(v)l(a)i
(compiler.)d(In)j Fm(Pr)l(o)l(c)l(e)l(e)l(dings)i(IEEE)655
5065 y(COMPCON)d('97)33 b Fo(\(1997\),)25 b(pp.)f(179{184.)p
eop
%%Page: 18 18
18 17 bop 450 250 a Fi(18)142 b Fh(\001)158 b Fi(J.)26
b(Ayco)r(ck)531 465 y Fb(Cmelik,)32 b(B.)f(and)f(Keppel,)j(D.)71
b Fo(1994.)100 b(Shade:)43 b(A)29 b(fast)g(instruction-set)h(sim)n
(ulator)d(for)i(execution)655 549 y(pro\014ling.)e(In)g
Fm(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)e(the)g(1994)h(Confer)l(enc)l(e)f
(on)g(Me)l(asur)l(ement)h(and)f(Mo)l(deling)h(of)f(Com-)655
632 y(puter)d(Systems)j Fo(\(1994\),)c(pp.)e(128{137.)531
726 y Fb(Consel,)d(C.,)f(Hornof,)g(L.,)h(Marlet,)f(R.,)h(Muller,)f(G.,)
g(Thiba)o(ul)l(t,)e(S.,)i(V)n(olanschi,)h(E.-N.,)g(La)-6
b(w)g(all,)655 809 y(J.,)31 b(and)f(No)o(y)1055 803 y(\023)1055
809 y(e,)h(J.)71 b Fo(1998.)99 b(T)-6 b(emp)r(o:)41 b(Sp)r(ecializing)
29 b(systems)f(applications)h(and)g(b)r(ey)n(ond.)h Fm(A)n(CM)655
892 y(Computing)d(Surveys)h(30)p Fo(,)c(3es)g(\(Sept.\),)h(5pp.)531
986 y Fb(Consel,)36 b(C.)d(and)g(No)1182 980 y(\177)1182
986 y(el,)j(F.)71 b Fo(1996.)103 b(A)31 b(general)h(approac)n(h)h(for)e
(run-time)f(sp)r(ecialization)j(and)f(its)655 1069 y(application)25
b(to)f(C.)f(In)h Fm(POPL)i('96)33 b Fo(\(1996\),)25 b(pp.)f(145{156.)
531 1164 y Fb(Cramer,)36 b(T.,)g(Friedman,)g(R.,)h(Miller,)f(T.,)h
(Seber)o(ger,)d(D.,)j(Wilson,)g(R.,)g(and)c(W)n(olczk)o(o,)38
b(M.)655 1247 y Fo(1997.)95 b(Compiling)22 b(Ja)n(v)l(a)j(just)e(in)h
(time.)e Fm(IEEE)27 b(Micr)l(o)h(17)p Fo(,)c(3)g(\(Ma)n(y/June\),)h
(36{43.)531 1341 y Fb(D)n(akin,)19 b(R.)g(J.)f(and)g(Poole,)j(P.)d(C.)
71 b Fo(1973.)88 b(A)17 b(mixed)e(co)r(de)j(approac)n(h.)g
Fm(The)h(Computer)h(Journal)25 b(16)p Fo(,)17 b(3,)655
1424 y(219{222.)531 1518 y Fb(D)n(a)-6 b(wson,)23 b(J.)f(L.)71
b Fo(1973.)91 b(Com)n(bining)20 b(in)n(terpretiv)n(e)h(co)r(de)g(with)f
(mac)n(hine)g(co)r(de.)h Fm(The)i(Computer)g(Jour-)655
1601 y(nal)31 b(16)p Fo(,)24 b(3,)f(216{219.)531 1696
y Fb(Dea)-6 b(ver,)31 b(D.,)g(Gor)l(ton,)g(R.,)h(and)e(R)n(ubin,)h(N.)
70 b Fo(1999.)100 b(Wiggins/Redstone:)43 b(An)29 b(on-line)f(program)
655 1779 y(sp)r(ecializer.)23 b(In)i Fm(Pr)l(o)l(c)l(e)l(e)l(dings)i
(IEEE)g(Hot)f(Chips)g(XI)g(Confer)l(enc)l(e)j Fo(\(August)c(1999\).)531
1873 y Fb(Deutsch,)f(L.)f(P.)g(and)f(Schiffman,)f(A.)i(M.)71
b Fo(1984.)92 b(E\016cien)n(t)22 b(implemen)n(tation)e(of)h(the)h
(Smalltalk-80)655 1956 y(system.)h(In)h Fm(POPL)i('84)g(Pr)l(o)l(c)l(e)
l(e)l(dings)31 b Fo(\(1984\),)25 b(pp.)f(297{302.)531
2050 y Fb(Dieckmann,)37 b(S.)e(and)h(H)1268 2044 y(\177)1265
2050 y(olzle,)j(U.)71 b Fo(1997.)105 b(The)34 b(space)h(o)n(v)n(erhead)
h(of)d(customization.)i(T)-6 b(ec)n(hnical)655 2133 y(Rep)r(ort)24
b(TR)n(CS)g(97-21)g(\(Decem)n(b)r(er\),)g(Univ)n(ersit)n(y)g(of)f
(California)f(at)j(San)n(ta)g(Barbara.)531 2228 y Fb(Ebcio)723
2222 y(\025)720 2228 y(glu,)g(K.)g(and)g(Al)l(tman,)f(E.)i(R.)71
b Fo(1996.)95 b(D)n(AISY:)23 b(Dynamic)g(compilation)g(for)g(100\045)h
(arc)n(hitec-)655 2311 y(tural)g(compatibilit)n(y)-6
b(.)23 b(T)-6 b(ec)n(hnical)24 b(Rep)r(ort)h(R)n(C)e(20538,)i(IBM)e
(Researc)n(h)i(Division.)531 2405 y Fb(Ebcio)723 2399
y(\025)720 2405 y(glu,)k(K.)f(and)h(Al)l(tman,)f(E.)h(R.)71
b Fo(1997.)98 b(Daisy:)37 b(Dynamic)26 b(compilation)h(for)f(100\045)h
(arc)n(hitec-)655 2488 y(tural)d(compatibilit)n(y)-6
b(.)23 b(In)h Fm(ISCA)i('97)33 b Fo(\(1997\),)25 b(pp.)f(26{37.)531
2582 y Fb(Engler,)19 b(D.)f(R.)70 b Fo(1996.)88 b(V)n(CODE:)15
b(A)g(retargetable,)k(extensible,)f(v)n(ery)f(fast)f(dynamic)f(co)r(de)
i(generation)655 2665 y(system.)23 b(In)h Fm(PLDI)i('96)33
b Fo(\(1996\),)25 b(pp.)f(160{170.)531 2760 y Fb(Engler,)39
b(D.)e(R.)g(and)g(Hsieh,)j(W.)d(C.)71 b Fo(2000.)107
b(DERIVE:)35 b(A)g(to)r(ol)h(that)g(automatically)g(rev)n(erse-)655
2843 y(engineers)25 b(instruction)f(enco)r(dings.)h(In)f
Fm(A)n(CM)i(SIGPLAN)g(Workshop)i(on)e(Dynamic)f(and)i(A)l(daptive)655
2926 y(Compilation)h(and)e(Optimization)g(\(Dynamo)g('00\))h
Fo(\(2000\),)e(pp.)f(12{22.)531 3020 y Fb(Engler,)g(D.)h(R.,)g(Hsieh,)g
(W.)g(C.,)h(and)e(Kaashoek,)h(M.)f(F.)71 b Fo(1996.)95
b(`C:)22 b(A)g(language)j(for)d(high-lev)n(el,)655 3103
y(e\016cien)n(t,)37 b(and)d(mac)n(hine-indep)r(enden)n(t)i(dynamic)d
(co)r(de)h(generation.)h(In)f Fm(POPL)h('96)43 b Fo(\(1996\),)38
b(pp.)655 3186 y(131{144.)531 3280 y Fb(Engler,)d(D.)e(R.)g(and)g(Pr)o
(oebsting,)i(T.)e(A.)71 b Fo(1994.)103 b(DCG:)31 b(An)h(e\016cien)n(t,)
i(retargetable)f(dynamic)655 3363 y(co)r(de)25 b(generation)g(system.)e
(In)h Fm(ASPLOS)h(VI)34 b Fo(\(1994\),)25 b(pp.)f(263{272.)531
3458 y Fb(Franz,)g(M.)70 b Fo(1994.)93 b Fm(Co)l(de-Gener)l(ation)25
b(On-the-Fly:)31 b(A)23 b(Key)g(to)h(Portable)g(Softwar)l(e)p
Fo(.)f(Ph.)e(D.)g(thesis,)655 3541 y(ETH)j(Zuric)n(h.)531
3635 y Fb(Franz,)h(M.)g(and)g(Kistler,)h(T.)71 b Fo(1997.)95
b(Slim)22 b(binaries.)h Fm(CA)n(CM)33 b(40)p Fo(,)24
b(12)g(\(Decem)n(b)r(er\),)g(87{94.)531 3729 y Fb(Fraser,)30
b(C.)f(W.)h(and)f(Pr)o(oebsting,)g(T.)g(A.)71 b Fo(1999.)99
b(Finite-state)28 b(co)r(de)h(generation.)f(In)g Fm(PLDI)h('99)655
3812 y Fo(\(1999\),)c(pp.)f(270{280.)531 3907 y Fb(Gabriel,)d(R.)h(P.)g
(and)g(Masinter,)g(L.)g(M.)71 b Fo(1985.)91 b Fm(Performanc)l(e)24
b(and)f(Evaluation)h(of)e(Lisp)g(Systems)p Fo(.)655 3990
y(MIT)i(Press.)531 4084 y Fb(Gepper)l(t,)19 b(L.)g(and)f(Perr)l(y,)i
(T.)f(S.)70 b Fo(2000.)88 b(T)-6 b(ransmeta's)16 b(magic)g(sho)n(w.)g
Fm(IEEE)21 b(Sp)l(e)l(ctrum)i(37)p Fo(,)17 b(5)g(\(Ma)n(y\),)655
4167 y(26{33.)531 4261 y Fb(Goldber)o(g,)i(A.)g(and)f(R)n(obson,)j(D.)
71 b Fo(1985.)88 b Fm(Smal)t(ltalk-80:)31 b(The)20 b(L)l(anguage)g(and)
g(its)g(Implementation)p Fo(.)655 4344 y(Addison-W)-6
b(esley)g(.)531 4439 y Fb(Gor)l(ton,)25 b(R.)70 b Fo(2001.)95
b(Priv)l(ate)24 b(comm)n(unication.)531 4533 y Fb(Gosling,)h(J.)70
b Fo(2001.)95 b(Priv)l(ate)24 b(comm)n(unication.)531
4627 y Fb(Gschwind,)f(M.,)f(Al)l(tman,)f(E.)h(R.,)h(Sa)l(tha)l(ye,)d
(S.,)i(Led)o(ak,)h(P.,)f(and)f(Appenzeller,)i(D.)71 b
Fo(2000.)91 b(Dy-)655 4710 y(namic)23 b(and)h(transparen)n(t)h(binary)f
(translation.)f Fm(IEEE)k(Computer)32 b(33)p Fo(,)24
b(3,)f(54{59.)531 4805 y Fb(Hammond,)30 b(J.)70 b Fo(1977.)99
b(BASIC)28 b(|)g(an)g(ev)l(aluation)i(of)d(pro)r(cessing)i(metho)r(ds)e
(and)i(a)f(study)h(of)e(some)655 4888 y(programs.)22
b Fm(Softwar)l(e)27 b(|)e(Pr)l(actic)l(e)h(and)g(Exp)l(erienc)l(e)j(7)p
Fo(,)24 b(697{711.)531 4982 y Fb(Hansen,)29 b(G.)e(J.)71
b Fo(1974.)98 b Fm(A)l(daptive)29 b(Systems)f(for)h(the)f(Dynamic)g(R)n
(un-Time)h(Optimization)f(of)h(Pr)l(o-)655 5065 y(gr)l(ams)p
Fo(.)24 b(Ph.)g(D.)f(thesis,)g(Carnegie-Mellon)h(Univ)n(ersit)n(y)-6
b(.)p eop
%%Page: 19 19
19 18 bop 2022 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)
157 b Fh(\001)141 b Fi(19)531 465 y Fb(Ha)l(ygood,)29
b(R.)h(C.)71 b Fo(1994.)98 b(Nativ)n(e)29 b(co)r(de)f(compilation)f(in)
g(SICStus)i(Prolog.)e(In)h Fm(Pr)l(o)l(c)l(e)l(e)l(dings)j(of)f(the)655
549 y(Eleventh)c(International)h(Confer)l(enc)l(e)f(on)g(L)l(o)l(gic)f
(Pr)l(o)l(gr)l(amming)32 b Fo(\(1994\),)25 b(pp.)f(190{204.)531
641 y Fb(Hennessy,)37 b(J.)d(L.)g(and)h(P)-6 b(a)l(tterson,)37
b(D.)d(A.)71 b Fo(1996.)104 b Fm(Computer)35 b(A)n(r)l(chite)l(ctur)l
(e:)51 b(A)34 b(Quantitative)655 724 y(Appr)l(o)l(ach)e
Fo(\(Second)26 b(ed.\).)d(Morgan)h(Kaufmann.)531 816
y Fb(H)588 810 y(\177)585 816 y(olzle,)h(U.)71 b Fo(1994.)94
b Fm(A)l(daptive)25 b(Optimization)g(for)g(Self:)32 b(R)l(e)l(c)l
(onciling)25 b(High)f(Performanc)l(e)i(with)f(Ex-)655
899 y(plor)l(atory)j(Pr)l(o)l(gr)l(amming)p Fo(.)d(Ph.)e(D.)g(thesis,)h
(Carnegie-Mellon)f(Univ)n(ersit)n(y)-6 b(.)531 991 y
Fb(H)588 985 y(\177)585 991 y(olzle,)24 b(U.)e(and)h(Ungar,)f(D.)71
b Fo(1994a.)92 b(Optimizing)20 b(dynamically-dispatc)n(hed)i(calls)e
(with)h(run-time)655 1074 y(t)n(yp)r(e)k(feedbac)n(k.)g(In)f
Fm(PLDI)i('94)33 b Fo(\(1994\),)25 b(pp.)e(326{336.)531
1166 y Fb(H)588 1160 y(\177)585 1166 y(olzle,)32 b(U.)f(and)f(Ungar,)h
(D.)71 b Fo(1994b.)100 b(A)29 b(third-generation)h(Self)e(implemen)n
(tation:)41 b(Reconciling)655 1249 y(resp)r(onsiv)n(eness)24
b(with)g(p)r(erformance.)f(In)h Fm(OOPSLA)h('94)33 b
Fo(\(1994\),)25 b(pp.)e(229{243.)531 1341 y Fb(Ishizaki,)36
b(K.,)f(Ka)-6 b(w)g(ahito,)36 b(M.,)g(Y)-6 b(asue,)35
b(T.,)h(T)-6 b(akeuchi,)36 b(M.,)f(Ogasa)-6 b(w)g(ara,)35
b(T.,)h(Suganuma,)d(T.,)655 1424 y(Onodera,)h(T.,)f(K)n(oma)l(tsu,)g
(H.,)h(and)d(Naka)l(t)l(ani,)h(T.)71 b Fo(1999.)101 b(Design,)32
b(implemen)n(tation,)e(and)655 1507 y(ev)l(aluation)25
b(of)f(optimizations)f(in)h(a)f(just-in-time)f(compiler.)g(In)i
Fm(JA)-7 b(V)g(A)25 b('99)33 b Fo(\(1999\),)25 b(pp.)f(119{128.)531
1599 y Fb(Johansson,)38 b(E.,)h(Pettersson,)h(M.,)e(and)e(Sa)o(gonas,)h
(K.)70 b Fo(2000.)106 b(A)34 b(high)g(p)r(erformance)g(Erlang)655
1682 y(system.)23 b(In)h Fm(PPDP)i('00)33 b Fo(\(2000\),)26
b(pp.)d(32{43.)531 1774 y Fb(Johnston,)h(R.)f(L.)72 b
Fo(1977.)93 b(The)22 b(dynamic)g(incremen)n(tal)g(compiler)e(of)i(APL)p
Fj(n)p Fo(3000.)h(In)f Fm(APL)i('79)h(Con-)655 1857 y(fer)l(enc)l(e)32
b(Pr)l(o)l(c)l(e)l(e)l(dings)5 b Fo(,)35 b(V)-6 b(olume)30
b(9)h(of)f Fm(APL)j(Quote)f(Quad)f Fo(\(June)h(1977\),)i(pp.)d(82{87.)g
(Num)n(b)r(er)f(4,)655 1940 y(P)n(art)24 b(1.)531 2032
y Fb(Jones,)h(N.)g(D.,)g(Gomard,)g(C.)g(K.,)h(and)f(Sestoft,)g(P.)71
b Fo(1993.)95 b Fm(Partial)26 b(Evaluation)h(and)f(A)n(utomatic)655
2115 y(Pr)l(o)l(gr)l(am)i(Gener)l(ation)p Fo(.)c(Pren)n(tice)g(Hall.)
531 2207 y Fb(Keppel,)39 b(D.)71 b Fo(1991.)106 b(A)35
b(p)r(ortable)h(in)n(terface)f(for)f(on-the-\015y)i(instruction)g
(space)f(mo)r(di\014cation.)g(In)655 2290 y Fm(ASPLOS)25
b(IV)37 b Fo(\(1991\),)25 b(pp.)e(86{95.)531 2383 y Fb(Keppel,)k(D.,)g
(Eggers,)f(S.)g(J.,)h(and)f(Henr)l(y,)g(R.)g(R.)71 b
Fo(1991.)96 b(A)25 b(case)g(for)f(run)n(time)g(co)r(de)i(generation.)
655 2466 y(T)-6 b(ec)n(hnical)20 b(Rep)r(ort)g(91-11-04,)g(Univ)n
(ersit)n(y)f(of)f(W)-6 b(ashington)21 b(Departmen)n(t)e(of)g(Computer)g
(Science)h(and)655 2549 y(Engineering.)531 2641 y Fb(Kistler,)38
b(T.)71 b Fo(1997.)105 b(Dynamic)33 b(run)n(time)f(optimization.)i(In)g
Fm(Pr)l(o)l(c)l(e)l(e)l(dings)j(of)e(the)g(Joint)g(Mo)l(dular)655
2724 y(L)l(anguages)27 b(Confer)l(enc)l(e)e(\(JMLC)h('97\))h
Fo(\(1997\),)e(pp.)e(53{66.)531 2816 y Fb(Kistler,)i(T.)71
b Fo(1999.)95 b Fm(Continuous)26 b(Pr)l(o)l(gr)l(am)h(Optimization)p
Fo(.)c(Ph.)g(D.)f(thesis,)h(Univ)n(ersit)n(y)g(of)f(Califor-)655
2899 y(nia,)h(Irvine.)531 2991 y Fb(Kistler,)j(T.)71
b Fo(2001.)95 b(Priv)l(ate)24 b(comm)n(unication.)531
3083 y Fb(Kistler,)f(T.)e(and)h(Franz,)g(M.)70 b Fo(1999.)91
b(The)20 b(case)h(for)e(dynamic)g(optimization:)29 b(Impro)n(ving)19
b(memory-)655 3166 y(hierarc)n(h)n(y)32 b(p)r(erformance)e(b)n(y)i(con)
n(tin)n(uously)g(adapting)h(the)f(in)n(ternal)f(storage)h(la)n(y)n(out)
h(of)e(heap)h(ob-)655 3249 y(jects)26 b(at)g(run-time.)e(T)-6
b(ec)n(hnical)27 b(Rep)r(ort)f(99-21)g(\(Ma)n(y\),)h(Univ)n(ersit)n(y)e
(of)g(California,)g(Irvine.)g(Revised)655 3332 y(Septem)n(b)r(er,)f
(1999.)531 3424 y Fb(Klaiber,)j(A.)71 b Fo(2000.)97 b(The)26
b(tec)n(hnology)i(b)r(ehind)f(Cruso)r(e)e(pro)r(cessors.)h(T)-6
b(ec)n(hnical)26 b(rep)r(ort)g(\(Jan)n(uary\),)655 3507
y(T)-6 b(ransmeta)24 b(Corp)r(oration.)531 3599 y Fb(Knuth,)33
b(D.)f(E.)71 b Fo(1971.)101 b(An)31 b(empirical)d(study)j(of)f(Fortran)
h(programs.)d Fm(Softwar)l(e)33 b(|)f(Pr)l(actic)l(e)g(and)655
3682 y(Exp)l(erienc)l(e)d(1)p Fo(,)24 b(105{133.)531
3774 y Fb(Krall,)37 b(A.)71 b Fo(1998.)104 b(E\016cien)n(t)34
b(Ja)n(v)l(aVM)g(just-in-time)d(compilation.)h(In)i Fm(Pr)l(o)l(c)l(e)l
(e)l(dings)j(of)e(the)f(1998)655 3857 y(International)f(Confer)l(enc)l
(e)g(on)f(Par)l(al)t(lel)i(A)n(r)l(chite)l(ctur)l(es)e(and)h
(Compilation)h(T)-5 b(e)l(chniques)32 b(\(P)-5 b(A)n(CT)655
3940 y('98\))27 b Fo(\(1998\),)e(pp.)f(205{212.)531 4032
y Fb(Krall,)30 b(A.)f(and)f(Grafl,)h(R.)71 b Fo(1997.)99
b(A)27 b(Ja)n(v)l(a)h(just-in-time)e(compiler)g(that)i(transcends)h(Ja)
n(v)l(aVM's)655 4115 y(32)24 b(bit)g(barrier.)e(In)i
Fm(PPoPP)k('97)e(Workshop)h(on)f(Java)h(for)f(Scienc)l(e)f(and)h
(Engine)l(ering)j Fo(\(1997\).)531 4208 y Fb(Lee,)24
b(P.)g(and)f(Leone,)h(M.)70 b Fo(1996.)93 b(Optimizing)21
b(ML)g(with)h(run-time)e(co)r(de)j(generation.)g(In)f
Fm(PLDI)i('96)655 4291 y Fo(\(1996\),)h(pp.)f(137{148.)531
4383 y Fb(Lee,)37 b(S.,)f(Y)-6 b(ang,)36 b(B.-S.,)h(Kim,)f(S.,)h(P)-6
b(ark,)37 b(S.,)f(Moon,)h(S.-M.,)f(Ebcio)2592 4377 y(\025)2589
4383 y(glu,)h(K.,)g(and)d(Al)l(tman,)h(E.)655 4466 y
Fo(2000.)92 b(E\016cien)n(t)21 b(Ja)n(v)l(a)g(exception)i(handling)e
(in)f(just-in-time)e(compilation.)i(In)h Fm(Java)i(2000)31
b Fo(\(2000\),)655 4549 y(pp.)24 b(1{8.)531 4641 y Fb(Leone,)37
b(M.)d(and)g(D)n(ybvig,)i(R.)e(K.)71 b Fo(1997.)104 b(Dynamo:)49
b(A)33 b(staged)h(compiler)d(arc)n(hitecture)k(for)d(dy-)655
4724 y(namic)22 b(program)g(optimization.)h(T)-6 b(ec)n(hnical)24
b(Rep)r(ort)f(490,)h(Indiana)g(Univ)n(ersit)n(y)-6 b(,)23
b(Computer)f(Science)655 4807 y(Departmen)n(t.)531 4899
y Fb(Leone,)j(M.)f(and)g(Lee,)h(P.)71 b Fo(1994.)94 b(Ligh)n(t)n(w)n
(eigh)n(t)24 b(run-time)d(co)r(de)j(generation.)g(In)f
Fm(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)e(the)655 4982 y(A)n(CM)i(SIGPLAN)h
(Workshop)g(on)g(Partial)g(Evaluation)g(and)g(Semantics-Base)l(d)g(Pr)l
(o)l(gr)l(am)i(Manip-)655 5065 y(ulation)g Fo(\(1994\),)25
b(pp.)f(97{106.)p eop
%%Page: 20 20
20 19 bop 450 250 a Fi(20)142 b Fh(\001)158 b Fi(J.)26
b(Ayco)r(ck)531 465 y Fb(Marlet,)e(R.,)h(Consel,)g(C.,)g(and)f(Boinot,)
h(P.)71 b Fo(1999.)93 b(E\016cien)n(t)24 b(incremen)n(tal)e(run-time)f
(sp)r(ecializa-)655 549 y(tion)j(for)f(free.)g(In)h Fm(PLDI)i('99)33
b Fo(\(1999\),)25 b(pp.)f(281{292.)531 640 y Fb(Ma)o(uriello,)g(R.)71
b Fo(2000.)95 b(Priv)l(ate)24 b(comm)n(unication.)531
732 y Fb(Ma)l(y,)j(C.)71 b Fo(1987.)97 b(Mimic:)34 b(A)26
b(fast)g(System/370)h(sim)n(ulator.)d(In)j Fm(Pr)l(o)l(c)l(e)l(e)l
(dings)j(of)e(the)g(SIGPLAN)g('87)655 815 y(Symp)l(osium)g(on)e
(Interpr)l(eters)f(and)i(Interpr)l(etive)e(T)-5 b(e)l(chniques)29
b Fo(\(June)c(1987\),)g(pp.)e(1{13.)531 907 y Fb(McCar)l(thy,)f(J.)70
b Fo(1960.)92 b(Recursiv)n(e)20 b(functions)h(of)f(sym)n(b)r(olic)f
(expressions)i(and)g(their)f(computation)h(b)n(y)655
990 y(mac)n(hine,)i(part)h(I.)g Fm(Commun.)j(A)n(CM)33
b(3)p Fo(,)24 b(4,)f(184{195.)531 1081 y Fb(McCar)l(thy,)j(J.)70
b Fo(1981.)96 b(History)25 b(of)g(LISP.)g(In)g Fb(R.)i(L.)g(Wexelbla)l
(t)d Fo(Ed.,)h Fm(History)h(of)h(Pr)l(o)l(gr)l(amming)655
1164 y(L)l(anguages)5 b Fo(,)24 b(pp.)g(173{185.)h(Academic)f(Press.)
531 1256 y Fb(Miller,)32 b(T.)f(C.)71 b Fo(1977.)101
b(T)-6 b(en)n(tativ)n(e)31 b(compilation:)42 b(A)30 b(design)f(for)g
(an)h(APL)f(compiler.)e(In)j Fm(APL)h('79)655 1339 y(Confer)l(enc)l(e)f
(Pr)l(o)l(c)l(e)l(e)l(dings)5 b Fo(,)30 b(V)-6 b(olume)27
b(9)g(of)g Fm(APL)i(Quote)g(Quad)f Fo(\(June)h(1977\),)g(pp.)f(88{95.)g
(Num)n(b)r(er)655 1422 y(4,)c(P)n(art)f(1.)531 1514 y
Fb(Mitchell,)k(J.)f(G.)70 b Fo(1970.)96 b Fm(The)27 b(Design)f(and)i
(Construction)f(of)g(Flexible)f(and)i(E\016cient)e(Inter)l(active)655
1597 y(Pr)l(o)l(gr)l(amming)i(Systems)p Fo(.)23 b(Ph.)g(D.)g(thesis,)h
(Carnegie-Mellon)f(Univ)n(ersit)n(y)-6 b(.)531 1688 y
Fb(Mitchell,)25 b(J.)g(G.)71 b Fo(2000.)94 b(Priv)l(ate)24
b(comm)n(unication.)531 1780 y Fb(Mitchell,)38 b(J.)d(G.,)j(Perlis,)h
(A.)d(J.,)i(and)d(v)-6 b(an)35 b(Zoeren,)k(H.)d(R.)70
b Fo(1968.)106 b(LC)2857 1757 y Ff(2)2891 1780 y Fo(:)52
b(A)34 b(language)h(for)655 1863 y(con)n(v)n(ersational)26
b(computing.)e(In)g Fb(M.)h(Klerer)h(and)f(J.)h(Reinfelds)e
Fo(Eds.,)f Fm(Inter)l(active)j(Systems)f(for)655 1946
y(Exp)l(erimental)33 b(Applie)l(d)g(Mathematics)5 b Fo(.)31
b(Academic)f(Press.)f(Pro)r(ceedings)i(of)f(1967)h(A)n(CM)f(Symp)r(o-)
655 2029 y(sium.)531 2121 y Fb(Mock,)i(M.,)g(Berr)l(yman,)f(M.,)h
(Chambers,)f(C.,)i(and)d(Eggers,)i(S.)f(J.)70 b Fo(1999.)101
b(Calpa:)42 b(A)29 b(to)r(ol)g(for)655 2204 y(automating)36
b(dynamic)f(compilation.)f(In)i Fm(Se)l(c)l(ond)h(A)n(CM)f(Workshop)j
(on)d(F)-5 b(e)l(e)l(db)l(ack-dir)l(e)l(cte)l(d)38 b(and)655
2287 y(Dynamic)26 b(Optimization)j Fo(\(1999\),)c(pp.)f(100{109.)531
2379 y Fb(Ng,)d(T.)h(S.)f(and)g(Cantoni,)h(A.)70 b Fo(1976.)91
b(Run)20 b(time)f(in)n(teraction)h(with)g(F)n(OR)-6 b(TRAN)19
b(using)g(mixed)g(co)r(de.)655 2462 y Fm(The)26 b(Computer)g(Journal)32
b(19)p Fo(,)24 b(1,)g(91{92.)531 2553 y Fb(Pittman,)f(T.)71
b Fo(1987.)92 b(Tw)n(o-lev)n(el)21 b(h)n(ybrid)g(in)n(terpreter/nativ)n
(e)h(co)r(de)g(execution)h(for)d(com)n(bined)h(space-)655
2636 y(time)26 b(program)f(e\016ciency)-6 b(.)27 b(In)g
Fm(SIGPLAN)h(Symp)l(osium)i(on)e(Interpr)l(eters)h(and)g(Interpr)l
(etive)e(T)-5 b(e)l(ch-)655 2719 y(niques)29 b Fo(\(1987\),)c(pp.)f
(150{152.)531 2811 y Fb(Piumar)l(t)l(a,)19 b(I.)h(and)g(Riccardi,)i(F.)
71 b Fo(1998.)89 b(Optimizing)17 b(direct)h(threaded)i(co)r(de)f(b)n(y)
g(selectiv)n(e)g(inlining.)655 2894 y(In)24 b Fm(PLDI)i('98)33
b Fo(\(1998\),)25 b(pp.)f(291{300.)531 2986 y Fb(Plezber)l(t,)d(M.)e
(P.)h(and)g(Cytr)o(on,)g(R.)g(K.)71 b Fo(1997.)89 b(Do)r(es)18
b(\\just)g(in)g(time")g(=)f(\\b)r(etter)j(late)e(then)h(nev)n(er"?)655
3069 y(In)24 b Fm(POPL)i('97)33 b Fo(\(1997\),)25 b(pp.)f(120{131.)531
3160 y Fb(Poletto,)f(M.,)f(Engler,)g(D.)f(R.,)i(and)e(Kaashoek,)h(M.)f
(F.)71 b Fo(1997.)91 b(tcc:)30 b(A)20 b(system)f(for)g(fast,)h
(\015exible,)655 3243 y(and)k(high-lev)n(el)g(dynamic)f(co)r(de)i
(generation.)g(In)f Fm(PLDI)h('97)34 b Fo(\(1997\),)25
b(pp.)e(109{121.)531 3335 y Fb(Ramsey,)h(N.)h(and)g(Fern)1243
3329 y(\023)1241 3335 y(andez,)g(M.)70 b Fo(1995.)95
b(The)23 b(New)h(Jersey)f(mac)n(hine-co)r(de)h(to)r(olkit.)f(In)h
Fm(Pr)l(o)l(c)l(e)l(e)l(d-)655 3418 y(ings)i(of)f(the)h(1995)h(USENIX)f
(T)-5 b(e)l(chnic)l(al)26 b(Confer)l(enc)l(e)j Fo(\(1995\),)c(pp.)f
(289{302.)531 3510 y Fb(Ra)o(u,)c(B.)g(R.)71 b Fo(1978.)89
b(Lev)n(els)18 b(of)g(represen)n(tation)i(of)e(programs)e(and)j(the)g
(arc)n(hitecture)g(of)f(univ)n(ersal)g(host)655 3593
y(mac)n(hines.)27 b(In)h Fm(Pr)l(o)l(c)l(e)l(e)l(dings)j(of)f(the)f
(11th)h(A)n(nnual)g(Micr)l(opr)l(o)l(gr)l(amming)i(Workshop)f(\(MICR)n
(O-11\))655 3676 y Fo(\(1978\),)25 b(pp.)f(67{79.)531
3768 y Fb(R)584 3762 y(\023)584 3768 y(emy,)h(D.,)i(Ler)o(o)o(y,)e(X.,)
i(and)e(Weis,)j(P.)71 b Fo(1999.)95 b(Ob)t(jectiv)n(e)25
b(Caml)e({)i(a)f(general)h(purp)r(ose)g(high-lev)n(el)655
3851 y(programming)d(language.)i Fm(ER)n(CIM)i(News)j(36)p
Fo(,)24 b(29{30.)531 3942 y Fb(R)n(osenblum,)g(M.,)h(Herr)o(od,)g(S.)g
(A.,)g(Witchel,)h(E.,)g(and)e(Gupt)l(a,)g(A.)71 b Fo(1995.)94
b(Complete)24 b(computer)655 4025 y(system)h(sim)n(ulation:)35
b(The)26 b(SimOS)e(approac)n(h.)j Fm(IEEE)i(Par)l(al)t(lel)g(and)f
(Distribute)l(d)f(T)-5 b(e)l(chnolo)l(gy)33 b(3)p Fo(,)26
b(4)655 4108 y(\(Win)n(ter\),)f(34{43.)531 4200 y Fb(Schr)o(oeder,)37
b(S.)e(C.)h(and)f(V)-8 b(a)o(ughn,)36 b(L.)f(E.)71 b
Fo(1973.)105 b(A)34 b(high)f(order)h(language)h(optimal)e(execution)655
4283 y(pro)r(cessor:)k Fm(F)9 b Fo(ast)26 b Fm(I)10 b
Fo(n)n(ten)n(t)29 b Fm(R)r Fo(ecognition)f Fm(S)8 b Fo(ys)p
Fm(t)e Fo(em)25 b(\(FIRST\).)i(In)g Fm(Pr)l(o)l(c)l(e)l(e)l(dings)j(of)
e(a)h(Symp)l(osium)g(on)655 4366 y(High-L)l(evel-L)l(anguage)k
(Computer)i(A)n(r)l(chite)l(ctur)l(e)5 b Fo(,)34 b(V)-6
b(olume)32 b(8)g(of)g Fm(SIGPLAN)h Fo(\(No)n(v)n(em)n(b)r(er)g(1973\),)
655 4449 y(pp.)24 b(109{116.)h(Num)n(b)r(er)d(11.)531
4541 y Fb(Sebest)l(a,)g(R.)i(W.)71 b Fo(1999.)93 b Fm(Conc)l(epts)24
b(of)g(Pr)l(o)l(gr)l(amming)i(L)l(anguages)h Fo(\(F)-6
b(ourth)23 b(ed.\).)e(Addison-W)-6 b(esley)g(.)531 4632
y Fb(Smith,)31 b(R.)g(B.)g(and)g(Ungar,)h(D.)70 b Fo(1995.)101
b(Programming)27 b(as)i(an)h(exp)r(erience:)44 b(The)29
b(inspiration)g(for)655 4715 y(Self.)23 b(In)h Fm(ECOOP)i('95)33
b Fo(\(1995\).)531 4807 y Fb(Sun)24 b(Micr)o(osystems)p
Fo(.)71 b(2001.)94 b(The)25 b(Ja)n(v)l(a)f(HotSp)r(ot)h(virtual)f(mac)n
(hine.)f(White)h(pap)r(er.)531 4899 y Fb(Thiba)o(ul)l(t,)e(S.,)h
(Consel,)i(C.,)f(La)-6 b(w)g(all,)25 b(J.)e(L.,)h(Marlet,)f(R.,)i(and)e
(Muller,)g(G.)70 b Fo(2000.)93 b(Static)23 b(and)655
4982 y(dynamic)33 b(program)g(compilation)g(b)n(y)h(in)n(terpreter)g
(sp)r(ecialization.)g Fm(Higher-Or)l(der)h(and)g(Symb)l(olic)655
5065 y(Computation)c(13)p Fo(,)24 b(161{178.)p eop
%%Page: 21 21
21 20 bop 2022 250 a Fi(A)26 b(Brief)g(Histo)n(ry)g(of)h(Just-In-Time)
157 b Fh(\001)141 b Fi(21)531 465 y Fb(Thompson,)30 b(K.)71
b Fo(1968.)99 b(Regular)27 b(expression)h(searc)n(h)g(algorithm.)e
Fm(Commun.)31 b(A)n(CM)38 b(11)p Fo(,)28 b(6)f(\(June\),)655
549 y(419{422.)531 640 y Fb(Transmet)l(a)k(Corpora)l(tion)p
Fo(.)70 b(2001.)102 b(Co)r(de)32 b(morphing)d(soft)n(w)n(are.)i(h)n
(ttp://www.transmeta.com/-)655 723 y(tec)n(hnology/arc)n(hitecture/co)r
(de)p 1559 723 22 4 v 31 w(morphing.h)n(tml.)531 814
y Fb(Tyma,)24 b(P.)71 b Fo(1998.)95 b(Wh)n(y)25 b(are)e(w)n(e)h(using)g
(Ja)n(v)l(a)h(again?)32 b Fm(Commun.)27 b(A)n(CM)33 b(41)p
Fo(,)24 b(6,)g(38{42.)531 906 y Fb(Ung,)h(D.)h(and)f(Cifuentes,)h(C.)71
b Fo(2000.)95 b(Mac)n(hine-adaptable)26 b(dynamic)e(binary)g
(translation.)g(In)h Fm(Dy-)655 989 y(namo)i('00)33 b
Fo(\(2000\),)25 b(pp.)f(41{51.)531 1080 y Fb(Ungar,)f(D.)h(and)f
(Smith,)g(R.)h(B.)71 b Fo(1987.)93 b(Self:)30 b(The)23
b(p)r(o)n(w)n(er)f(of)g(simplicit)n(y)-6 b(.)20 b(In)i
Fm(OOPSLA)i('87)31 b Fo(\(1987\),)655 1163 y(pp.)24 b(227{242.)531
1254 y Fb(Ungar,)31 b(D.,)i(Smith,)f(R.)g(B.,)h(Chambers,)e(C.,)j(and)c
(H)2128 1248 y(\177)2125 1254 y(olzle,)k(U.)71 b Fo(1992.)100
b(Ob)t(ject,)32 b(message,)e(and)655 1337 y(p)r(erformance:)h(Ho)n(w)23
b(they)i(co)r(exist)g(in)e(Self.)g Fm(IEEE)k(Computer)k(25)p
Fo(,)24 b(10)g(\(Octob)r(er\),)i(53{64.)531 1429 y(Univ)n(ersit)n(y)j
(of)g(Mic)n(higan.)71 b(1966a.)101 b(The)30 b(System)f(Loader.)h(In)g
Fm(University)g(of)h(Michigan)g(Exe)l(cutive)655 1512
y(System)25 b(for)h(the)g(IBM)g(7090)h(Computer)7 b Fo(,)24
b(V)-6 b(olume)23 b(1.)531 1603 y(Univ)n(ersit)n(y)60
b(of)h(Mic)n(higan.)70 b(1966b.)132 b(The)61 b(\\Univ)n(ersit)n(y)g(of)
g(Mic)n(higan)f(Assem)n(bly)g(Program")655 1686 y(\(\\UMAP"\).)34
b(In)g Fm(University)f(of)i(Michigan)g(Exe)l(cutive)f(System)g(for)h
(the)g(IBM)g(7090)h(Computer)7 b Fo(,)655 1769 y(V)-6
b(olume)23 b(2.)531 1860 y Fb(v)-6 b(an)39 b(D)n(yke,)k(E.)d(J.)70
b Fo(1977.)110 b(A)38 b(dynamic)g(incremen)n(tal)g(compiler)f(for)g(an)
i(in)n(terpretiv)n(e)g(language.)655 1943 y Fm(Hew)t(lett-Packar)l(d)26
b(Journal)32 b(28)p Fo(,)24 b(11)g(\(July\),)g(17{24.)531
2035 y Fb(v)-6 b(an)20 b(R)n(o)o(y,)i(P.)71 b Fo(1994.)91
b(The)21 b(w)n(onder)f(y)n(ears)g(of)f(sequen)n(tial)i(Prolog)f
(implemen)n(tation.)e Fm(Journal)24 b(of)f(L)l(o)l(gic)655
2118 y(Pr)l(o)l(gr)l(amming)32 b(19{20)p Fo(,)25 b(385{441.)531
2209 y Fb(Wickline,)d(P.,)g(Lee,)g(P.,)g(and)f(Pfenning,)f(F.)71
b Fo(1998.)90 b(Run-time)18 b(co)r(de)i(generation)h(and)e(Mo)r
(dal-ML.)655 2292 y(In)24 b Fm(PLDI)i('98)33 b Fo(\(1998\),)25
b(pp.)f(224{235.)531 2383 y Fb(Wir)l(th,)29 b(N.)f(and)g(Gutknecht,)g
(J.)71 b Fo(1989.)98 b(The)27 b(Ob)r(eron)f(system.)g
Fm(Softwar)l(e)j(|)f(Pr)l(actic)l(e)h(and)g(Ex-)655 2466
y(p)l(erienc)l(e)g(19)p Fo(,)24 b(9)g(\(Septem)n(b)r(er\),)g(857{893.)
531 2558 y Fb(Y)-6 b(ang,)31 b(B.-S.,)h(Moon,)g(S.-M.,)g(P)-6
b(ark,)32 b(S.,)g(Lee,)g(J.,)g(Lee,)g(S.,)g(P)-6 b(ark,)32
b(J.,)g(Chung,)f(Y.)g(C.,)h(Kim,)g(S.,)655 2641 y(Ebcio)847
2635 y(\025)844 2641 y(glu,)27 b(K.,)h(and)e(Al)l(tman,)h(E.)71
b Fo(1999.)96 b(LaTT)-6 b(e:)35 b(A)25 b(Ja)n(v)l(a)h(VM)f
(just-in-time)e(compiler)h(with)655 2724 y(fast)f(and)h(e\016cien)n(t)g
(register)f(allo)r(cation.)h(In)f Fm(International)k(Confer)l(enc)l(e)e
(on)h(Par)l(al)t(lel)g(A)n(r)l(chite)l(ctur)l(es)655
2807 y(and)h(Compilation)g(T)-5 b(e)l(chniques)29 b Fo(\(1999\),)c(pp.)
e(128{138.)j(IEEE.)531 2898 y Fb(Zheng,)c(C.)h(and)f(Thompson,)i(C.)71
b Fo(2000.)92 b(P)-6 b(A-RISC)21 b(to)g(IA-64:)30 b(T)-6
b(ransparen)n(t)22 b(execution,)h(no)e(recom-)655 2981
y(pilation.)j Fm(IEEE)i(Computer)32 b(33)p Fo(,)24 b(3)g(\(Marc)n(h\),)
g(47{52.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF