1684 Commits

Author SHA1 Message Date
Ivan P Krylov
5d5bcb4bca 6979444: add command line option to print command line flags descriptions
Implementation of a nonproduct boolean flag XX:PrintFlagsWithComments

Reviewed-by: kamg, dholmes, dsamersoff
2010-08-31 03:14:00 -07:00
Tom Rodriguez
84aedee955 6969586: OptimizeStringConcat: SIGSEGV in LoadNode::Value()
Reviewed-by: kvn
2010-08-30 17:27:35 -07:00
Vladimir Kozlov
3f7bac73fe 6980978: assert(mt == t->xmeet(this)) failed: meet not commutative
Fix code in TypeAryPtr::xmeet() for constant array.

Reviewed-by: never
2010-08-30 11:02:53 -07:00
Antonios Printezis
8098787972 Merge 2010-08-30 10:58:13 -07:00
Antonios Printezis
4b9d7640a7 Merge 2010-08-30 13:00:51 -04:00
Daniel D. Daugherty
d7850a0df7 Merge 2010-08-27 21:31:15 -07:00
Tom Rodriguez
150ca9b5b1 Merge 2010-08-27 17:35:08 -07:00
Tom Rodriguez
08d9e03b81 4809552: Optimize Arrays.fill(...)
Reviewed-by: kvn
2010-08-27 17:33:49 -07:00
Keith McGuigan
6247222cf6 6980262: Memory leak when exception is thrown in static initializer
Use resource memory instead of c-heap for the exception message

Reviewed-by: phh, jmasa
2010-08-27 15:05:28 -04:00
Antonios Printezis
b513e518d2 6980206: G1: assert(has_undefined_max_size, "Undefined max size");
An assert in the management.cpp is too strong and assumes the max size is always defined on memory pools, even when we don't need to use it.

Reviewed-by: mchung, johnc
2010-08-27 13:34:14 -04:00
Christian Thalinger
6a0c40f1fe 6961697: move nmethod constants section before instruction section
This is a preparation for 6961690.

Reviewed-by: kvn, never
2010-08-27 01:51:27 -07:00
Vladimir Kozlov
45d90a7775 6976400: "Meet Not Symmetric"
Use NULL as klass for TypeAryPtr::RANGE. Add klass verification into TypeAryPtr ctor.

Reviewed-by: never
2010-08-26 11:05:25 -07:00
John Coomes
be6d973a49 6978300: G1: debug builds crash if ParallelGCThreads==0
Reviewed-by: tonyp, ysr
2010-08-25 14:39:55 -07:00
Tom Rodriguez
d486ceec9f Merge 2010-08-25 10:31:45 -07:00
Antonios Printezis
1456a4c423 6941275: G1: The MemoryPools are incorrectly supported for G1
The way we were caluclating the max value meant that it might fluctuate during the run and this broke some assumptions inside the MBeans framework. This change sets the max value of each pool to -1, which means undefined according to the spec.

Reviewed-by: mchung, johnc
2010-08-25 08:44:58 -04:00
Christian Thalinger
a4b2fe3b1c 6978355: renaming for 6961697
This is the renaming part of 6961697 to keep the actual changes small for review.

Reviewed-by: kvn, never
2010-08-25 05:27:54 -07:00
Antonios Printezis
bb23e30511 6974966: G1: unnecessary direct-to-old allocations
This change revamps the slow allocation path of G1. Improvements include the following: a) Allocations directly to old regions are now totally banned. G1 now only allows allocations out of young regions (with the only exception being humongous regions). b) The thread that allocates a new region (which is now guaranteed to be young) does not dirty all its cards. Each thread that successfully allocates out of a young region is now responsible for dirtying the cards that corresponding to the "block" that just got allocated. c) allocate_new_tlab() and mem_allocate() are now implemented differently and TLAB allocations are only done by allocate_new_tlab(). d) If a thread schedules an evacuation pause in order to satisfy an allocation request, it will perform the allocation at the end of the safepoint so that the thread that initiated the GC also gets "first pick" of any space made available by the GC. e) If a thread is unable to allocate a humongous object it will schedule an evacuation pause in case it reclaims enough regions so that the humongous allocation can be satisfied aftewards. f) The G1 policy is more careful to set the young list target length to be the survivor number +1. g) Lots of code tidy up, removal, refactoring to make future changes easier.

