Tobias Hartmann
4ab4c66c41
8159016: Over-unrolled loop is partially removed
...
Prevent over-unrolling of loops by computing upper bound for trip count.
Reviewed-by: kvn
2016-06-27 10:10:11 +02:00
Tobias Hartmann
6294f0770b
8159715: Fix for 8072422 is incorrect
...
Fixed several issues introduced by 8072422.
Reviewed-by: zmajo, kvn
2016-06-20 09:32:44 +02:00
Aleksey Shipilev
c6c73deca4
8157726: VarHandles/Unsafe should support sub-word atomic ops
...
Reviewed-by: psandoz, vlivanov, lagergren
2016-06-15 11:21:36 +03:00
Tobias Hartmann
ebc384160f
8154763: Crash with "assert(RangeCheckElimination)" if RangeCheckElimination is disabled
...
Disable multiversioning if range check elimination is turned off.
Reviewed-by: mcberg, kvn
2016-04-25 10:51:44 +02:00
Michael Berg
ff80cc58c9
8151573: Multiversioning for range check elimination
...
Range check elimination in post loops
Reviewed-by: kvn
2016-04-05 10:34:05 -07:00
Zoltan Majo
69d14c811b
8072422: Cleanup: Remove some unused flags/code in loop optimizations
...
Remove unused flags, change test using them.
Reviewed-by: kvn, twisti
2016-04-04 12:52:11 +02:00
Zoltan Majo
5751808a6c
8148754: C2 loop unrolling fails due to unexpected graph shape
...
Check if graph shape is appropriate for optimization, bail out optimization if not.
Reviewed-by: kvn, twisti, shade, dnsimon
2016-03-21 09:51:20 +01:00
Aleksey Shipilev
0c43809cfe
8148146: Integrate new internal Unsafe entry points, and basic intrinsic support for VarHandles
...
Reviewed-by: psandoz, kvn, jrose, adinn, simonis, coleenp
2016-02-23 22:09:41 +03:00
Michael Berg
3ade110066
8149421: Vectorized Post Loops
...
Add vectorised post loop for counted loops with vectors.
Reviewed-by: kvn
2016-02-12 16:12:15 -08:00
Roland Westrelin
7fa54e38e6
8137049: Code quality: reducing an trivial integer loop does not produce an optimal code
...
Canonicalized if shape not recognized by empty loop detection code
Reviewed-by: kvn, shade
2016-01-29 17:18:35 +01:00
Roland Westrelin
1462f0b038
8147645: get_ctrl_no_update() code is wrong
...
Array.fill intrinsification code doesn't mark replaced control as dead
Reviewed-by: kvn
2016-02-03 10:58:50 +01:00
Tobias Hartmann
ca56200977
6675699: need comprehensive fix for unconstrained ConvI2L with narrowed type
...
Emit CastII to make narrow ConvI2L dependent on the corresponding range check.
Reviewed-by: kvn, roland
2016-01-18 08:40:25 +01:00
Andrew Haley
c4a81b327d
8145096: Undefined behaviour in HotSpot
...
Fix some integer overflows
Reviewed-by: jrose, kvn, kbarrett, adinn, iklam
2015-12-21 16:58:29 +00:00
Tobias Hartmann
60da2fdb6f
8145754: PhaseIdealLoop::is_scaled_iv_plus_offset() does not match AddI
...
Is_scaled_iv_plus_offset() should handle AddI nodes with scaled iv as second input.
Reviewed-by: kvn
2015-12-21 10:14:26 +01:00
Christian Thalinger
6896030b96
8140424: don't prefix developer and notproduct flag variables with CONST_ in product builds
...
Reviewed-by: goetz, stefank
2015-11-11 16:32:17 -10:00
Roland Westrelin
fa6545ccc1
8137168: Replace IfNode with a new RangeCheckNode for range checks
...
New RangeCheckNode to enable optimization of explicit library level range checks
Reviewed-by: kvn, thartmann
2015-11-09 11:28:31 +01:00
Tobias Hartmann
7af927f9c1
8141132: JEP 254: Compact Strings
...
Adopt a more space-efficient internal representation for strings.
Co-authored-by: Brent Christian <brent.christian@oracle.com>
Co-authored-by: Vivek Deshpande <vivek.r.deshpande@intel.com>
Co-authored-by: Charlie Hunt <charlie.hunt@oracle.com>
Co-authored-by: Vladimir Kozlov <vladimir.kozlov@oracle.com>
Co-authored-by: Roger Riggs <roger.riggs@oracle.com>
Co-authored-by: Xueming Shen <xueming.shen@oracle.com>
Co-authored-by: Aleksey Shipilev <aleksey.shipilev@oracle.com>
Co-authored-by: Sandhya Viswanathan <sandhya.viswanathan@intel.com>
Reviewed-by: alanb, bdelsart, coleenp, iklam, jiangli, jrose, kevinw, naoto, pliden, roland, smarks, twisti
2015-11-03 09:41:03 +01:00
Vlad Ureche
645a55a98f
8011858: Use Compile::live_nodes() instead of Compile::unique() in appropriate places
...
Reviewed-by: kvn, vlivanov
2015-08-10 10:39:19 -07:00
Vladimir Kozlov
b5284a93ce
8129920: Vectorized loop unrolling
...
Optimize loop opts for vectorizible loops.
Reviewed-by: kvn, roland
2015-07-10 11:59:09 -07:00
Goetz Lindenmaier
07c7774cd7
8086069: Adapt runtime calls to recent intrinsics to pass ints as long
...
Remove CCallingConventionRequiresIntsAsLongs from shared code and push functionality to native wrapper. Less optimal but more flexible.
Reviewed-by: jrose, kvn
2015-06-29 15:30:55 +02:00
Michael Berg
7c7b91845f
8080325: SuperWord loop unrolling analysis
...
Determine loop unroll factor based on supported vectors sizes.
Reviewed-by: roland, kvn
2015-06-16 16:10:36 -07:00
Roland Westrelin
513d9a5ede
8085832: Optimize main and post loop out when pre loop is found empty
...
Eliminate main loop and post loop if pre loop becomes empty
Reviewed-by: kvn, mcberg
2015-05-12 14:26:31 +02:00
Roland Westrelin
0fb315714c
8078866: compiler/eliminateAutobox/6934604/TestIntBoxing.java assert(p_f->Opcode() == Op_IfFalse) failed
...
Bail out from range check elimination if pre loop is not found
Reviewed-by: kvn
2015-06-04 16:19:22 +02:00
Roland Westrelin
81b0f156c8
8080976: Unexpected AIOOB thrown from 1.9.0-ea-b64 on (regression)
...
Loop variant use in reduction should prevent vectorization
Reviewed-by: kvn, mcberg
2015-05-29 16:09:16 +02: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
Michael C Berg
9e55e44c85
8074981: Integer/FP scalar reduction optimization
...
Add scalar reduction optimization to C2 to take advantage of vector instructions in modern x86 CPUs.
Reviewed-by: kvn, twisti
2015-04-01 18:07:50 -07:00
Roland Westrelin
f4f9769cd2
8073184: Compile of java.lang.Integer::getChars fails with LoopLimitCheck = false after 8054478
...
CastII that guards counted loops confuses range check elimination with LoopLimitCheck off
Reviewed-by: kvn, iveresov
2015-02-24 15:23:05 +01:00
Vladimir Kozlov
834ff91cc5
8068864: C2 failed: modified node is not on IGVN._worklist
...
Use igvn.replace_input_of() instead of set_req().
Reviewed-by: iveresov, vlivanov
2015-01-14 17:27:00 -08:00
Roland Westrelin
4bc2edad15
8054478: C2: Incorrectly compiled char[] array access crashes JVM
...
Dead backbranch in main loop results in erroneous array access
Reviewed-by: kvn, iveresov
2014-11-13 09:19:46 +01:00
Vladimir Ivanov
5a00d5f6b5
8058148: MaxNodeLimit and LiveNodeCountInliningCutoff
...
Reviewed-by: kvn, roland
2014-11-24 07:29:03 -08:00
Tobias Hartmann
e3073f2e53
8053915: bigapps assert failure in C2: modified node is not on IGVN._worklist
...
Add modified node to the IGVN worklist in 'PhaseIdealLoop::do_range_check'.
Reviewed-by: kvn, roland
2014-07-31 08:39:47 +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
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