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
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