Reviewed-by: johnc, ysr
2010-08-24 17:24:33 -04:00
Y. Srinivas Ramakrishna
23ee6aa5f6 6910183: CMS: assert(_index < capacity(),"_index out of bounds")
Weakened a too-strong, off-by-one assert; added code to keep track of and report any overflows at appropriate level of verbosity.

Reviewed-by: jcoomes, tonyp
2010-08-23 17:51:10 -07:00
Vladimir Kozlov
3756a7daa9 6896381: CTW fails share/vm/ci/bcEscapeAnalyzer.cpp:99, assert(_stack_height < _max_stack,"stack overflow")
Check constant Tag type instead of calling get_constant().

Reviewed-by: never
2010-08-23 09:09:36 -07:00
Daniel D. Daugherty
11da6c2e2a Merge 2010-08-23 08:44:03 -07:00
John R Rose
c7e50e8305 6912064: type profiles need to be exploited more for dynamic language support
Reviewed-by: kvn
2010-08-20 23:40:30 -07:00
Antonios Printezis
ec4173f8cc Merge 2010-08-20 12:01:10 -07:00
Tom Rodriguez
519c627fe5 Merge 2010-08-20 09:55:50 -07:00
Tom Rodriguez
a54b1ff70e 6978249: spill between cpu and fpu registers when those moves are fast
Reviewed-by: kvn
2010-08-19 14:51:47 -07:00
Y. Srinivas Ramakrishna
500e68f0b1 6978533: CMS: Elide BOT update asserts until 6977974 is fixed correctly
Reviewed-by: jcoomes, jmasa, tonyp
2010-08-19 12:02:10 -07:00
Pavel Tisnovsky
b002fe5992 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
Test minimal stack sizes given (also fixed linux compilation error)

Reviewed-by: never, phh, coleenp
2010-08-19 14:23:59 -04:00
John Cuthbertson
846cfeee6e Merge 2010-08-18 17:44:33 -04:00
Y. Srinivas Ramakrishna
fc61f2721e 6977970: CMS: concurrentMarkSweepGeneration.cpp:7947 assert(addr <= _limit) failed: sweep invariant
Allow for the possibility (when the heap is expanding) that the sweep might skip over and past, rather than necessarily step on, the sweep limit determined at the beginning of a concurrent marking cycle.

Reviewed-by: jmasa, tonyp
2010-08-18 11:39:21 -07:00
John Cuthbertson
3b69a96c58 6977924: Changes for 6975078 produce build error with certain gcc versions
The changes introduced for 6975078 assign badHeapOopVal to the _allocation field in the ResourceObj class. In 32 bit linux builds with certain versions of gcc this assignment will be flagged as an error while compiling allocation.cpp. In 32 bit builds the constant value badHeapOopVal (which is cast to an intptr_t) is negative. The _allocation field is typed as an unsigned intptr_t and gcc catches this as an error.

Reviewed-by: jcoomes, ysr, phh
2010-08-18 10:59:06 -07:00
Gary Benson
a325f5589a 6977640: Zero and Shark fixes
A number of fixes for Zero and Shark.

Reviewed-by: twisti
2010-08-18 01:22:16 -07:00
Antonios Printezis
ce2883fbbd 6975964: G1: print out a more descriptive message for evacuation failure when +PrintGCDetails is set
We're renaming "evacuation failure" to "to-space overflow". I'm also piggy-backing a small additional change which removes the "Mark closure took..." output.

Reviewed-by: ysr, johnc
2010-08-17 14:40:00 -04:00
Antonios Printezis
7125621712 6974928: G1: sometimes humongous objects are allocated in young regions
As the title says, sometimes we are allocating humongous objects in young regions and we shouldn't.

Reviewed-by: ysr, johnc
2010-08-17 14:40:00 -04:00
Antonios Printezis
1f0201f90b 6959014: G1: assert(minimum_desired_capacity <= maximum_desired_capacity) failed: sanity check
There are a few issues in the code that calculates whether to resize the heap and by how much: a) some calculations can overflow 32-bit size_t's, b) min_desired_capacity is not bounded by the max heap size, and c) the assrt that fires is in the wrong place. The fix also includes some tidying up of the related verbose code.

Reviewed-by: ysr, jmasa
2010-08-17 14:40:00 -04:00
Y. Srinivas Ramakrishna
77f845359a 6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
GC workers now recognize an intermediate transient state of blocks which are allocated but have not yet completed initialization. blk_start() calls do not attempt to determine the size of a block in the transient state, rather waiting for the block to become initialized so that it is safe to query its size. Audited and ensured the order of initialization of object fields (klass, free bit and size) to respect block state transition protocol. Also included some new assertion checking code enabled in debug mode.

