72 Commits

Author SHA1 Message Date
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
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
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
Vladimir Kozlov
c3a0e80e0b Merge 2014-01-28 12:25:34 -08: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
Vladimir Kozlov
aabed3781b Merge 2013-11-21 12:30:35 -08:00
Vladimir Kozlov
39b0e57fdd Merge 2013-11-05 17:38:04 -08:00
Igor Veresov
c342a79faf 8017065: C2 allows safepoint checks to leak into G1 pre-barriers
Make all raw loads strictly respect control dependencies, make sure RCE doesn't move raw loads, add verification of G1 pre-barriers.

Reviewed-by: kvn, roland
2013-11-05 01:57:18 -08:00
Rickard Bäckman
612252d7a2 8027444: mathExact: assert(i < _max) failed: oob: i=1, _max=1
Reviewed-by: duke
2013-10-30 13:14:09 +01:00
Rickard Bäckman
441f1d74cf 8024924: Intrinsify java.lang.Math.addExact
Reviewed-by: kvn, twisti
2013-09-27 08:39:19 +02:00
Goetz Lindenmaier
5d63d647c1 8024342: PPC64 (part 111): Support for C calling conventions that require 64-bit ints
Some platforms, as ppc and s390x/zArch require that 32-bit ints are passed as 64-bit values to C functions. This change adds support to adapt the signature and to issue proper casts to c2-compiled stubs. The functions are used in generate_native_wrapper(). Adapt signature used by the compiler as in PhaseIdealLoop::intrinsify_fill().

Reviewed-by: kvn
2013-09-18 14:34:56 -07:00
Vladimir Kozlov
20f7d1a82a 8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
Replace MAX_UNROLL constant with new C2 LoopMaxUnroll flag.

Reviewed-by: roland
2013-08-14 10:21:26 -07:00
Morris Meyer
a62f572a50 8009181: [parfait] Null pointer deference in hotspot/src/share/vm/opto/loopTransform.cpp
Add guarantee() to insert_pre_post_loops()

Reviewed-by: kvn
2013-03-20 07:05:40 -07:00
Vladimir Kozlov
9e0c61f822 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
Use SSE4.2 and AVX2 instructions for encodeArray intrinsic.

Reviewed-by: roland
2013-01-22 15:34:16 -08: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
Abhijit Saha
19fc2d4d88 Merge 2012-10-18 21:58:55 -07:00
Vladimir Kozlov
5f132a5ec3 Merge 2012-10-12 09:22:52 -07:00
Abhijit Saha
2f3ac59e81 Merge 2012-10-10 14:28:08 -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
Vladimir Ivanov
b1d745897b 8000313: C2 should use jlong for 64bit values
Replace all occurrences of long with jlong in C2 code.

Reviewed-by: kvn, twisti
2012-10-08 13:02:13 -07: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
Vladimir Kozlov
03d65ced3e 7198606: Improve VM optimization
Remove incorrect code in OptimizeFill optimization.

Reviewed-by: roland, twisti
2012-09-19 13:58:31 -07:00
Vladimir Kozlov
da65cc4532 7160161: Missed safepoint in non-Counted loop
Do not remove safepoints during peeling optimization.

Reviewed-by: twisti
2012-08-29 13:02:40 -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
61068411fa 7054211: No loop unrolling done in jdk7b144 for a test update() while loop
Restore unrolling code for CaffeineMark.

Reviewed-by: never
2011-09-07 12:58:42 -07:00
Vladimir Kozlov
52f678435a 7077439: Possible reference through NULL in loopPredicate.cpp:726
Use cl->is_valid_counted_loop() check.

Reviewed-by: never
2011-08-10 14:06:57 -07:00
Vladimir Kozlov
df8d608ac7 7068051: SIGSEGV in PhaseIdealLoop::build_loop_late_post
Removed predicate cloning from loop peeling optimization and from split fall-in paths.

Reviewed-by: never
2011-07-29 09:16:29 -07:00
Vladimir Kozlov
b3505a88a4 7044738: Loop unroll optimization causes incorrect result
Take into account memory dependencies when clonning nodes in clone_up_backedge_goo().

Reviewed-by: never
2011-06-28 15:24:29 -07:00
Vladimir Kozlov
d19a8f6e35 7052494: Eclipse test fails on JDK 7 b142
Keep 'ne' test in Counted loop when we can't guarantee during compilation that init < limit.

Reviewed-by: never
2011-06-20 16:45:35 -07:00
Vladimir Kozlov
0aff6e35b8 7045693: java/util/EnumSet/EnumSetBash.java still failing intermittently
New limit for unrolled loop should be set only for zero trip guard and loop iteration test.

Reviewed-by: never
2011-05-21 11:44:31 -07:00
Vladimir Kozlov
0e10a5ad61 7044725: -XX:-UnrollLimitCheck -Xcomp : Exception: String index out of range: 29488
Fix problems in new RCE code.

Reviewed-by: never
2011-05-16 14:21:16 -07:00
Vladimir Kozlov
70dfd21e87 7043552: regression after 7042327
Generate Opaque2 node only during first unroll.

Reviewed-by: never
2011-05-10 12:57:21 -07:00
Vladimir Kozlov
8698030a91 7042327: assert(opaq->outcnt() == 1 && opaq->in(1) == limit)
Separate limit by Opaque2 node when calculating new limit for unrolled loop.

Reviewed-by: never
2011-05-05 21:06:14 -07:00
Vladimir Kozlov
1ac79543d0 5091921: Sign flip issues in loop optimizer
Fix integer overflow problem in the code generated by loop optimizer.

Reviewed-by: never
2011-05-04 13:12:42 -07:00
Vladimir Kozlov
2683d5390b 7039652: Performance regression after 7004547 changes
Use unrolled_count() to limit unrolling and use the stride check only for initial stride value.

Reviewed-by: never
2011-04-28 16:40:23 -07:00
John R Rose
41745904a3 Merge 2011-04-09 21:16:12 -07:00
Vladimir Kozlov
2096fd712c 7004555: Add new policy for one iteration loops
Add new policy for one iteration loops (mostly formal pre- loops).

Reviewed-by: never
2011-04-08 14:56:22 -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
3151573d39 7004547: regular loop unroll should not unroll more than max unrolling
Take into account that after unroll conjoined heads and tails will fold.

Reviewed-by: never
2011-04-04 19:02:36 -07:00
Tom Rodriguez
774ac503d0 7026957: assert(type2aelembytes(store->as_Mem()->memory_type(), true) == 1 << shift->in(2)->get_int()) failed
Reviewed-by: kvn, jrose
2011-04-04 12:57:04 -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
0493606cdd 7032696: Fix for 7029152 broke VM
StrIntrinsicNode::Ideal() should not optimize memory during Parse.

Reviewed-by: jrose, never
2011-03-31 13:22:34 -07:00
Vladimir Kozlov
3ecb9f51df 7029152: Ideal nodes for String intrinsics miss memory edge optimization
In Ideal() method of String intrinsics nodes look for TypeAryPtr::CHARS memory slice if memory is MergeMem. Do not unroll a loop with String intrinsics code.

Reviewed-by: never
2011-03-30 12:08:49 -07:00
Tom Rodriguez
5387ee459e 7024475: loop doesn't terminate when compiled
Reviewed-by: kvn
2011-03-27 00:00:14 -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
Tom Rodriguez
39d16839d3 6980792: Crash "exception happened outside interpreter, nmethods and vtable stubs (1)"
Reviewed-by: kvn
2010-10-07 21:40:55 -07:00