65 Commits

Author SHA1 Message Date
Roland Westrelin
f8abd0e843 8136820: Generate better code for some Unsafe addressing patterns
Reshape address computation to move invariant part out of loops

Reviewed-by: kvn
2015-09-17 16:53:42 +02:00
Roland Westrelin
92af9b015c 8136926: phi == NULL assert in PhaseIdealLoop::try_move_store_after_loop
Multiple phis on same slice are possible in a loop

Reviewed-by: kvn, mcberg
2015-09-22 15:25:34 +02:00
Roland Westrelin
c55d212196 8136461: PhaseIdealLoop::try_move_store_before_loop() may bypass early loop exit
PhaseIdealLoop::try_move_store_before_loop() needs to check for early loop exit before candidate Stores

Reviewed-by: kvn
2015-09-15 13:08:43 +02:00
Roland Westrelin
9dcbe322e0 8134288: compiler/runtime/6859338/Test6859338.java crashes in PhaseIdealLoop::try_move_store_after_loop
Store nodes may not have a control if used to update profiling

Reviewed-by: kvn
2015-08-26 12:43:15 +02:00
Roland Westrelin
96b004cd82 8080289: Intermediate writes in a loop not eliminated by optimizer
Move Stores out of loop (after or before) when possible

Reviewed-by: kvn, vlivanov
2015-07-29 17:25:04 +02:00
Vladimir Ivanov
18f7135255 8079135: C2 disables some optimizations when a large number of unique nodes exist
Reviewed-by: kvn
2015-05-15 19:21:46 +03:00
Jan Civlin
c7d33de202 8076284: Improve vectorization of parallel streams
Improve vectorization of java/util/stream/Streams$RangeIntSpliterator::forEachRemaining() method and enable loop vectorization in a given method on demand.

Reviewed-by: kvn
2015-05-05 12:33:57 -07:00
Roland Westrelin
71e31ee0b9 8073480: C2 should optimize explicit range checks
Explicit range checks should be recognized by C2

Reviewed-by: kvn, vlivanov
2015-03-17 10:06:31 +01:00
Roland Westrelin
07537703cc 8048170: Test closed/java/text/Normalizer/ConformanceTest.java failed
PhaseIdealLoop::split_if_with_blocks_post() shoulnd't reorder range checks adjusted by range check smearing

Reviewed-by: kvn, jrose
2014-12-04 14:34:11 +01:00
Vladimir Ivanov
5a00d5f6b5 8058148: MaxNodeLimit and LiveNodeCountInliningCutoff
Reviewed-by: kvn, roland
2014-11-24 07:29:03 -08: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
Tobias Hartmann
11eb4553c9 8040213: C2 does not put all modified nodes on IGVN worklist
Verification code is added that checks if modified nodes are put on the IGVN worklist and modified nodes are processed by 'PhaseIterGVN::transform_old()'

Reviewed-by: kvn, jrose
2014-07-25 10:06:17 +02:00
Vladimir Kozlov
b571b4214a 8046516: Segmentation fault in JVM (easily reproducible)
Place new nodes on the previous loop exit in reorg_offsets().

Reviewed-by: roland
2014-06-12 10:15:43 -07:00
Vladimir Kozlov
0853423f46 8046275: Fastdebug build failing on jdk9/hs/ control jobs after pulling some hs-comp changes
Add missing check for Opaque nodes from loop predicates in clone_loop().

Reviewed-by: iveresov
2014-06-09 15:42:31 -07: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
Vladimir Kozlov
8badeecc2c 8039050: Crash in C2 compiler at Node::rematerialize
Added missing calls to record_for_igvn() in loop opts. Added verification of def-use domination.

Reviewed-by: iveresov
2014-04-15 14:34:48 -07: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
Rickard Bäckman
0b85ee832e 8027754: Enable loop optimizations for loops with MathExact inside
Reviewed-by: kvn, iveresov
2014-01-23 12:08:28 +01: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
Rickard Bäckman
0ef4539a9f 8028198: SIGSEGV in PhaseIdealLoop::build_loop_late_post
Reviewed-by: iveresov, kvn
2013-11-12 13:47:57 +01: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
Rickard Bäckman
441f1d74cf 8024924: Intrinsify java.lang.Math.addExact
Reviewed-by: kvn, twisti
2013-09-27 08:39:19 +02:00
Vladimir Kozlov
ea54d8f3f0 8014811: loopTransform.cpp assert(cmp_end->in(2) == limit) failed
Stop current iteration of loop opts if partial_peel() failed and it created node clones outside processed loop.

Reviewed-by: roland
2013-05-22 09:02:43 -07:00
Morris Meyer
25c4a7fccd 8008811: [parfait] Null pointer deference in hotspot/src/share/vm/opto/loopopts.cpp
Add guarantee() checks

Reviewed-by: kvn
2013-03-19 12:15:35 -07: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
Vladimir Kozlov
5f132a5ec3 Merge 2012-10-12 09:22:52 -07:00
Mikael Vidstedt
769dd50182 7197424: update copyright year to match last edit in jdk8 hotspot repository
Update copyright year to 2012 for relevant files

