Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

[a79fd6]: NEWS.txt Maximize Restore History

Download this file

NEWS.txt    1881 lines (1534 with data), 89.4 kB

   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
-*-outline-*-
Jikes RVM NEWS -- History of significant changes
This file contains the release notes since Jikes RVM 2.0.0, released
on October 14, 2001,
* Jikes RVM 3.1.0 (June 10, 2009)
It's been almost nine months since the release of Jikes RVM 3.0.1, and
quite a bit has changed in Jikes RVM.
We'd like to call out several items that may be of particular interest
to the community.
1. Jikes RVM has switched to using native threading instead of
m-to-n (aka green) threading.
2. The default mature space collector has changed from Mark-Sweep to Immix.
3. Jikes RVM is now licensed under the Eclipse Public License (EPL).
4. The 3.1 release significantly improves over the performance of
3.0.1, with speedups of 10% and 21% on average for DaCapo and SPEC
benchmarks respectively on an Intel C2Q. Highlights include a 29%
improvement in jbb and a 32% improvement in jython.
Details are given below, or are browsable online in our JIRA instance
at http://jira.codehaus.org/browse/RVM/fixforversion/14620.
** New Feature
* [RVM-641] - Make Immix the default mature space collector
* [RVM-682] - Assertion checking in sysMalloc
* [RVM-802] - Debugging hooks in MMTk
* [RVM-806] - Heavyweight sanity checker for MMTk Harness
* [RVM-807] - Simple type system for MMTk Harness scripting language
** Bug
* [RVM-460] - Not accounting for nursery promotion AND defrag in GenImmix
* [RVM-498] - ppc-linux32 dying on SPEC jbb 2005 with 4 threads
* [RVM-613] - asking if a method has a hasBaselineSaveLSRegistersAnnotation triggers classloading (and thus GC) when GC is disabled during OSR
* [RVM-625] - FullAdaptiveImmix and FullAdaptiveStickyImmix broken on ppc32-linux
* [RVM-638] - Crash in Poisoned configs on PPC (aix/linux, 32/64) apparently relating to clone
* [RVM-662] - Error growing discontiguous space
* [RVM-664] - Occasional digest validation errors on lusearch performance runs
* [RVM-683] - Fix race in AOS controller/organizer synchronication during startup
* [RVM-690] - Class loader and reflection problems for unboxed types
* [RVM-696] - Don't recomend copying project contents with eclipse-project
* [RVM-698] - Don't clear most significant bits for <32bit return types on Intel [breaks Ubuntu 8.10]
* [RVM-700] - Not running class initializer for InetAddress causing ServerSocket failures
* [RVM-701] - Edge Counter and Dynamic Call Graph output after run fails
* [RVM-703] - Throwable.getStackTrace() implementation is incorrect
* [RVM-704] - Regressions from 2.9.1 not allowing jetty web server to run
* [RVM-708] - Bad reference map created by IA32 baseline compiler
* [RVM-712] - Uninterruptible code should not be allowed to call UnpremptibleNoWarn methods
* [RVM-722] - Bug in Static Spliting induces unconditional OSR invalidations when running _228_jack in measure compilation mode
* [RVM-729] - enabling simple_escape_ipa causes a ClassCastException
* [RVM-732] - Exception in thread "MainThread" java.security.AccessControlException: permission (java.lang.RuntimePermission exitVM) not granted: no protection domains
* [RVM-733] - rvm crash when closing a file in ExitMonitor.notifyExit(int value)
* [RVM-738] - Fix debugging output when extracting long variable values for OSR
* [RVM-743] - compress-3GC fails with OOME
* [RVM-744] - Terminal not in grammar: read_ceiling (BURS)
* [RVM-748] - Bug in type checking when > 32767 types
* [RVM-756] - Intel unnecessarily restricts boot image to be at addresses > 0x30000000
* [RVM-774] - Incorrect implementation of static initializers in the case of initializers that throw exceptions
* [RVM-795] - Baseline GC Maps with JSRs fails to set reference flag for aload operations
* [RVM-800] - In TemplateCompilerFramework.genCode, case JBC_anewarray, I don't believe that the array resolution and instantiation path is ever taken
* [RVM-808] - OutOfMemoryError when allocating a 200 MB tab
* [RVM-811] - Immix: "Chunk map overflow" on jbb2005 ppc64-linux
* [RVM-814] - Wrong exception from Java reflection
* [RVM-828] - Do not search superclasses for a method unless no method is found.
** Improvement
* [RVM-91] - Modularize threading system (native thread support)
* [RVM-283] - Increase frequency of timer-based method sampling
* [RVM-362] - Sort accumulating operands on to LHS of commutative operations
* [RVM-462] - Immix code still contains huge number of experimental variables
* [RVM-532] - Harmony's OSMemory implementation uses JNI
* [RVM-612] - Assertion checking on stack height in baseline compiler
* [RVM-689] - Update MMTk tutorial
* [RVM-709] - Document meaning of constants in build reference maps
* [RVM-725] - Increase command line options for tuning opt compiler behaviour
* [RVM-736] - Disable ImmutableEntryHashSetRVM.remove()
* [RVM-737] - Support local variable table for methods
* [RVM-739] - Made org.jikesrvm.compilers.opt.util.Pair generic and moved it to package org.jikesrvm.util
* [RVM-740] - Support for floating point conditional moves on Intel with SSE
* [RVM-741] - Support for negation and abs() using SSE2 bit masks
* [RVM-775] - Cleanup up code that obtains targets of pseudo_invokestatic instruction
* [RVM-791] - Clean up and modularize locking
* [RVM-801] - Minor change: Reorganize ClassFileReader by moving code for reading in the constant pool into a separate function
* [RVM-803] - Use for-each loop in RVMClass wherever possible
** Tasks and Sub-tasks
* [RVM-817] - Change Jikes RVM license from Common Public License to Eclipse Public License
* [RVM-685] - Implement x86 64 JNI Compiler
* [RVM-751] - Implement PowerPC syscalls
* [RVM-759] - Stack maps seem to be broken
* [RVM-779] - Update userguide to decribe native threads
* [RVM-783] - Fix baseline Intel 64bit reference maps
* [RVM-786] - Adjust sampling mechanism in AOS to account for native threads
* [RVM-787] - Outline exception raising code in gnu.java.lang.CPStringBuilder to enable better inlining
* [RVM-29] - Track website traffic via sourceforge logo requests
* Jikes RVM 3.0.1 (October 16, 2008)
** New Feature
* [RVM-507] - Initial prototype of TuningFork trace generation in Jikes RVM
* [RVM-515] - Make boot image writer traversal of object graph configurable
* [RVM-517] - Reflection optimization
* [RVM-528] - Support for eclipse-project with Harmony class libraries
* [RVM-634] - Add RuntimePure annotation to indicate when a Pure annotation should only be respected at runtime
* [RVM-673] - Implement Inline.When.AssertionsDisabled pragma
** Improvement
* [RVM-291] - Immortal objects with address based hashing should set their hashed bit during boot image writing
* [RVM-443] - Avoid back references in java.lang.reflect VMXXX classes
* [RVM-476] - Make lock allocation thread-model-agnostic.
* [RVM-627] - Use java.nio for writing boot image
* [RVM-632] - Space improvements of RVMClass.objectCache
* [RVM-633] - Avoid the use of Reflection to invoke Object.finalize()
* [RVM-644] - Reduce copying of char[] in java.lang.reflect.Proxy
* [RVM-650] - Ask users to submit bug reports on Jikes RVM crashes
** Bug
* [RVM-172] - Failing DaCapo benchmarks on PPC 32 OS X
* [RVM-288] - Assertion failure in inline oracle
* [RVM-318] - java.util.Scanner is unimplemented
* [RVM-346] - SPECjvm98: Invalid runs should not be SUCCESSes
* [RVM-410] - Problem with changes to stack walk
* [RVM-440] - Poisoned tests failing in finalizer thread
* [RVM-471] - Stack frame alignment broken for Intel on OS/X
* [RVM-605] - Possible fix for FreeListPageResource.releasePages()
* [RVM-606] - Problems with OSR guarded inlining of invokeinterface
* [RVM-614] - BaseBasePoisoned build segfaults during VM bootup on pcc64-linux
* [RVM-617] - DaCapo bloat fails with Apache Harmony class library
* [RVM-619] - DaCapo eclipse fails with Apache Harmony class library
* [RVM-621] - DaCapo xalan fails with Apache Harmony class library
* [RVM-623] - Intel 16bit operations with immediate operands in some cases generate 32bit immediate operands rather than 16bit
* [RVM-631] - Bug in new Finalization code
* [RVM-636] - Crash in reflection during JSR-166 TCK
* [RVM-643] - Invalid InstructionFormat usage in Simplifier, but real bug is that IR is semantically malformed
* [RVM-645] - Bug in LiveAnalysis related to modeling of dataflow through Exception edges in the FCFG
* [RVM-646] - Immix defrag broken
* [RVM-652] - build failure on IA32 OS X 10.5 (Leopard)
** Task and Sub-task
* [RVM-651] - Add support to Intel assembler for REX prefix byte
* [RVM-667] - Modify the implementation of table switch
* [RVM-669] - Build/boot image runner support for x86 64
* [RVM-671] - Fix spill location size estimates
* Jikes RVM 3.0.0 (August 7, 2008)
We're very happy to announce the release of Jikes RVM version 3.0.0.
The road towards 3.0 began just about two years ago and a large number of
people, both on the core team and from our user community at large,
have contributed to making it a success. Thank You!
The detailed release notes for major changes since 2.9.3 can be found
below, but we'd like to highlight some of the larger themes that went
into the 3.0 release (many of which have already been released in
the 2.9.x releases we've made along the way).
** Normalization of source code and build process
*** Complete rewrite of the build/test systems to use ant.
*** Jikes RVM can be developed in Eclipse using the JDT
*** Extensive restructuring of package structure
*** Removal of VM_ and OPT_ prefixes from all source files.
** Increased system stability and performance
*** A new continuous testing system (http://jikesrvm.anu.edu.au/cattrack)
*** Concerted stability and performance drives
** Java 5 support
*** Support for Java 5 language features
*** Use of Java 5 language features throughout the code base
Detailed list (89 issues closed in the 3 months since 2.9.3)
** New Feature
* [RVM-358] - Initial support for Apache Harmony class library
* [RVM-480] - Spec JVM 2008 regression test
* [RVM-534] - MMTk Test harness
* [RVM-540] - Implement java.lang.Compiler
* [RVM-591] - Support for jdocs.com javadoc
* [RVM-592] - Checks on creating ObjectReferences
** Improvement
* [RVM-72] - NonMoving annotations for classes instances of which should be allocated to the immortal heap
* [RVM-273] - Remove VM_ prefix from all VM classes
* [RVM-275] - Remove VMOpt prefix from opt compiler classes that go into bootimage
* [RVM-282] - Make dumpVirtualMachine more defensive
* [RVM-329] - Specialize IA32 assembler for lister vs. non-lister
* [RVM-333] - Annotations used for VM Pragmas (NoInline, Uninterruptible, etc) probably should not be as closed linked to classloaders
* [RVM-445] - Clean up handling of JTOC
* [RVM-449] - Handle instanceof and checkcast in ShortArray scalar replacer
* [RVM-477] - Gather new compiler DNA
* [RVM-501] - BuildWithAllClasses is (practically) unused
* [RVM-502] - Dead code elimination of pure calls
* [RVM-505] - Eliminate calls to VM_Class.getClass..FromStackFrame when stack frame is determinable
* [RVM-508] - Have hash map where entries are completely immutable saving references from boot image root set
* [RVM-510] - Create top level common directory to make it easier to split out and share useful components from rvm and MMTk
* [RVM-511] - Split out MMTk option processing support
* [RVM-512] - Experiment with freezing bucket array in VM_HashMap/VM_HashSet
* [RVM-513] - Large arrays in boot image cause memory leak
* [RVM-525] - Upgrade to GNU classpath 0.97.2
* [RVM-537] - Implement inline mustImplementInterface sequence for invokeinterface in baseline compilers
* [RVM-538] - Inline checkcast/instanceof sequences in baseline compiler for simple cases
* [RVM-572] - Remove OSR_ and BC_ prefixes from OnStackReplacement code
* [RVM-593] - Extra checks on references being traced in rvm
* [RVM-603] - Improve intel baseline prologue/epilogue/call by use push/pop instead of mov [sp]
* [RVM-594] - Naming of MM_Interface
** Bug
* [RVM-46] - CaffieneMark failures on AIX/PPC
* [RVM-47] - DaCapo regressions on AIX/PPC
* [RVM-58] - Linker errors under AIX/ppc
* [RVM-105] - sysNetSelect doesnt seem to be avoiding the syswrap select
* [RVM-187] - VM_OptGenericMapIterator: findGCMapIndex failed
* [RVM-221] - Specialized scanning broken on ppc64-aix?
* [RVM-234] - Annotation issues: not implemented via proxy classes, support for serialization
* [RVM-269] - unresolved invokeinterface on <null> should force classloading before rasiing NPE
* [RVM-271] - Timeouts for stress are not correct
* [RVM-303] - Cannot modify accessible final instance fields
* [RVM-325] - Spec JVM 98 jack failing with OOMs
* [RVM-327] - Performance degredation in IA32 assembler
* [RVM-332] - Eclipse 3.2 fails to run on the RVM
* [RVM-369] - PPC32-OSX - Crash in GC when a stack contains native frames
* [RVM-372] - Integer overflow in sysNanoTime
* [RVM-423] - Fop performance strangeness
* [RVM-442] - All poisoned tests fail PPC 32
* [RVM-454] - The sub-test TestAnnotationInheritance of the basic tests is excluded until it can be fixed
* [RVM-458] - Poisoned bit test highlights JNI problem
* [RVM-469] - Fix IA32 assembler to use Address instead of Offset for absolute addressing
* [RVM-482] - Crash when running Production_Opt0_perf portion of compiler-dna test run
* [RVM-483] - Conditionalize fsqrt generation on PowerPC
* [RVM-492] - Dumping empty stack kills VM
* [RVM-493] - VM_Annotation.readValue doesn't use the correct classloader
* [RVM-494] - Conversion between type descriptors, class names, and file names in VM_Atom behaves inconsistently
* [RVM-495] - Crash during first major GC on PPC64 tests when running with -X:processors=2
* [RVM-497] - New scan boot image assertion failing poisoned tests
* [RVM-499] - Overflowing JTOC during DaCapo eclipse run on PPC64 AIX
* [RVM-500] - No such field error: TreeMap$SubMap.minKey
* [RVM-504] - Increase time out on DaCapo eclipse for rvmppclnx64
* [RVM-506] - The field last in VM_HashMap and VM_HashSet is only ever set to null
* [RVM-514] - Pure on mathMagic breaks dacapo sunflow
* [RVM-521] - Freshly checked out r14346 fails to build with an uninterruptible violation
* [RVM-526] - GNU Classpath build: paths too long in check_jni.sh
* [RVM-527] - Harmony doesn't build 32bit libraries as necessary for x86_64 build
* [RVM-529] - Implement reflection API for Harmony
* [RVM-531] - Boot image stack size too small
* [RVM-541] - gc stress failures
* [RVM-542] - Incorrect encoding of inner class native method names
* [RVM-543] - Invoking JNI_OnLoad of unrelated libraries when loading a library with no JNI_OnLoad
* [RVM-544] - Class argument in NewObject ignored
* [RVM-547] - Building the boot image with the opt compiler and Harmony fails
* [RVM-550] - Implementation of isZero magic in PPC baseline compiler can overflow expression stack and corrupt stack frame
* [RVM-571] - BigDecimal Pure annotations causes crash on SPECjbb2005 for FullAdaptiveMarkSweep
* [RVM-582] - Fix all javadoc "syntax" errors
* [RVM-583] - Incorrect rounding on simplified integer divide
* [RVM-585] - RVM Identity HashMap doesn't use identity hashCode.. only identity.equals
* [RVM-587] - IdentityHashMaps in the bootimage
* [RVM-588] - Assertion failure in BC2IR for primitive array load
* [RVM-597] - Array index out of bounds in BC2IR generation context
* [RVM-598] - Increase use of unpreemptible
* [RVM-599] - New poisoned test failures on x86
* [RVM-608] - Object replacement ignores finalizer methods
** Task and Sub-Task
* [RVM-37] - Doccument the command line options
* [RVM-42] - Build/Test infrastructiure to compute compiler DNA
* [RVM-490] - Null Pointer Exception in gnu.xml.transform.ParameterNode.clone
* [RVM-518] - Change build logic so that the VM prefix on a class name does not control inclusion in the bootimage
* [RVM-519] - Rename classes currently with VM_ prefix that will be confusing without it
* [RVM-520] - Update userguide to remove VM_ (and OPT_) prefix globally.
*Jikes RVM 2.9.3 Release Notes (May 9, 2008)
** Sub-task
* [RVM-224] - Push OSR-specific fields in VM_NormalMethod to subclass/side data structure
* [RVM-450] - Prevent compilation at max opt level before some dynamic call graph information has been gathered
* [RVM-453] - Testing framework missing failures in basic tests that use diff for sanity.
** Bug
* [RVM-196] - VM_Processor not assignable with VM_GreenScheduler
* [RVM-314] - Support for Java 1.4 assertions
* [RVM-315] - java.lang.Method.invoke changes the parameters
* [RVM-316] - A Null pointer for the UTF8CHARSET in java.util.zip.ZipFile$PartialInputStream
* [RVM-326] - Failing basic tests don't signal failure
* [RVM-330] - Thread.sleep() does not handle interrupts correctly
* [RVM-339] - Image bloat (code +25% & data +5%)
* [RVM-340] - Annotations don't handle arrays of primitive types correctly
* [RVM-342] - NPE with advice files
* [RVM-347] - PPC 64 regressions and Intel stress regressions since the introduction of read barriers
* [RVM-351] - Javac regression
* [RVM-352] - Running many iterations of _200_check fails floating point remainder test
* [RVM-353] - Production Opt 0 builds broken
* [RVM-355] - Complete SPEC JVM with 20 iterations dies in GC
* [RVM-357] - Fatal error when synchronising on null objects
* [RVM-365] - PPC (AIX) Stack Scanning Appears Broken
* [RVM-368] - Compiler confusion over equal but non-identical objects
* [RVM-374] - Static field allocation is non-deterministic
* [RVM-380] - We create a lot (15909) optimization plan atomic elements using 572724bytes in the boot image
* [RVM-383] - Branch likely and unlikely prefixes show up as LOCK prefixes in x86 disassembler output
* [RVM-394] - Tune inlining of arraycopy
* [RVM-412] - Latent branch optimization bug when maximizing blocks
* [RVM-424] - Multianewarray confusion in opt compiler
* [RVM-439] - OSR triggering code misuses suspend/resume
* [RVM-447] - Inline size estimation reduction factor calculation over rates precise information causing bloat and slow down
* [RVM-452] - Off-by-one error in "VMField.checkReadAccess" and "VM.checkWriteAccess"
* [RVM-456] - Clean build broken
* [RVM-464] - Opt compiler ldc_w for class literal broken
* [RVM-466] - Four tests in test run "tiny" fail when compiled with -X:aos:initial_compiler=opt -X:aos:enable_recompilation=false
* [RVM-467] - BURS performing illegal reordering to before PEI
* [RVM-468] - Instanceof test differs in opt compiler from baseline for instanceof/checkcast of magic[][]
* [RVM-478] - Redesign AIX native method Linkage conventions to protect CMID field from being smashed by native code saved CR
** Improvement
* [RVM-81] - Annotations in java.lang classes
* [RVM-195] - Enable inlining of @Pure methods
* [RVM-274] - Remove OPT_ prefix from all opt compiler classes
* [RVM-276] - opt compiler package structure
* [RVM-304] - Improve performance of chacter encoder when encoding to and from arrays
* [RVM-305] - Add final annotations to java.io.OutputStreamWriter
* [RVM-308] - Greater use of StringBuilder rather than StringBuffer
* [RVM-309] - Greater use of "<Number>.valueOf" rather than "new <Number>"
* [RVM-310] - Class library fields that could be final aren't final
* [RVM-311] - String toUpperCase and toLowerCase perform a String.equals to see if the Locale is Turkey per invocation
* [RVM-322] - Intel assembler register naming improvement required
* [RVM-331] - Implement support for MMX registers
* [RVM-343] - Support for hardware SQRT instruction
* [RVM-344] - Simplifier rule for square root operator
* [RVM-378] - Avoid replicating field and method vectors
* [RVM-379] - Don't replicate OSR_EncodedOSRMaps
* [RVM-381] - Upgrade to Classpath 0.97
* [RVM-385] - Refactor reflection to use VM interface
* [RVM-387] - Baseline compiler emits RegDisp instructions when the Disp is 0
* [RVM-390] - VM_Statics/JTOC space saving has cost us single iteration fop performance
* [RVM-391] - Assign CPU # to each VM_Processor to have more predictable performance results.
* [RVM-392] - Improvements to ZipEntry
* [RVM-395] - Local common sub-expression elimination of Pure method calls
* [RVM-408] - Simple elimination of stack traces
* [RVM-417] - Switch performance runs to using a profiled image
* [RVM-421] - Pre-allocate 1 set of exception registers for athrow
* [RVM-422] - Update to latest Classpath j.u.c.CopyOnWriteArrayList
* [RVM-431] - Fix processor JNI entry/collector rendezvous race
* [RVM-433] - Increase final fields in java.nio
* [RVM-435] - Don't allocate memory when converting C buffers to Strings or Classes
* [RVM-437] - Integer.toString doesn't keep cache of common values
* [RVM-451] - Structure of code in GNU Classpath java.util.Vector and java.util.Arraylist interacts poorly with inlining
** New Feature
* [RVM-210] - Add Image sizes tracking to Regression report and mailout
* [RVM-319] - Create X10 test harness
* [RVM-406] - Add Immix garbage collector
* [RVM-441] - Sticky mark bits collector
* [RVM-457] - Immix Garbage Collectors
** Task
* [RVM-425] - Implement 2d array helper for PPC baseline
** Wish
* [RVM-266] - Provide preliminary support for a non-copying unsynchronised StringBuffer implementation
*Jikes RVM 2.9.2 Release Notes (October 20, 2007)
** Highlights
*** r13697: Switch from hijacking pthread system calls to using Classpath's
portable native sync (which uses JNI for locking rather than pthread locks).
*** r13676: ASM based tool to add annotations to class library.
*** r13413: Initial support for IA32 Solaris, capable of running basic tests
and partially running DaCapo benchmarks.
*** r13404: Added support for using the perfctr library to access hardware
performance counters (http://user.it.uu.se/~mikpe/linux/perfctr/).
To use this, perfctr must be installed on the host (involves a kernel
patch), and config.include.perfctr must be set to true at build
time (or simply use the "-p" option to buildit). At run time, the MMTk
harness mechanism must be used to report the counter values at the end
of the harnessed execution.
*** r13223: Fixes to enable the Jikes RVM to run on PPC32 OS/X, this
functionality had been broken for at least half a year.
*** r13106: refactored thread model to separate out the decision of green and
native threading. Improvements required in the area of OSR and collector
threads. This solves many issues with thread model including RFE-1147574,
RVM-62, RVM-64, RVM-55, RVM-125. The M-to-N greenthread model now passes
the majority of the JSR-166 TCK (some issues are class library related)
so java.util.concurrent can be used with the RVM. A stub is provided so
that native thread support can be added at a later date.
** From JIRA:
** Sub-task
* [RVM-217] - Recode spin loop in org.mmtk.utility.deque.Deque spinWait to reduce frequency of nanoTime calls
* [RVM-230] - Determine whether patching Classpath sources is preferable to bytecode engineering adding annotations
** Bug
* [RVM-55] - A thread that is interrupted prior to being scheduled won't interrupt
* [RVM-62] - Interrupted exceptions are generated in the caller of Thread.interrupt instead of by the
thread throwing the interrupted exception
* [RVM-63] - Unsafe.park time values are incorrectly scaled
* [RVM-87] - NPE in ScanThread.setUpFrame:360
* [RVM-99] - MeasureCompilation reporting broken in production/development builds on ia32-linux
* [RVM-104] - eclipse occasionally fails with segmentation fault
* [RVM-105] - sysNetSelect doesnt seem to be avoiding the syswrap select
* [RVM-109] - Restore documentation to org.vmmagic.pragma.*
* [RVM-112] - Verification error when building Jikes RVM 2.9.1 using HotSpot as host JVM.
* [RVM-113] - MarkCompactLocal.compact():80 assertion failure
* [RVM-114] - Ensure time is positive in test results
* [RVM-124] - NullPointerExceptions in stress tests
* [RVM-125] - Waiting on a lock that should raise illegal monitor state exception will actual fail on an assert
* [RVM-129] - GCTrace fails with "Cannot understand directive!"
* [RVM-131] - Collection.joinCollection() called when thread switching disabled
* [RVM-133] - Increase the amount of memory used during nightly tests
* [RVM-140] - Conflicting virtual address request for space "trace" on ppc32-linux
* [RVM-141] - SharedDeque assertion failure during exit for GCTrace
* [RVM-143] - VM_BuildBB.determineTheBasicBlock may not be correct for goto_w operation
* [RVM-144] - JikesRVM can't load certain classes e.g. GNU Classpath examples or its own Ant tasks
* [RVM-150] - Unexpectedly large processor lock contention
* [RVM-154] - A shutdown hook can hang RVM
* [RVM-155] - SynchronizationBarrier.removeProcessor assertion failure
* [RVM-159] - OSR-guarded inlining should not be allowed in uninterruptible code
* [RVM-181] - ClassCastException in OPT_Simplifier when running antlr DaCapo
* [RVM-182] - invalid frame address
* [RVM-183] - Thread sitting on >1 queue
* [RVM-187] - VM_OptGenericMapIterator: findGCMapIndex failed
* [RVM-194] - Assertion failure in OSR State Extractor running chart
* [RVM-196] - VM_Processor not assignable with VM_GreenScheduler
* [RVM-198] - NPE when unlocking lock
* [RVM-201] - Classpath AWT is broken
* [RVM-203] - terminal not in grammar: new
* [RVM-204] - Reduce wasted code space on inline allocation path
* [RVM-206] - Stack walking in MMTk not correctly identifying not yet obsolete methods?
* [RVM-209] - Bootimage bloat broke ppc64-aix images
* [RVM-213] - jbb2005 performance regression
* [RVM-216] - MMTk assertion failure during jbb large heap performance runs
* [RVM-219] - Address.attempt*() compiles incorrectly on IA32 with Jikes 2.9.1
* [RVM-220] - jbb2005 GC performance mode: Warning: number of GC phases exceeds MAX_PHASES
* [RVM-242] - Build break: BaseBaseGCTrace
* [RVM-245] - Change to deques appears to have significantly reduced hsqldb performance
* [RVM-270] - NPEs from barrier code not working
* [RVM-277] - lusearch fails on PPC32 due to validation error
* [RVM-279] - Performance regression
* [RVM-293] - Class loaders do not isolate packages with the same name
* [RVM-297] - Classpath 0.96 configure problems with JDK 1.6
* [RVM-298] - DaCapo chart broken on classpath 0.96
* [RVM-299] - possible performance regression on xalan on classpath 0.96
* [RVM-301] - JSR 166 failures
** Improvement
* [RVM-16] - Constant folding values from TIBs produces failures
* [RVM-27] - float/double to int/long conversions are overly expensive
* [RVM-51] - Switch from pthread hijacking back to portable native sync for gtk AWT threading
* [RVM-54] - Switch to Claspath's java.lang.Thread
* [RVM-64] - Flexible thread model
* [RVM-82] - Exceptions in Uninterruptible code should result in immediate fatal errors
* [RVM-94] - Enable SSE C/C++ compiler flags
* [RVM-164] - Use clock_gettime to implement sysNanoTime
* [RVM-179] - Move java/lang/String out of libraryInterface and into a patch against Classpath
* [RVM-185] - Reduce cost of ThreadLocal(s) to improve Jython performance
* [RVM-189] - Use will never move information from MM_Interface when generating constant operands
* [RVM-191] - Improve inline size estimator in VM_NormalMethod to account for getstatic of final primitive
fields being folded by opt compiler
* [RVM-218] - Use VM_Magic.pause in spinwait loops
* [RVM-282] - Make dumpVirtualMachine more defensive
* [RVM-285] - Switch AOS call graph profiling to use CBS framework from Arnold & Grove 2005
** New Feature
* [RVM-121] - Separate code space for dynamically generated code
* [RVM-231] - Alignment checking (for IA32 and debugging purposes only)
** Task
* [RVM-38] - VM_BaselineBootImageCompiler should use System.nanoTime rather than DNA for compilation time
* [RVM-286] - _201_compress took a 10% hit when we switched to Arnold/Grove call graph profiling; investigate
** Bug Fixes
*** r13004: constant folding of TIBs is now safe as precise information on
register operands has been fixed.
** Other Notes
*** r12922: Incorrect annotating code as logically uninterruptible on
interruptible code will now produce an error.
*Jikes RVM 2.9.1 Release Notes (July 2, 2007)
** Highlights
*** A major stability drive has resulted in Jikes RVM being able to
reliably run the entire DaCapo benchmark suite on ia32-linux.
The following issues were resolved to make this possible:
multiple benchmarks:
r12809: Missed lock prefix (stack scanning failures).
r12737: GC map iterator crashed on dynamic link frames.
eclipse:
r12302: Classpath RandomAccessFile incorrectly truncated.
r12394: PLOS exhaustion bug in MMTk.
r12375: ThinLock of interface from OPT code.
r12815: Bad GC map in JNI methods.
r12722: Fix for GC map bugs around expection throws.
lusearch:
r12602: Floating point precision (SSE2).
r12633: Parallel hardware traps.
hsqldb:
r12683: Invalid assertion in VM_Thread.
xalan:
r12742: Missing static initializer broke jar caching (halves runtime).
r12753: FileOutputStream wastefully copying arrays (halves runtime).
*** New eclipse-project ant target to make it easy to get up and running
in eclipse.
*** As part of the stability drive, many O2 optimizations in the
optimizing compiler have been moved to O3 (and thus are not enabled by
default). The performance impact of this has been mixed. For example,
on ia32-linux SPECjvm98 performance actually improved by 29% due to
massive improvements in mtrt and mpegaudio enabled by SSE2. Performance
on SPECjbb2005 degraded by 3-10%. There were significant gains on some
individual DaCapo benchmarks (most notably xalan).
Re-building an aggressive O2 optimization package by stabilizing
current O3 optimizations and by building new optimization passes will be
one of the focus areas for the project going forward.
*** The Intel back-end no longer has accumulate LIR form, we go directly from
non-accumulate form LIR to accumulate form MIR. This simplifies and
improves instruction selection by reducing the replication of rules to
accomodate for accumulate form expansion.
*** Switch to using Classpath's Throwable code and implemented VMThrowable.
Implemented a certain amount of stack frame elision and added support for
getStackTrace.
*** Support for @Pure and @RuntimeFinal annotations. The former allows
simplification of non-side effecting code without inlining (particularly
useful when we can't inline with syscalls or jni). The latter provides support
for booleans that are constant during runtime but vary at boot image write
time. These booleans can be constant folded now.
*** The recommended version of GNU classpath is 0.95.
Earlier versions of GNU classpath are not supported.
*** SSA expression folding has been expanded to cover far more cases than
previously. This leads to a > 1% speedup on benchmarks such as SpecJBB'05.
*** Source code analysis of the code base has been enabled using PMD
(http://pmd.sourceforge.net/). Basic analysis is enabled by default and
this will expand over time.
*** Methods in VM_Type that duplicated functionality in VM_TypeReference
now delegate to associated VM_TypeReference.
*** The ability to force a garbage collection after N allocations or at every
exception delivery has been revived and is controlled by the configuration
variable config.stress-gc-interval which should be set to non-zero value to
enable.
*** Simplistic debug symbols to show boot image method entry points in
gdb. Resolved issues with rvm script so this works with rvm -gdb now.
*** New faster primary regression machine (Core 2 Duo) for ia32-linux
at ANU. Resolved performance issues with previous regression machine.
*** Introduced the capability to patch against classpath versions. This allows
us to keep backported performance optimizations and/or bug fixes
*** Implementation of returning global JNI references from C to Java.
*** VM_ prefix added to classes that must be included in the primordial
class list. Classes affected include; PrintLN, PrintContainer,
ApplicationClassLoader, DebuggerThread, FinalizerThread, MainThread,
PPC_Disassembler, opcode_tab and opcodeXX.
*** Classes in the adaptive package have been reorganized into packages
to match the directory layout in 2.4.6 release.
*** Classes that resided in the objectmodel directory in 2.4.6 have
been moved in to the "org.jikesrvm.objectmodel" package.
*** Classes that resided in the scheduler directory in 2.4.6 have
been moved in to the "org.jikesrvm.scheduler" package.
*** Classes that resided in the runtime directory in 2.4.6 have
been moved in to the "org.jikesrvm.runtime" package.
*** Streamline some Intel operations, rotates, prefer branches to conditional
operations, use xor instead of move to zero a register.
** Bug fixes
*** Baseline GC map bug for handler blocks affecting SPECjbb2000
(r12685).
*** Classpath race in cloning of XML Node affecting SPECjbb2005
(r12395).
*** Fix final field chasing in OPT_Simplifier and re-enable constant
folding for fields.
*** A GC map generation problem caused by casting Address to Objects
and has been eliminated.
*** Fix for annotations that carry values.
*** Fix saturation on branch profile counters.
*** Fix IA32_Test's register restrictions to avoid generating incorrect code.
** Other Notes
*** Support for Intel branch hints, used in the baseline compiler that
can't modify its code layout.
*** We now check for illegal upcasts from unboxed vmmagic to Java types.
*Jikes RVM 2.9.0.1 Release Notes (April 1, 2007)
*** Backport commit 11875 to fix bug when building GNU classpath for
for the first time.
*Jikes RVM 2.9.0 Release Notes (March 15, 2007)
** Highlights
*** The five months since the release of 2.4.6 have been one of the most
active periods in the open source history of the project. A number
of significant changes have been made to clean up and modernize the
code base to enable future evolution.
*** We have made large scale changes to the structure of the source code
to prepare for development of Jikes RVM from within standard Java IDEs.
*** There is a new, ant-based, build and test system that have replaced
jconfigure and RunSanityTests.
*** We now use ecj (the Eclipse Java compiler) instead of jikes to compile
our Java source files and have eliminated the preprocessor.
*** The userguide has been moved from latex into a wiki. It has been updated
to describe the new build and test systems.
The release tarball contains a pdf and html version of the userguide.
*** We now support Java5, we have switched to using the generics branch
of GNU Classpath, and much of Jikes RVM has been rewritten to use
Java 5 language features and generic types.
*** We have switched to using Java5 annotations for pragmas/magic.
*** The recommended version of GNU classpath is 0.93-generics.
Earlier versions of GNU classpath are not supported.
*** Support in the PPC baseline compiler for storing local variables in
registers.
*** Refactor of type system and JTOC.
*** Support for packing subword sized fields in objects. Removal of hand
packed fields. Various memory savings.
*** System calls now supported in any file using SysCall annotation on a
native method. VM_SysCall now generates implementation from annotation.
VMMath now implemented using system calls.
*** Support for chasing final fields reached from literal or static final
fields. Greater optimization of object constant operands.
*** Greater support for 387 constants. Simplification of 387 BURS rules.
** Bug fixes
*** Yes...many :) For details: svn log -r10915:11866
** Other Notes
*** The Quick compiler has been deleted. It is now available as a
patch on the research tracker, or via older releases (2.3.4
through 2.4.6).
*** The HPM (Hardware Performance Monitor) code has been deleted.
It is now available on the research tracker (item 1613215),
by svn diff -r11162:11161, or in releases through 2.4.6.
*** This release is known to not work on OS X. We would like to get this
platform working again; if you use Jikes RVM on OS X and are willing to
help fix it, please let us know.
*Jikes RVM 2.4.6 Release Notes (released October 19, 2006)
** Highlights
*** The recommended version of GNU classpath for Jikes RVM 2.4.6 is 0.92.
Earlier versions of GNU classpath are not supported.
*** A large scale restructuring of the source tree was performed
to prepare for making it easier to develop Jikes RVM using Eclipse.
All files except for the Java source to Jikes RVM itself was moved
out of the RVM_ROOT/rvm directory. RVM_ROOT/rvm itself has not yet
been reorganized so that package/directory structures match, but we
anticipate this happening in the near future.
*** Major refactoring of VM<->MM interface
*** MMTk: Added nurseries to each LOS and created a distinct "primitive large
object space" (PLOS).
*** The optimizing compiler is now reentrant and a command line options
to enable parallel bootimage compilation has been added to jbuild
(-numThreads=<n>).
*** Updates and improvements to GCspy support (patch 1576064).
** Bug fixes
Too many to list individually in the release notes. Yeah!
Overall a significant increase in system stability since 2.4.5.
See svnlog -r10694:10905 for the gory details.
** Other Notes
*** Change bootimage options for the opt compiler to use default static
inlining heurisitcs (instead of being more aggressive). This reduces
bootimage size by 20%, bootimage build time by 2-3x, and appears to have
minimal performance impact.
*** We now implement JNI_OnLoad functionality.
*** Modifications to the boot image writer and VM.boot so that certain
known fields are populated during boot image write time, thereby
avoiding the need to run class initializers in VM.boot. Typically
we fail to populate a field value when it's part of the bootstrap
JVM and in some way protected. Further improvements to this mechanism
are in progress.
*** If GNU classpath is built with JAWT support, the Jikes RVM build process
now copies the additional native libraries it requires.
*** Added regression testing support for latest version (2006-10-RC2) of
DaCapo benchmarks and for SPECjbb2005. Also updated soot test to 2.2.3.
*** We can now build using the IBM 5.0 JVMs as hosts. However, you
must set HOST_VM_TYPE=IBM-50 to activate code in the bootimage
writer makefile that works around what appears to be a JIT bug.
*** GNU classpath support for java.lang.instrumentation and the
-javaagent command line argument was added.
*Jikes RVM 2.4.5 Release Notes (released August 14, 2006)
** Highlights
*** The recommended version of GNU classpath for Jikes RVM 2.4.5 is 0.92.
GNU classpath version 0.91 will work, but Jikes RVM 2.4.5 will not
compile against versions of GNU classpath before 0.91.
*** Classpath AWT and Swing tests now run with the Jikes RVM. We have changed
from using the portable native sync code, and addressed issues with M-to-N
threading.
*** We can now load and run Java 1.5.0 Java class files. Support includes
building the Jikes RVM using a 1.5.0 javac compiler and running the
SPEC JBB 2005 benchmark. Includes reflection support for generic types.
*** MMTk changes & refactors. A mark-compact collector has been added. A
number of key bugs have been fixed, both in the vm (eg baseline GC
maps), and in MMTk proper. Completed a major refactoring of
"locals" to explicitly separate per-mutator and per-collector
contexts. This generalizes away from assumptions of the current
Jikes RVM threading model.
*** We can now load runtime and non-runtime annotations. Runtime support
is limited as Classpath is missing the base annotation definitions.
A work around is to switch on non-runtime annotation loading in the RVM.
NOTE: This requires classpath 0.91 or better.
*** Added ability to perform boot image root scanning, and thus avoid
tracing through the boot image at each full heap GC. As a result,
we've added a third region to the bootimage; all config files must
now define BOOTIMAGE_RMAP_ADDRESS in addition to BOOTIMAGE_DATA_ADDRESS
and BOOTIMAGE_CODE_ADDRESS.
** Bug fixes
1442437: to match Sun behavior, java.lang.Class.newInstance now passes
through exceptions instead of wrapping in InstantiationExceptions.
NOTE: This requires classpath 0.90 or better.
1505824: Exit cleanly when the jar file given to -jar doesn't contain a valid manifest
1494784: Intermittent build failure on IA32 due to imprecise estimation of
instruction size in code used for short forward jump optimization.
1147554: MarkSweep double-mark: corrects performance problem in MMTk MarkSweep
code which was marking both a bit in the object and a side mark map.
** Other Notes
*** IA32 BURS improvement for special case of COND_MOV contibuted by
Garrett Kolpin
*** Improvements to OPT_Simplifier to catch a number of additional cases.
*Jikes RVM 2.4.4 Release Notes (released March 15, 2006)
** Highlights
*** The recommended version of GNU classpath for Jikes RVM 2.4.3 is 0.90.
Classpath 0.18, 0.19, and 0.20 are likely to still work, but have not
been tested.
** Bug fixes
** Other Notes
*** There is now an x86_64-pc-linux-gnu config file for build Jikes RVM.
*Jikes RVM 2.4.3 Release Notes (released February 24, 2006)
** Highlights
*** The recommended version of GNU classpath for Jikes RVM 2.4.3 is 0.20.
Classpath 0.19 and 0.18 are likely to still work, but have not been tested.
Support for all version of GNU classpath prior to 0.18 has been removed.
*** Simple GC sanity checking tool added to MMTk. Contact: Daniel Frampton.
*** The RVM bootimage is now generated into two separate files, one for
code and one for data. These files are mapped separately into distinct
address ranges. As a result of this change, instead of defining
BOOTIMAGE_LOAD_ADDRESS in your config file, you must define
BOOTIMAGE_DATA_ADDRESS and BOOTIMAGE_CODE_ADDRESS.
All the default configu files (config/*) have been updated,
but if you have local copies of these files, you will need to update them.
*** Loop Versioning optimization in the opt compiler
contributed by Ian Rogers and Jisheng Zhao.
Loop versioning replicates loop bodies and removes from one of
those loop bodies runtime exceptions that can be explicitly
tested. The phase runs as an SSA optimization so as only to
consider true dependencies. To capture the loop structure the
phase uses an annotated LST node. The annotations capture
information about the initial and terminal loop iterator values,
as well as the loop iterator instructions. This phase is currently
disabled by default until we can fix bugs in the optimizing compiler
that it exposes.
*** The optimizing compiler's Local CSE pass now exploits commutativity,
patch contributed by Bernardo Pastorelli.
** Bug fixes
*** defect 1240267: remove FIXED_JTOC option
*** defect 1411486: Bug in IA32 BT (Bit Test) instruction
*Jikes RVM 2.4.2 Release Notes (released on November 21, 2005)
**Highlights
**The recommended version of GNU classpath for Jikes RVM 2.4.2 is 0.19.
Classpath 0.18 is expected to still work, Classpath 0.15 and 0.17 may
still work, but have not been tested.
** RunSanityTest support for DaCapo benchmark suite. DaCapo is now included
in the nightly Jikes RVM regression tests. We continue to solicit
contributions of more RunSanityTest harnesses for additional benchmarks.
** Numerous bug fixes in the opt compiler to better maintain IR invariants
during. Contributed by Ian Rogers.
**Bug Fixes
*** defect 1293619: Null Pointer Exception in VM_TypeReference
*** Minor fixes for OS X builds.
*Jikes RVM 2.4.1 Release Notes (released on September 15, 2005)
*Highlights
**The recommended version of GNU classpath for Jikes RVM 2.4.1 is 0.18.
Classpath 0.17 is expected to still work, Classpath 0.15 may still
work, but has not been tested.
** Support for triggering recompilation of dynamically loaded methods
It is now possible for an application running on Jikes RVM to request
that the system recompile all dynamically loaded methods at any point
in the application. This can be accomplished by a new VM_Callbacks
method. Details are in the user's guide.
*Jikes RVM 2.4.0 Release Notes (released on August 11, 2005)
*Highlights
** OS X is working again.
Support for running Jikes RVM on OS X has been restored.
** Major MMTk Refactoring.
The most significant refactoring to MMTk since the initial release has
been completed. The MMTk Plan class hierarchy has been split to more
clearly distinguish global and local state, and move toward a more natural
Java style. This has involved substantial changes to the plan hierarchy,
which is now structured a set of subpackages under org.mmtk.plan. For more
information on the MMTk refactoring please refer to the tutorial and
cheatsheet in the MMTk/doc directory, both of which are intended to
assist with users migrating collectors to the new release.
**The recommended version of GNU classpath for Jikes RVM 2.4.0 is 0.17.
Classpath 0.15 is expected to still work, but has not been tested.
** Support for compiler replay
Contribution of compiler replay. Compiler replay is an experimental
methodology that eliminates memory allocation and mutator variations due
to non-deterministic sampling and adaptive optimizations.
*Jikes RVM 2.3.6 Release Notes (released on May 23, 2005)
*Highlights
** Just like 2.3.5, this release of Jikes RVM does not work on OSX.
If you use Jikes RVM on OSX please help us fix it so subsequent
releases will support OSX again.
**The recommended version of GNU classpath for Jikes RVM 2.3.6 is 0.15.
Classpath 0.14 is expected to still work.
Some older versions of classpath (0.10 and higher) might still work,
but have not been tested.
Subsequent releases of Jikes RVM will remove support for all versions of
GNU classpath prior to 0.15.
** We have fixed defect 1189786 which represented a significant regression in
Jikes RVM 2.3.5.
** After source code cleanups, most jikes warnings are now enabled by default.
*Jikes RVM 2.3.5 Release Notes (released on April 8, 2005)
*Highlights
** This release of Jikes RVM does not work on OSX.
If you use Jikes RVM on OSX please help us fix it so subsequent
releases will support OSX again.
**The recommended version of GNU classpath for this release of Jikes RVM is 0.14.
Furthermore, all of the configuration logic that controls classpath
version has been moved to $RVM_ROOT/config/classpath-version. We
suggest you may want to modify your local configuration files to source
this file, to make it easier to track changes in classpath version
across releases of Jikes RVM.
**We can build with Jikes versions 1.20, 1.21, 1.22, and CVS Head.
**We detect the version of the Jikes compiler in use and print warning
messages if that version has not been tested.
**Quick Compiler (missing from the original 2.3.4 release notes)
Release 2.3.4 marked the first public appearance
of the "Quick" compiler for the PowerPC architecture targets.
The Quick compiler is supposed to be rather smarter than the Base
compiler about register use without being nearly as complex as the Opt
compiler.
Rather smarter means that stack and local variables are kept in
registers if possible, not in memory.
Not nearly as complex means, for instance, that the Quick compiler code
generator works in a single pass, with no intermediate representations.
Right now the only additional optimizations are to remember if stack or
local variable values are already in a temporary or work register and
hence don't need to be loaded, and to postpone local variable stores
until it becomes obvious that the value really needs to be written.
One purpose of the Quick compiler is to explore how close to the
performance of the Opt compiler we can come by using just the most
beneficial optimizations. Also, we hope to use it as a starting point
for experimenting with other optimizations without having to deal with
the implementation details of the Opt compiler and the complex
interactions among the many optimizations performed by the Opt compiler.
*Other Notes:
**We've moved to http://jikesrvm.sourceforge.net.
We'll try to update the documentation, but please point out anything
that we missed.
**The release notes are now in a file called NEWS instead of
the old ReleaseNotes-<revision-number> files. Further, NEWS is an
archive; it is contains release notes for all open source versions of
Jikes RVM.
**The java.version system property is now at 1.4.2
(This is missing from the original 2.3.4 release notes)
Claiming to be at java.version 1.4.2 is a lie, of course -- we don't
really support all 1.4 features, such as assertions. However, it is a
necessary lie, since Eclipse 3.0 explicitly tests java.version and
insists upon at least 1.4.1 to run.
Similarly, java.specification.version is up to 1.4 and
java.vm.version is at 1.4.2.
*Bug Fixes:
**The problems with timezones that several users have reported with the change to daylight savings times and Jikes RVM 2.3.4/classpath 0.12 are not a problem in Jikes RVM 2.3.5/classpath 0.14.
**Calling VM.sysFail during boot image writing no longer generates a bogus "vm internal error" message.
***VM_Scheduler.traceback and VM_Scheduler.dumpStack now work properly
even when Jikes RVM is writing the boot image. This, in turn, means
that we no longer generate internal errors if we have to call
VM.sysFail during boot image writing time.
*Jikes RVM 2.3.4 Release Notes (released December 21, 2004)
THe following four sections of the document contain the Jikes RVM
2.3.4 release notes. They are:
**Highlights
**Other Notes
**Bug Fixes
**Internal Changes
*Highlights of the Jikes RVM 2.3.4 release:
**We now run Eclipse 3.0
You can use Jikes RVM to run Eclipse 3.0; this lets you run a free
IDE with a free VM.
**The port to PowerPC64 is virtually complete. There are a few fringe opt
compiler bugs remaining, but functionality has advanced to the point where
development and production images of Jikes RVM are passing almost all
regression tests.
**MMTk has been moved out of $RVM_ROOT/rvm/src/vm/memory managers to
$RVM_ROOT/MMTk. It has also been reorganized to have the directory structure
match its package structure and thus is "Eclipse-friendly." MMTk's
option parsing has been rewritten. There are other internal
changes as well.
**Major revision of the object model. All objects (arrays and scalars)
are now layed out in a "forwards" direction. This simplifies and enables
many common GC techniques (scannable heap; card-marking) at the cost of a
slight performance hit on AIX/PowerPC due to the need to make some null checks
explicit. See VM_ObjectModel.java for more details.
**XML parsing with Xalan
Jikes RVM can now be configured so it always uses the Xalan XML
parser. See the configuration file variable XALAN_J_DIR.
**We have switched to GNU Classpath version 0.12.
Versions 0.10 and 0.11 can still be used, if you set appropriate
options in the configuration file, but we recommend Classpath 0.12.
**CPU hogging fixed
Jikes RVM used to busy-wait when it was idle, waiting for I/O or
timeouts. It now sleeps properly, which is nice if you're trying
to do something else on your workstation at the same time that you're
using Jikes RVM. This closes long-standing defect # 2046.
*Other Notes for the Jikes RVM 2.3.4 release:
**The memory size options now all take sizes in bytes by default. (INCOMPATIBLE CHANGE)
They used to use a mix of default units: Megabytes (Mebibytes),
Kilobytes (Kibibytes), and "Log 2 of the frequency (in bytes)". They
now all default to bytes; please update any scripts you have
appropriately. This affects -Xmx, -Xms, and the -X:gc:* options.
**The MMAP_COPY_ON_WRITE feature now works on PowerPC/Linux and PowerPC/OSX.
(This feature was discussed in the 2.3.3 release notes.)
**The AttachCurrentThread JNI function is now partly implemented;
it now works in the common case where a thread is already attached to the VM.
**RVM_BOOTCLASSPATH_APPEND is a new environment variable that Jikes RVM
will recognize when booting. You can use it to add extensions to the
VM. Set it just as you would set the CLASSPATH environment variable.
**Major re-implementation of AOS's feedback-directed inlining and the opt
compiler's default inlining policy. Result is simpler code, lower
overhead profiling, and more effective inlining decisions.
*Bug Fixes in the Jikes RVM 2.3.4 release:
**The JNI AttachCurrentThread function now returns proper error status if it
cannot complete properly. It used to (incorrectly) always return
JNI_OK.
**Class.getResourceAsStream() and Class.getResource() would fail
with a NullPointerException when invoked on a Class object that was
loaded by the Bootstrap Class Loader.
**Defect #3601 is fixed -- java.lang.Thread no longer inherits from VM_Thread.
**Stack trace printing for trouble in the boot thread is fixed;
it no longer inappropriately elides frames.
*Internal Changes in the Jikes RVM 2.3.4 relesae:
**The VM_Magic classes have been moved to the org.vmmagic namespace,
and rationalized. Further work on refactoring magic usage (mainly in Jikes
RVM as opposed to MMTk) is ongoing.
*Jikes RVM 2.3.3 release notes sections
The following three sections of the document contain the Jikes RVM
2.3.3 release notes. They are:
**Highlights
**Other Notes
**Bug Fixes
*Highlights of the Jikes RVM 2.3.3 release include:
**GNU Classpath 0.10
Jikes RVM now uses GNU Classpath version 0.10 on all platforms. Jikes
RVM 2.3.3 should work with classpath version 0.08, 0.09 or 0.10.
However, we recommend that users switch to classpath 0.10, to get the
new features and because we run our nightly regression tests against
Classpath 0.10.
(If hand-building GNU Classpath 0.10 or 0.09 on AIX, follow the
directions in rvm/doc/classpath-0.10-on-AIX.txt)
**GCspy garbage collection visualization tool
Jikes RVM now includes support for the GCspy tool for visualizing the
garbage collector's behaviour. Many thanks to Richard Jones of the
University of Kent for this contribution. (This item should have been
included in the 2.3.2 release notes, but was inadvertently omitted.)
Documentation is in the user's guide.
**PowerPC/Linux/64 support with baseline compiler
Jikes RVM now runs on 64-bit PowerPC Linux to the same extent as it
does on 64-bit PowerPC AIX. All regression tests pass with the
baseline compiler. Porting of the opt compiler to 64 bit PowerPC is
an open work item; contributions welcome!
**Startup time slashed
The startup time for Jikes RVM to run a simple "Hello World" program
on Linux/x86 went down by a factor of 8. This is because we now use
mmap()'s copy-on-write feature, instead of reading all 30 MB of boot
image into an area mmap()'d with MAP_ANONYMOUS.
(There is a long comment in src/tools/bootImageRunner/IA32/libvm.C
describing this; search for the preprocessor condition #ifdef
MMAP_COPY_ON_WRITE). If this creates problems, disable them by
#undefining MMAP_COPY_ON_WRITE in libvm.C.
This change should be ported to PowerPC Linux by someone who runs that
platform.
**Jikes RVM installable as a production runtime environment
You can install Jikes RVM on your system as a production runtime
environment for Java. Once you've built Jikes RVM, cd to
src/tools/install and read the file README to find out how to
install a Jikes RVM executable as /usr/bin/rvm (or in some other
location of your choice).
**JNI 1.2 and 1.4 implemented
We have implemented all of the missing functions from JNI 1.2 and 1.4.
There are still aspects of the JNI implementation that can be
improved; volunteers welcome.
**MMTk
Improvements to write barrier implementation, cleanup to mechanisms
for specifying alignment constraints in allocation code, and
refactoring of reference processing (java.lang.ref.*).
*Other Notes for the Jikes RVM 2.3.3 release:
**Compiler DNA updated -- x86 adaptive system now uses Opt level O2 sometimes.
The compiler DNA (the precomputed cost & benefit of using various
compiler/optimization levels) has been updated. Due to improvements
over the past 10 months, the optimizing compiler's level 2 is now
better than level 1, on average, on both platforms. (Previously,
this was not the case on IA32.) The result is that the adaptive
system may now choose to use Opt level 2 on some methods because
its model can now determine that it will sometimes be beneficial
to do so.
*Bug Fixes for the Jikes RVM 2.3.3 release:
** Calls to the JNI function pair
GetPrimitiveArrayCritical/ReleasePrimitiveArrayCritical can now be nested.
** Fixed a bug in the GC map iterator code (both platforms) that was returning
references multiple times in dynamic linking frames.
** Fixed a bug in the GC map iterator code on PPC that was failing to return
spilled parameters in dynamic linking frames.
*Jikes RVM 2.3.2 release notes sections:
The following three sections of the document contain the Jikes RVM
2.3.2 release notes. They are:
**Highlights
**Other Notes
**Bug Fixes
*Highlights of the Jikes RVM 2.3.2 release include:
** Jikes RVM 2.3.2 requires classpath 0.08.
**64-bit port of baseline compiler and runtime system to PowerPC64/AIX is
complete. We have been passing all regression tests on PPC64/AIX for
over a month. NOTE: porting of the optimizing compiler has not yet begun
(contributions/collaborations welcome) and therefore no configuration
with the optimizing compiler will work in 64 bit mode.
** The default GC plan for the prototype, prototype-opt, development,
and production configurations has been changed from CopyMS to GenMS.
GenMS is a generational collector with an Appel-style nursery and a
mark-sweep mature space.
** Jikes RVM now runs on newer versions of Linux/PowerPC that store the
pthread id in R2. Building Jikes RVM with RVM_FOR_SINGLE_VIRTUAL_PROCESSOR=0
is reported to work on top of these newer Linux releases, which resolves a
long-standing limitation of Jikes RVM on Linux/PowerPC.
**Source Code editing support
There are now VIM and Emacs style files supporting the Jikes RVM coding
style for C, Java, and C++. See rvm/etc/README. (This should have
been in the 2.3.1 release announcement but was not.)
**You can build Jikes RVM entirely with free software tools
You can now build Jikes RVM using the Kaffe virtual machine. Details
in the installation section in the user's guide.
*Other Notes for the Jikes RVM 2.3.2 release:
**Performance improvements in VM_Memory copying routines used by
System.arraycopy and copying GC resulted in 10% improvement in
SPECjbb2000 throughput.
*Bug Fixes for the Jikes RVM 2.3.2 release:
** Fixed problems in alignment support in JMTk that were causing crashes
in GC on PowerPC/AIX when doubleword alignment of long[] and double[]
was enabled. This is a bug that was introduced in version 2.3.1 and is
fixed in 2.3.2.
** Fixed performance problem in profile-directed inlining where the
AI Organizer forces recompilation of methods in an attempt to inline
runtime service routines that won't be inlined no matter how many
times we try. Problem has always existed, but became much more severe
in 2.3.0 release when we disabled the inlining of allocation sequences
if the size of the object was not known at compile time.
** Fixed bug in which non-virtualizable interface calls where not being
considered as candidates for feedback-directed inlining.
** We now provide all of the mandatory system properties
for the Java 1.4.2 API.
** Fixed bug in which the time zone code always thought
the user was on New York time.
** We now can print a meaningful message when we get
an ErrorInInitializerError in the early stages of booting the VM
before it is able to load in new classes. We had incorrectly left
ErrorInInitializerError out of the VM's list of boot classes.
** If an uncaught exception is thrown while booting,
we no longer try to print to the uninitialized System.err stream.
That used to trigger a NullPointerException.
*Jikes RVM 2.3.1 Release Notes (released on December 10, 2003)
The following three sections of the document contain the Jikes RVM
2.3.1 release notes. They are:
**Highlights
**Other Notes
**Bug Fixes
*Highlights of Jikes RVM 2.3.1 include:
**Mac OSX is now supported!
Generously contributed by Chris Hoffman of the University of
Massachusetts (USA).
***Details:
If you want to build Jikes RVM for Mac OSX, you will need to patch
your copy (version 0.06 or better) of GNU Classpath with the patch
file located in etc/gnu-classpath-on-mac-osx.patch.
** Seven user contributions incorporated since 2.3.0
*** Contributions were improvements to JMTk from Robin Garner,
port to OSX from Chris Hoffman, refCount coalescing extension from Ian
Warrington, bug fixes for the OSX port and opt compiler on PPC from
Alan Lawrence, implementation of -jar cmd line arg from Anders Biehl
Norgaard, and support for getting the classpath from CLASSPATH envar
from Philippe Faes.
** Switched to classpath 0.07
*** Classpath 0.06 is expected to also work with this release of Jikes RVM,
but we recommend upgrading to the latest classpath release.
**Source Code editing support
There are now VIM and Emacs style files supporting the Jikes RVM coding
style for C, Java, and C++. See rvm/etc/README.
**Build system improvements:
***If you run "jbuild" with --trace,
you actually get all of the relevant shell commands printed out.
***Under jbuild --trace=make, whenever we change directories, we report it
This is parseable by Emacs's compilation-mode. --trace=make is
enabled automatically by "--trace" without any arguments.
***More error-checking functionality added to the build system.
***Cleaned up a couple of bogus warnings
one could get in some versions of the Bourne-Again Shell (Bash).
***We can make automatic binary installations of Jikes RVM
There's a new generated script, "$RVM_BUILD/jbuild.install", that does
this. Handy way to save off a configuration that works before making
changes. Also lets us make a binary distribution of Jikes RVM, should
it be desirable.
***New build options, JAVAC_WARNING_FLAGS and JIKES_WARNING_FLAGS
These variables replace the former hardcoded "-nowarn", and can be set
arbitrarily. They default to "-nowarn" for historical compatibility.
It means you can now get helpful warnings from the Java compiler.
**Improvements to automatic download of GNU Classpath libraries.
***We now use wget to download a classpath release instead of doing a
cvs checkout. This avoids the problematic aclocal/autoconf/etc step
and means that automatic downloading should work for all users and is
now the recommended default.
**Progress in PowerPC64 port: we can run hello world
***The Jikes RVM port to PPC64 has progressed to the point where a prototype
configuration boots and can run many simple programs.
Getting this far requires that lots of things are working, so it is a
fairly significant step. However, there is more work to do with
prototype and we haven't started work on the opt compiler. This is very
much a work in progress (and members of the community are encouraged
to help!).
*Other notes for Jikes RVM 2.3.1:
***We have fixed all C and C++ compiler warnings in the Linux/x86 source
code, under GCC 2.96, GCC 3.3, and GCC 3.3.1. The only exception is
warnings from GCC 2.96 of the form:
ihnpdsm.C:4942: warning: `unused' attribute ignored
They are benign; ignore them.
***__linuxsmp__ has now been officially exorcised from the source.
*Bug Fixes in Jikes RVM 2.3.1:
***Debugging output no longer can drift into InterfaceDeclarations.h;
GenerateInterfaceDeclarations.java takes a new "-out" option.
***--trace=preprocessor now lists all of the directories consistently.
***Cross-building from Linux to AIX now works better.
You can now set RVM_ROOT and RVM_BUILD to different values on the host
and the target machines.
****Details:
If you don't have RVM_ROOT and/or RVM_BUILD set in your environment
when you run the booter on the target, then "jbuild -booter" will use
the (recorded) values from the host. If you do have one or both of
them set, they'll be used as appropriate.
It is now the case that, when you run "jconfigure" and "jbuild", you
should have your PATH set so that there is some Bash version in it
somewhere under the name "bash".
*** Other misc bugs fixed as well; see the bug tracking software.
*Jikes RVM 2.3.0.1 Release Notes (released on September 3, 2003)
2.3.0.1 is minor release of Jikes RVM to fix a few regressions in Jikes
RVM 2.3.0.
(1) Fixed build on Linux/IA32 with RVM_FOR_SINGLE_VIRTUAL_PROCESSOR=1.
The following three sections of the document contain the Jikes RVM
2.3.2 release notes. They are:
**Highlights
**Other Notes
**Bug Fixes
*Jikes RVM 2.3.0 Release Notes (released on August 28, 2003)
This is release 2.3.0 of the Jikes RVM.
There are a number of major changes and significant improvements in
overall system stability and functionality since Jikes RVM 2.2.2.
Highlights of this release include:
+ Now using classpath version 0.06
- lots of improved functionality in classpath
- fixes several critical defects in Jikes RVM
+ Build process:
- ksh has been replaced with bash
- improved robustness and error detection in all build tools
+ GC/Memory management:
- MarkSweep and CopyMS Plans are considered stable
- CopyMS is now recommended as the default memory manager
- RefCount plan is functional (does not support finalization or parallel GC)
- heapsize dynamically grows/shrinks based on utilization and load
- implementation of soft, weak, and phantom references from Chris Hoffman
- numerous bug fixes and performance improvements
- numerous code cleanups from Robin Garner and Andrew Grey.
+ Simplified configuration of Jikes RVM
- Added 4 logical configs to help new users pick a 'good' one
- All builds with opt compiler use adaptive system
+ Baseline compiler is re-entrant; parallel baseline compilation enabled
+ includes Arnold and Ryder Instrumentation Sampling Framework (PLDI'01)
+ Some progress on port to 64 bit PowerPC
- Numerous code cleanups
- More use of VM_Address, VM_Word, etc.
- Complete reimplementation of syscalls (see VM_SysCall)
+ Includes 9 user contributions since 2.2.2;
Other notes:
We fixed all Javadoc warnings in the source code.
VM_Time.now() replaced by VM_Time.cycles(). Internal interval timing
should now be done using hardware cycle counters (VM_Time.cycles)
instead of getting the time of day. VM_Time.currentTimeMicros() can be
used to get the same functionality as VM_Time.now(), but is less
efficient than VM_Time.cycles().
A number of other miscellaneous bugs in version 2.2.2
are fixed in the 2.3.0 release. See the developerWorks bug
tracking software tool and CVS history for details.
Expansions of some of the highlights listed above:
+ Classpath 0.06
Although many programs may still work with Jikes RVM 2.3.0 and
GNU classpath 0.05 we strongly recommend switching to classpath 0.06.
We no longer test Jikes RVM with classpath 0.05.
+ logical configurations
There are a large number of possible Jikes RVM configurations.
Therefore we define four ``logical'' configurations that are most
suitable for casual or novice users of the system.
The mapping of logical to actual configurations may vary from release
to release. In particular, it is expected that the choice of garbage
collector for these logical configurations may be different as JMTk
evolves. The four configurations are:
(1) prototype
A simple, fast to build, but low performance configuration of
Jikes RVM. This configuration does not include the
optimizing compiler or adaptive system. Most useful for rapid
prototyping of the core virtual machine.
(2) prototype-opt
A simple, fast to build, but low performance configuration of
Jikes RVM. Unlike prototype, this configuration does
include the optimizing compiler and adaptive system. Most useful
for rapid prototyping of the core virtual machine, adaptive
system, and optimizing compiler.
(3) development
A fully functional configuration of Jikes RVM with reasonable
performance that includes the adaptive system and optimizing
compiler. This configuration takes longer to build than the two
prototype configurations.
(4) production
The same as the development configuration, except all assertions
are disabled. This is the highest performance configuration of
Jikes RVM and is the one to use for benchmarking and
performance analysis. Build times are similar to the development
configuration.
+ Jikes RVM's Java preprocessor documented, and more robust:
The preprocessor is now documented, both in the User's Guide and via a
--help option. It is also a lot more robust than it used to be.
We wrote up-to-date documentation for the preprocessor. We also fixed
some deficiencies where certain errors in using the preprocessor would
lead to silent failures. The preprocessor was generating incorrect
exit status codes under some failure conditions; these are fixed. All
buffer overflows are now caught and fixed. All GCC warnings fixed in
the preprocessor.
The preprocessor now notices incorrect syntax (extra trailing
characters after a conditional) and correctly complains about it.
The preprocessor now handles failures and fatal signals by
conservatively deleting the output file in progress. This keeps us
from having half-updated files sitting around.
+ improvements in build process to make it stop on errors:
Any error occurring during a build of Jikes RVM now cause the build
process to immediately abort. We had, in the past, at least twice a
month received reports that a built RVM failed to work, where upon
investigation we discovered that the build process had encountered
errors earlier, and these earlier errors were the real source of the
problem.
+ ksh => bash
Jikes RVM's build process is now entirely free of KSH. This makes it
more convenient for Linux users to install the system.
+ The optimizing compiler now contains an implementation of the
Instrumentation Sampling Framework from the Arnold and Ryder PLDI'01
paper. This infrastructure can be used to reduce the overhead of
collecting profiling information using instrumentation. For details,
see the user guide section "Using the Jikes RVM to Profile an
Application -> Instrumentation Sampling Framework."
*Jikes RVM 2.2.2 Release Notes (released on June 6, 2003)
This is release 2.2.2 of the Jikes RVM.
Highlights of this release include:
+ Support for the hybrid library configuration has been
removed and the library support code refactored to simplify
the interface between the GNU Classpath libraries and Jikes RVM.
+ Defect 3383 has been resolved. We now recomend using the
Blackdown 1.4.1 SDK to build Jikes RVM on Linux/IA32 and the
IBM 1.4 SDK to build Jikes RVM on AIX/PowerPC.
+ PowerPC hardware performance monitor tracing support for
multiprocessors on AIX 5.
+ Work has stated on a port of Jikes RVM to 64 bit PowerPC.
This release includes a number of source code cleanups
(some complete, other still in progress) to make the system portable
across 32 and 64 bit systems.
+ A major rewrite of the PowerPC baseline compiler to enable it to
generate code for both 32 and 64 bit PowerPC. As part of the redesign,
the use of an explict SP register was eliminated and all accesses to
the expression stack are done by computing offsets from the FP at
compile time.
NOTE: The 64 bit PowerPC version of the baseline compiler
is very much a work in progress and is NOT expected to work in this
release.
+ Magic class (VM_AddressArray, etc) were added to enable arrays of
addresses to be safely created. The classloader was enhanced to
treat VM_Address etc as primitive types.
+ Changed PowerPC version of VM_Assembler.java to uniformly use PowerPC
mnemonics for the instructions.
+ The OutOfMemoryError exception is now thrown by the GC system.
Other notes:
+ Changes to configuration files:
added MAXIMUM_MAPPABLE_ADDRESS and dropped the "" from
BOOTIMAGE_LOAD_ADDRESS
+ sysCalls were moved from VM to VM_SysCall. Naming conventions were
changed to make parameter/return types explicit in name.
+ a number of obsolete command line arguments were removed.
Do rvm -help and rvm -X to see the current set of supported options.
A number of other miscellaneous bugs in version 2.2.1
are fixed in the 2.2.2 release. See the developerWorks bug
tracking software tool and CVS history for details.
*Jikes RVM 2.2.1 Release Notes (released on April 7, 2003)
This is release 2.2.1 of the Jikes RVM.
This release includes several major pieces of new
functionality and a number of bug fixes.
Highlights of this release include:
+ Jikes RVM is now based entirely on the GNU Classpath libraries.
The prior hybrid library solution is still supported in
this release, but will be removed in subsequent releases.
See the userguide for details on how to build with the hybrid libraries.
+ Jikes RVM can run a significant subset of the Eclipse IDE.
+ Separate name spaces for classloaders.
+ Implementation of JNI for Linux/PowerPC.
+ The addition of an on-stack replacement mechanism to
enable the adaptive system transfer execution from long-running
baseline compiled frames and to recover from speculative
optimizations. More details can be found in a CGO 2003 paper.
+ Extensions for PowerPC hardware performance counters on AIX 5.
Other notes:
+ Future release of Jikes RVM will not support using the OTI
class libaries.
+ We continue to anticipate moving completely to JMTk and removing
support for the watson collectors in a future release of Jikes RVM.
This should happen in the 2.2.2 release depending on the
performance of the JMTk MarkSweep collector.
A number of other miscellaneous bugs in version 2.2.0
are fixed in the 2.2.1 release. See the developerWorks bug
tracking software tool and CVS history for details.
*Jikes RVM 2.2.0 Release Notes (released on December 17, 2002)
This is release 2.2.0 of the Jikes RVM.
This release includes several major pieces of new
functionality and a number of bug fixes.
Highlights of this release include:
+ Jikes RVM now mostly uses the GNU Classpath class
libraries. All library packages except java.lang,
java.lang.ref, java.lang.reflect, java.io, java.net,
and java.util are from Classpath.
We are optimistic that release 2.2.1 of Jikes RVM will
be based entirely on the GNU Classpath libraries.
+ The introduction of JMTk (Java Memory management Tool kit).
+ Numerous extensions and bug fixes to core VM functionality
to support running a wider range of applications.
+ Support for gathering and exploiting dynamic
branch probabilities for conditional and multi-way branches.
+ Introduction of packages in the Jikes RVM source code.
+ A bytecode verifier contributed by L. Zhang (UCSB)
+ Support for Intel cycle counter contributed by
H. Lee and J. Palm (Colorado)
+ Support for PowerPC hardware performance counters on AIX 5.
Other notes:
+ As announced in the 2.1.1 release notes support for
VM_Magic.pragmaInline and VM_Magic.pragmaNoInline
has been removed. Code must use the exception-based
pragma mechanism.
+ jdp is no longer supported. See the userguide for details.
+ We anticipate moving completely to JMTk and removing support
for the watson collectors in a future release of Jikes RVM.
This may happen as soon as the 2.2.1 release depending on JMTk
performance and stability.
A large number of other miscellaneous bugs in version 2.1.1
are fixed in the 2.2.0 release. See the developerWorks bug
tracking software tool and CVS history for details.
*Jikes RVM 2.1.1 Release Notes (released on July 2, 2002)
This is release 2.1.1 of the Jikes RVM. The main purpose of
this release is bug fixes.
IMPORTANT NOTE: We are aware of a bug in the IBM DK for
Linux/IA32 v1.3.1 when building Jikes RVM. Stick with
version v1.3.0 until this bug can be resolved.
Highlights of this release include:
- Introduction of a new method-level runtime exception
pragma mechanism, contributed by Chapman Flack. The
system now relies on this mechanism for method-level
pragmas for uninterruptibility and inlining directives.
- Restructuring of baseline compiler to increase the
amount of platform-independent shared code.
- Stricter enforcement of uninterruptibility rules.
- Improvements to SSA optimization package to reduce
register pressure. These changes make O2 profitable
for use by the adaptive system on IA32.
- The VM_CompilerInfo classes were folded into the
VM_CompiledMethod classes.
NOTE: VM_Magic.pragmaInline and VM_Magic.pragmaNoInline
are deprecated, and will not be supported in the 2.1.2
release. Migrate code to use the new runtime exception
pragma mechanism.
To see more details on other miscellaneous bug fixes, see
the developerWorks bug tracking software tool and CVS
history. The following bugs in version 2.1.0 are
fixed in 2.1.1:
2094: PPC: frem and drem incorrect
2104: don't put <clinit> method for bootimage classes
in bootimage
2916: Race condition: installing code and invalidation
of speculative opts
2938: jazzlib documentation in userguide
2949: OptAdaptive hangs on SPECjbb2000
2988: VM_Lock.allocate can result in threadswitch
*Jikes RVM 2.1.0 Release Notes (released on June 10, 2002)
This is release 2.1.0 of the Jikes RVM. This release
provides some significant refactoring and new functionality,
as well as bug fixes.
IMPORTANT: new prerequisite! The Jikes RVM now requires
JazzLib. The jconfigure script will download it automatically.
IMPORTANT NOTE: We are aware of a bug in the IBM DK for
Linux/IA32 v1.3.1 when building Jikes RVM. Stick with
version v1.3.0 until this bug can be resolved.
IMPORTANT NOTE: The concurrent collector is no longer
functional in Jikes RVM 2.1.0.
Highlights of this release include:
- Introduction of a plug-in parameterized object model, as
described in the ECOOP 2002 paper by Bacon, Fink & Grove.
The MarkSweep configurations now have a one-word header
for most objects. All configurations now use 32-bit
address-based hashing.
- Introduction of a "magic" VM_Address type, representing
a raw address manipulated by the VM. Currently both
platforms implement VM_Address as an unsigned
32-bit integer.
- Significant refactoring of the memory management system,
to reduce replicated code and support more functionality.
- Signficant refactoring of the VM interface to the
standard libraries, introducing the
com.ibm.JikesRVM.librarySupport package to help porting
to use another standard library implementation.
- The original PowerPC linear scan implementation is
deleted, and the new IA32 linear scan implementation
has been refactored and ported to support both IA32 and
PowerPC.
- The optimizing compiler now inlines trivial callees even
at optimization level zero.
- Significant improvements in speed of the optimizing
compiler's register allocation and Heap Array SSA
construction phases.
- Some more support for miscellaneous library functions
including class loaders and some system services.
- Miscellaneous enhancements to JDP.
- Support for reading/using Soot-style class file annotations.
- Elimination of the classloading lock (VM_ClassLoader.lock).
To see more details on other miscellaneous bug fixes, see
the developerWorks bug tracking software tool and CVS
history. The following bugs in version 2.0.3 are
fixed in 2.1.0:
2128: getMostRecentlyGeneratedCompilerInfo
2359: update RunSanityTests default
2739: static synchronized methods in boot image
2763: jdp 'thread' command broken
2772: IA32: problems with physical registers in LIR
2794: Classes resolved but not in boot image
2806: IA32: genThreadSwitchTest for deterministic thread
switching
2823: VM_Lister of CMPXCHG
2831: BaseBase GC Map bug for Native Bridge
*Jikes RVM 2.0.3 Release Notes (released on March 11, 2002)
This is release 2.0.3 of the Jikes RVM. The main purpose
of this release is bug fixes.
Highlights include:
-- Linux/IA32 jdp improvements including: many bug
fixes for BaseOpt and OptOpt bootimages; requiring
hex values to be prefixed with '0x' or '0X';
clarifications in the help messages and userguide;
stepline command fixed for BaseBase builds; print
variable-name command fixed for BaseBase when
LoadLocalVariableTable is true. jdp still works
better with BaseBase builds.
-- Regression tests now have test-specific timeout
values
-- Improvements in opt's code placement phase:
(1) callee's with pragmaNoInline are marked
as infrequent
(2) uses dominator information to propagate
infrequency
-- Code cleanups in opt compiler's LIR:
(1) constant materialization delayed until
translation to LIR
(2) REF_ operators maintained through LIR.
-- Backpatching-based dynamic linking eliminated
from baseline PPC; table-based dynamic linking now
used by all compilers on all platforms.
-- Updated compiler DNA values for both AIX/PPC and
Linux/IA32; these values are used by the adaptive
system's cost/benefit model.
To see more details on other miscellaneous bug fixes, see
the developerWorks bug tracking software tool and CVS
history. The following bugs in version 2.0.2 are
fixed in 2.0.3:
2526: Invalid ref reported while scanning stack
(BaseBaseSemispace)
2585: IA32 baseline compiler - pragmaInline warnings
unreachable
2586: VM_EdgeListener.update not thread safe
2594: Method.getParameterTypes() doesn't resolve
returned classes
2616: LINTEL: bad GC map on SPECjbb2000
2623: Array index out of bounds in
OPT_ShortArrayReplacer
2629: Null Ptr exception in adaptive code using a
saved cmid
2664: Reflective operations on primitive types
2665: GC points moving into uninterruptible regions
2719: Threads on IO queue can starve
2736: java.lang.Math.random is not properly initialized
in boot image
*Jikes RVM 2.0.2 Release Notes (released on January 17, 2002)
This is release 2.0.2 of the Jikes RVM. The main purposes
of this release are bug fixes, performance improvements for
IA32, and minor improvements to the build process.
Important:
Starting in the 2.0.2 release, jconfigure now requires that
your RVM_TARGET_CONFIG file defines preprocessor directives
that specify the target architecture, operating system, and
whether or not your pthread library can support JikesRVM.
See the sample files in $RVM_ROOT/config.
Set RVM_FOR_SINGLE_VIRTUAL_PROCESSOR as follows:
-- AIX/PowerPC: 0 (SMP is supported)
-- Linux/PowerPC: 1 (SMP is not supported)
-- Linux/IA32: 1 with a 2.2 kernel (SMP is not supported)
0 with a 2.4 kernel and glibc compiled to
use the GS segment register to access
pthread-specific state.
Highlights include:
-- Improved IA32 performance (15% on specJVM98)
-- Change in IA32 register convention to make EBP
a nonvolatile regster (RVM 2.0.2 does not use a
register to hold the framepointer on IA32).
-- Simple static splitting transformation to create
intraprocedural hot traces based on static infrequent bit
-- Redundant conditional branch elimination based on
global value numbers and dominator information.
-- Code-patch guard for guarded inlining (IA32 only).
-- Adaptive configurations now GC dead code.
-- Baseline compiler now recognizes some options. See -X:base
-- Some improvements to speed of building bootImage
To see more details on other miscellaneous bug fixes, see
the developerWorks bug tracking software tool.
The following bugs in version 2.0.1 are fixed in 2.0.2:
-- 2035 LINTEL: clear FP state when delivering an exception
-- 2044 LINTEL: VM_Magic.resumeThreadExecution
-- 2126 LINTEL: RegisterOperands in memory operands
-- 2368 LINTEL: FastBaseBaseSemispace build takes forever
-- 2391 Expression Folding Fast image bug
-- 2412 JVM_FOR_SINGLE_VIRTUAL_PROCESSOR does not compile
-- 2414 race condition in generational GC write barrier
-- 2455 LINTEL: O0 compilation of _202_jess
-- 2493 Cross-platform linux builds broken
-- 2501 race condition in VM_Type.getClassForType
-- 2543 Large (>512M) large heap crash
-- miscellaneous latent bugs with SSA construction after CFG transformations
*Jikes RVM 2.0.1 Release Notes (released on November 14, 2001)
This is release 2.0.1 of the Jikes RVM. The main purposes
of this release are bug fixes, performance improvements for
IA32, and improvements to the build process.
Highlights include:
- Linux/IA32 SMP (pthreads) support on Linux 2.4.
(Handling for threads that are stuck in native code
is not fully supported on Linux at this time.)
- Improved IA32 floating-point instruction selection in
optimizing compiler.
- IA32 optimizer generates conditional moves.
- Improved load balancing.
- New optimization to coalesce moves after leaving SSA
form.
- New branch straightening optimization.
- New expression folding optimization.
- Improved iterative Heap Array SSA load elimination.
- Improvements in BURS infrastructure that increase the
effectiveness of opt compiler's instruction selection.
- IA32 baseline compiler support for write barriers.
- Numerous fixes for PowerPC/Linux build.
- New MethodCompilation callback.
To see more details on other miscellaneous bug fixes, see
the developerWorks bug tracking software tool.
The following bugs in version 2.0.0 are fixed in 2.0.1:
- 2015: GC crashes if invoked during exception delivery
- 2123: missing defs of guard registers in opts' IR.
- 2164: PPC/Linux build
- 2221: adaptive system hangs/exits
- 2227: rvm hangs instead of throwing NoSuchFieldError
- 2245: PPC/Linux build
- 2248: hangs during BC2IR due to operand lattice bug
- 2286: PPC defined TSR as nonvolatile register
*Jikes RVM 2.0.0 Release Notes (released on October 14, 2001)
This release is the first open source release of the Jikes
RVM. Previous releases, (1.0, 1.1), were released under a different
license (and name!) to 16 academic universities. This release features
major improvements to the code base and project infrastructure. Below
we highlight these changes.
Code base
* better functionality on Linux/IA32, including the release of the
optimizing compiler and adaptive system for this architecture
* concurrent reference counting memory manager
* improved file documentation and user s guide
* compatibility with the UMass GC toolkit
* many bug fixes
Project infrastructure
* visible CVS repository, allowing users to use the same code base
as Jikes RVM developers
* developerWorks tools to submit/track bugs/features
* browsable CVS repository that allows easy diffs of any revisions
of a file, as well as annotation of files based on who wrote
which line
* online javadoc-produced API and user s guide
* 4 mailing lists, including one that reports nightly regression
tests results