126 Commits

Author SHA1 Message Date
Vladimir Ivanov
a1b368700b Merge 2015-02-12 13:55:54 -08:00
Roland Westrelin
e6ac3ca09e 8072016: Array copy may cause infinite cycle of deoptimization/compilation
Infinite deoptimization/recompilation cycles in case of arraycopy with tightly coupled allocation

Reviewed-by: kvn, vlivanov
2015-02-09 15:10:58 +01:00
Joseph Provino
00d9c7a2d1 8071805: BarrierSet::Other is not used and should be removed
Remove all occurences of BarrierSet::Other because the barrier set kind is never set to Other.

Reviewed-by: tschatzl, kbarrett
2015-02-04 10:18:28 -05:00
Vladimir Ivanov
efd80ec6af 8068915: uncommon trap w/ Reason_speculate_class_check causes performance regression due to continuous deoptimizations
Reviewed-by: kvn, roland, jrose
2015-01-29 10:26:02 -08:00
Roland Westrelin
686e5a0a6f 8064703: crash running specjvm98's javac following 8060252
Uncommon trap between arraycopy and initialization may leave array initialized

Reviewed-by: kvn, vlivanov, goetz
2014-12-01 11:59:56 +01:00
Zoltan Majo
49b224a4f7 8057622: java/util/stream/test/org/openjdk/tests/java/util/stream/InfiniteStreamWithLimitOpTest: SEGV inside compiled code (sparc)
In Parse::array_store_check(), add control edge FROM IfTrue branch of runtime type check of the destination array TO loading _element_klass from destination array.

Reviewed-by: kvn, roland, anoll
2014-11-06 09:40:58 +01:00
Staffan Friberg
8b424b422f 8057737: Avoid G1 write barriers on newly allocated objects
Reviewed-by: mgerdin, kvn, iveresov
2014-10-09 13:06:15 -07:00
Roland Westrelin
a56ade07c7 7173584: Implement arraycopy as a macro node
Delay the conversion of arraycopy to stub calls to macro expansion

Reviewed-by: kvn, iveresov
2014-08-11 14:12:51 +02:00
Tobias Hartmann
70a55eac34 8054033: Remove unused references to Compile*
Removed unused references to Compile* missed by JDK-8034812.

Reviewed-by: kvn, roland
2014-08-05 09:58:52 +02:00
Zoltan Majo
1d44fa46f0 8050860: Cleanup TypeTuple and TypeFunc
Declared fields TypeFunc::_domain, TypeFunc::_range, TypeTuple::_cnt and TypeTuple::_fields private, changed direct accesses to fields to use accessor methods.

Reviewed-by: kvn, vlivanov
2014-07-24 09:15:38 +02:00
Vladimir Kozlov
56cea022c9 8035605: Expand functionality of PredictedIntrinsicGenerator
Allow several predicates and separate intrinsic methods per one intrinsified (virtual) method.

Reviewed-by: roland
2014-06-10 12:28:06 -07:00
Roland Westrelin
2838bcc3bf 8026796: Make replace_in_map() on parent maps generic
Propagate node replacements along control flow edges to callers

Reviewed-by: kvn, vlivanov
2014-06-10 13:37:16 +02:00
Vladimir Ivanov
ea0470002e 8033626: assert(ex_map->jvms()->same_calls_as(_exceptions->jvms())) failed: all collected exceptions must come from the same place
Reviewed-by: kvn, roland
2014-06-10 10:00:59 +00:00
Tobias Hartmann
2a0815a55e 8034812: remove IDX_INIT macro hack in Node class
The IDX_INIT macro used by Node::Node(...) to retrieve the Compile object is removed and replaced by a call to Compile::current(). The Node constructor, new operator and all calls to it are adapted accordingly.

Reviewed-by: kvn, jrose, iveresov, goetz
2014-06-02 08:07:29 +02:00
Tobias Hartmann
85296fec28 8036851: volatile double accesses are not explicitly atomic in C2
The C2 structure is adapted to distinguish between volatile and non-volatile double accesses.

Reviewed-by: twisti, kvn
2014-05-06 09:17:57 +02:00
Morris Meyer
6db303a301 8001532: C2 node files refactoring
Split C2 node files into cast, convert, countbits, intrinsic, move, narrowptr and opaquenode classes

