-
Notifications
You must be signed in to change notification settings - Fork 2
/
NEWS.txt
1437 lines (1130 loc) · 60.3 KB
/
NEWS.txt
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
-*-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 2.9.2 Release Notes (Future)
** 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.
** 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 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