Reviewed-by: chrisphi, johnc, poonam
2010-08-16 15:58:42 -07:00
John Cuthbertson
becf7cffb3 Merge 2010-08-14 00:47:52 -07:00
Tom Rodriguez
0f1f7c3b7f 6976372: # assert(_owner == Thread::current()) failed: invariant
Reviewed-by: kvn, twisti
2010-08-13 15:14:00 -07:00
Daniel D. Daugherty
ae38e974f0 Merge 2010-08-13 07:33:20 -07:00
Tom Rodriguez
a96301c84e 6975006: assert(check.is_deoptimized_frame()) failed: missed deopt
Reviewed-by: kvn, twisti
2010-08-12 23:34:34 -07:00
Tom Rodriguez
1d736d2851 6974176: ShouldNotReachHere, instanceKlass.cpp:1426
Reviewed-by: kvn, twisti
2010-08-12 16:38:23 -07:00
John Coomes
bb7d4b2b35 6976378: ParNew: stats are printed unconditionally in debug builds
Reviewed-by: tonyp
2010-08-11 13:12:28 -07:00
Vladimir Kozlov
b092cb33e6 6973329: C2 with Zero based COOP produces code with broken anti-dependency on x86
Recompile without subsuming loads if RA try to clone a node with anti_dependence.

Reviewed-by: never
2010-08-11 10:48:20 -07:00
Gary Benson
d7310fb0f7 6976186: integrate Shark HotSpot changes
Shark is a JIT compiler for Zero that uses the LLVM compiler infrastructure.

Reviewed-by: kvn, twisti
2010-08-11 05:51:21 -07:00
Christian Thalinger
c9ac8cc788 6975855: don't emit deopt MH handler in C1 if not required
This CR implements the same for C1 as 6926782 for C2.

Reviewed-by: never
2010-08-11 01:17:27 -07:00
Jeremy Manson
b36bff7dcd 6378314: Bad warning message when agent library not found. local directory is not searched
Print a more detailed error message for agent library load failure.

Reviewed-by: jcoomes, never, ohair, coleenp
2010-08-10 19:17:57 -04:00
Y. Srinivas Ramakrishna
7ee29eeb6a 6973570: OrderAccess::storestore() scales poorly on multi-socket x64 and sparc: cache-line ping-ponging
Volatile store to static variable removed in favour of a volatile store to stack to avoid excessive cache coherency traffic; verified that the volatile store is not elided by any of our current compilers.

Reviewed-by: dholmes, dice, jcoomes, kvn
2010-08-10 14:53:35 -07:00
John Coomes
b0e98512a7 6970376: ParNew: shared TaskQueue statistics
Reviewed-by: ysr
2010-08-09 18:03:50 -07:00
Tom Rodriguez
68ff9b2b00 Merge 2010-08-09 17:51:56 -07:00
Vladimir Kozlov
2e48a18645 6975078: assert(allocated_on_res_area() || allocated_on_C_heap() || allocated_on_arena()
Pass the check in ResourceObj() if _allocation value is already set and object is allocated on stack.

Reviewed-by: dholmes, johnc
2010-08-09 15:17:05 -07:00
John Coomes
7fe1c05c7c 6966222: G1: simplify TaskQueue overflow handling
Reviewed-by: tonyp, ysr
2010-08-09 05:41:05 -07:00
John Cuthbertson
f8eed77f36 6930581: G1: assert(ParallelGCThreads > 1 || n_yielded() == _hrrs->occupied(),"Should have yielded all the .
During RSet updating, when ParallelGCThreads is zero, references that point into the collection set are added directly the referenced region's RSet. This can cause the sparse table in the RSet to expand. RSet scanning and the "occupied" routine will then operate on different instances of the sparse table causing the assert to trip. This may also cause some cards added post expansion to be missed during RSet scanning. When ParallelGCThreads is non-zero such references are recorded on the "references to be scanned" queue and the card containing the reference is recorded in a dirty card queue for use in the event of an evacuation failure. Employ the parallel code in the serial case to avoid expanding the RSets of regions in the collection set.

Reviewed-by: iveresov, ysr, tonyp
2010-08-06 10:17:21 -07:00