Reviewed-by: kvn, morris
2014-04-01 09:05:20 -07:00
Roland Westrelin
fa3b0a8f47 8031755: Type speculation should be used to optimize explicit null checks
Feed profiling data about reference nullness to type speculation.

Reviewed-by: kvn, iveresov
2014-03-31 09:08:53 +02:00
Poonam Bajaj
1516f610a1 6653795: C2 intrinsic for Unsafe.getAddress performs pointer sign extension on 32-bit systems
Native pointers less than 64 bits wide should be extended as an unsigned number.

Reviewed-by: kvn, kevinw
2014-03-24 08:43:10 -07:00
Vladimir Kozlov
97a51c5c2a 8031320: Use Intel RTM instructions for locks
Use RTM for inflated locks and stack locks.

Reviewed-by: iveresov, twisti, roland, dcubed
2014-03-20 17:49:27 -07:00
Igor Veresov
35f1475d20 8025644: java/util/stream/test/org/openjdk/tests/java/util/stream/ToArrayOpTest.java fails with TestData$OfRef): failure java.lang.AssertionError: expected [true] but found [false]
In GraphKit::gen_checkcast() provide only exact superklass to GraphKit::maybe_cast_profiled_receiver()

Reviewed-by: kvn, roland
2014-03-10 11:09:02 -07:00
Morris Meyer
c696dd6700 Merge 2014-02-28 08:02:20 -08:00
Roland Westrelin
227129c4d9 8031754: Type speculation should favor profile data from outermost inlined method
Favor profile data coming from outer most method

Reviewed-by: kvn, twisti
2014-02-28 13:44:16 +01:00
Harold Seigel
b2c117b170 Merge 2014-02-23 13:16:03 -05:00
Markus Grönlund
68857c9469 8035493: JVMTI PopFrame capability must instruct compilers not to prune locals
Reviewed-by: kvn, sla, coleenp, sspitsyn
2014-02-22 10:22:05 +01:00
Roland Westrelin
493557fc90 8031752: Failed speculative optimizations should be reattempted when root of compilation is different
Support for speculative traps that keep track of the root of the compilation in which a trap occurs.

Reviewed-by: kvn, twisti
2014-02-25 18:16:24 +01:00
Vladimir Kozlov
7d92dc4d79 Merge 2014-01-28 12:28:17 -08:00
Vladimir Kozlov
c3a0e80e0b Merge 2014-01-28 12:25:34 -08:00
Roland Westrelin
c19a7e0fa3 8027422: assert(_gvn.type(obj)->higher_equal(tjp)) failed: cast_up is no longer needed
Type methods shouldn't always operate on speculative part

Reviewed-by: kvn, twisti
2014-01-24 09:31:53 +01:00
Mikael Vidstedt
a0da47fd66 8029233: Update copyright year to match last edit in jdk8 hotspot repository for 2013
Copyright year updated for files modified during 2013

Reviewed-by: twisti, iveresov
2013-12-24 11:48:39 -08:00
Goetz Lindenmaier
13b13f5259 8024921: PPC64 (part 113): Extend Load and Store nodes to know about memory ordering
Add a field to C2 LoadNode and StoreNode classes which indicates whether the load/store should do an acquire/release on platforms which support it.

Reviewed-by: kvn
2013-11-15 11:05:32 -08:00
Roland Westrelin
1b5bd82335 8024070: C2 needs some form of type speculation
Record unused type profile information with type system, propagate and use it.

Reviewed-by: kvn, twisti
2013-10-23 12:40:23 +02:00
Roland Westrelin
3f8ae3e9b9 8024069: replace_in_map() should operate on parent maps
Type information gets lost because replace_in_map() doesn't update parent maps

Reviewed-by: kvn, twisti
2013-10-19 12:16:43 +02:00
Staffan Friberg
83e635a090 8026293: Schedule part of G1 pre-barrier late
Move rare executed part of G1 write barrier from hot path.