Reviewed-by: dholmes, coleenp
2012-10-09 10:09:34 -07:00
Roland Westrelin
61eb5a0549 7054512: Compress class pointers after perm gen removal
Support of compress class pointers in the compilers.

Reviewed-by: kvn, twisti
2012-10-09 10:11:38 +02:00
Bharadwaj Yadavalli
d5d2e78faa 7193318: C2: remove number of inputs requirement from Node's new operator
Deleted placement new operator of Node - node(size_t, Compile *, int).

Reviewed-by: kvn, twisti
2012-09-27 09:38:42 -07:00
Vlaidmir Ivanov
dd85e2f356 7173340: C2: code cleanup: use PhaseIterGVN::replace_edge(Node*, int, Node*) where applicable
Replace frequent C2 optimizer code patterns with new methods calls

Reviewed-by: kvn, twisti
2012-06-12 16:23:31 -07:00
Vladimir Kozlov
f3f36ae094 7064302: JDK7 build 147 crashed after testing my java 6-compiled web app
Don't split CMove node if it's control edge is different from split region.

Reviewed-by: never
2012-01-12 12:28:59 -08:00
Vladimir Kozlov
09b7902e14 7107042: assert(no_dead_loop) failed: dead loop detected
Use dead nodes elimination code in PhaseIdealLoop before executing EA.

Reviewed-by: never, twisti
2011-11-09 07:25:51 -08:00
Vladimir Kozlov
669fa7396d 7097546: Optimize use of CMOVE instructions
Avoid CMove in a loop if possible. May generate CMove if it could be moved outside a loop.

Reviewed-by: never
2011-10-26 06:08:56 -07:00
Vladimir Kozlov
dd43791e4a 7070134: Hotspot crashes with sigsegv from PorterStemmer
Do not move data nodes which are attached to a predicate test to a dominating test.

Reviewed-by: never
2011-07-26 19:35:23 -07:00
Vladimir Kozlov
6c8fc4b347 7039586: test/java/util/Collections/Rotate.java failing with hs21-b09
A predicate should not be moved in partial peel optimization since it will invalidate jvm state of its uncommon trap.

Reviewed-by: never
2011-04-26 12:14:22 -07:00
John R Rose
41745904a3 Merge 2011-04-09 21:16:12 -07:00
Erik Trimble
c9e484d473 7010070: Update all 2010 Oracle-changed OpenJDK files to have the proper copyright dates - second pass
Update the copyright to be 2010 on all changed files in OpenJDK

Reviewed-by: ohair
2011-04-05 14:12:31 -07:00
Vladimir Kozlov
00eca5e982 7004535: Clone loop predicate during loop unswitch
Clone loop predicate for clonned loops

Reviewed-by: never
2011-04-02 10:54:15 -07:00
Vladimir Kozlov
3de260da41 7008866: Missing loop predicate for loop with multiple entries
Add predicates when loop head bytecode is parsed instead of when back branch bytecode is parsed.

Reviewed-by: never
2011-03-21 11:28:14 -07:00
Stefan Karlsson
8006fe8f75 6989984: Use standard include model for Hospot
Replaced MakeDeps and the includeDB files with more standardized solutions.

Reviewed-by: coleenp, kvn, kamg
2010-11-23 13:22:55 -08:00
Vladimir Kozlov
448b83e288 6677629: PhaseIterGVN::subsume_node() should call hash_delete() and add_users_to_worklist()
Use replace_node() method instead of subsume_node().

Reviewed-by: jrose, never
2010-06-28 14:54:39 -07:00
Erik Trimble
ba7c173659 6941466: Oracle rebranding changes for Hotspot repositories
Change all the Sun copyrights to Oracle copyright

Reviewed-by: ohair
2010-05-27 19:08:38 -07:00
Vladimir Kozlov
1a1e145498 6924097: assert((_type == Type::MEMORY) == (_adr_type != 0),"adr_type for memory phis only")
Use PhiNode::make_blank(r, n) method to construct the phi.

Reviewed-by: never
2010-02-09 10:21:06 -08:00
Erik Trimble
e846382e12 Merge 2009-07-29 16:00:35 -07:00
Xiomara Jayasena
a63ef10004 6862919: Update copyright year
Update copyright for files that have been modified in 2009, up to 07/09

Reviewed-by: tbell, ohair
2009-07-28 12:12:40 -07:00
Hiroshi Yamauchi
a24ea182cc 6860469: remix_address_expressions sets incorrect control causing crash in split_if_with_block_post
Co-authored-by: Chuck Rasbold <rasbold@google.com>
Reviewed-by: never, kvn
2009-07-15 13:37:35 -07:00
Changpeng Fang
7a36ade1ec 6855164: SIGSEGV during compilation of method involving loop over CharSequence
Don not split a block if it contains a FastLockNode with a PhiNode input.

Reviewed-by: kvn, never
2009-07-02 16:18:19 -07:00
Christian Thalinger
05d1de7727 6810672: Comment typos
I have collected some typos I have found while looking at the code.

Reviewed-by: kvn, never
2009-02-27 13:27:09 -08:00
Tom Rodriguez
043fde10e5 6743188: incomplete fix for 6700047 C2 failed in idom_no_update
Reviewed-by: rasbold, kvn
2008-10-03 13:58:20 -07:00