Reviewed-by: kvn, twisti, roland
2013-10-15 12:14:00 -07:00
Igor Veresov
db9a439624 Merge 2013-10-13 13:22:24 -07:00
John Coomes
e61cbf8d69 Merge 2013-10-11 08:27:21 -07:00
Mikael Gerdin
7f3b537807 8014555: G1: Memory ordering problem with Conc refinement and card marking
Add a StoreLoad barrier in the G1 post-barrier to fix a race with concurrent refinement. Also-reviewed-by: martin.doerr@sap.com

Reviewed-by: iveresov, tschatzl, brutisso, roland, kvn
2013-10-08 17:35:51 +02:00
Roland Westrelin
59adc04ee5 8024067: Missing replace_in_map() calls following null checks
Add replace_in_map() calls following some null checks in type checks

Reviewed-by: kvn
2013-10-03 10:55:07 +02:00
Axel Siebenborn
0c588fa80b 8025599: Missing store barrier with OptimizeStringConcat
Reviewed-by: kvn, twisti
2013-09-30 15:42:39 -07:00
Vladimir Ivanov
f0e77ac67f 8001107: @Stable annotation for constant folding of lazily evaluated variables
Co-authored-by: John Rose <john.r.rose@oracle.com>
Reviewed-by: rbackman, twisti, kvn
2013-09-10 14:51:48 -07:00
Martin Doerr
c678f0173a 8023597: Optimize G1 barriers code for unsafe load_store
Avoid loading old values in G1 pre-barriers for inlined unsafe load_store nodes.

Reviewed-by: kvn, tonyp
2013-08-28 11:22:43 +02:00
Vladimir Kozlov
dac98bcc0d 8023472: C2 optimization breaks with G1
Set control edge for previous value load in G1 pre-barrier

Reviewed-by: twisti
2013-08-23 18:04:35 -07:00
Vladimir Kozlov
fc1302ea95 8019247: SIGSEGV in compiled method c8e.e.t_.getArray(Ljava/lang/Class;)[Ljava/lang/Object
Undo recent changes (and add more comments) in Ideal_allocation().

Reviewed-by: roland
2013-07-02 10:30:49 -07:00
Vladimir Kozlov
b4977e887a 6934604: enable parts of EliminateAutoBox by default
Resurrected autobox elimination code and enabled part of it by default.

Reviewed-by: roland, twisti
2013-05-08 15:08:01 -07:00
Martin Doerr
19d99e3d92 8012715: G1: GraphKit accesses PtrQueue::_index as int but is size_t
In graphKit INT operations were generated to access PtrQueue::_index which has type size_t. This is 64 bit on 64-bit machines. No problems occur on little endian machines as long as the index fits into 32 bit, but on big endian machines the upper part is read, which is zero. This leads to unnecessary branches to the slow path in the runtime.

Reviewed-by: twisti, johnc
2013-04-24 14:48:43 -07:00
Vladimir Kozlov
848ccdbdfe 8004640: C2 assert failure in memnode.cpp: NULL+offs not RAW address
Always transform AddP nodes in IdealKit by calling _gvn.transform().

Reviewed-by: roland, twisti
2013-03-26 12:55:26 -07:00
Roland Westrelin
73d6d417be 8005071: Incremental inlining for JSR 292
Post parse inlining driven by number of live nodes.

Reviewed-by: twisti, kvn, jrose
2012-12-23 17:08:22 +01:00
Vladimir Kozlov
e508acf372 8004741: Missing compiled exception handle table entry for multidimensional array allocation
Added missing exception path for multidimensional array allocation and use Throwable type instead of OutOfMemoryError for allocation's exception.

Reviewed-by: twisti
2012-12-19 19:21:15 -08:00
Roland Westrelin
b1c3e5ccc6 8005031: Some cleanup in c2 to prepare for incremental inlining support
Collection of small changes to prepare for incremental inlining.

Reviewed-by: twisti, kvn
2012-12-18 14:55:25 +01:00
Bharadwaj Yadavalli
2d2532e740 7092905: C2: Keep track of the number of dead nodes
Keep an (almost) accurate running count of the reachable (live) flow graph nodes.

Reviewed-by: kvn, twisti, jrose, vlivanov
2012-11-27 17:24:15 -08:00
Christian Thalinger
31411dbc32 7172640: C2: instrinsic implementations in LibraryCallKit should use argument() instead of pop()
Reviewed-by: kvn, jrose
2012-11-26 17:25:11 -08:00