147 Commits

Author SHA1 Message Date
Vladimir Ivanov
4c31d5f745 8160360: Mismatched field loads are folded in LoadNode::Value
Reviewed-by: kvn, thartmann
2016-07-06 15:05:28 +03:00
Tobias Hartmann
35f9db149b 8156760: VM crashes if -XX:-ReduceInitialCardMarks is set
Fixed several compiler crashes with disabled ReduceInitialCardMarks.

Reviewed-by: roland, minqi, dlong, tschatzl, kvn
2016-06-02 08:46:52 +02:00
Tobias Hartmann
8adbc20c87 8155241: Crash with assert in Xcomp mode and with disabled ReduceBulkZeroing
We should not assume that a CloneBasic arraycopy sets array initialization to complete.

Reviewed-by: kvn, roland
2016-05-12 08:25:42 +02:00
Alejandro Murillo
f9426642c6 Merge 2016-04-22 01:04:00 -07:00
Bharadwaj Yadavalli
b2ead5ac2d Merge 2016-04-12 14:17:42 -04:00
Daniel D. Daugherty
4397e85e26 Merge 2016-04-07 09:47:48 -07:00
Vladimir Ivanov
7fc81004e3 8152590: C2: @Stable support doesn't always work w/ incremental inlining
Reviewed-by: kvn
2016-04-11 21:42:55 +03:00
Joseph Provino
5cef85023b 8132524: Missing includes to resourceArea.hpp
Files that use ResourceMark are missing the include of resourceArea.hpp

Reviewed-by: tschatzl, jwilhelm
2016-04-04 12:57:48 -04:00
Ivan Krylov
429b1c80a1 8147844: new method j.l.Runtime.onSpinWait() and the corresponding x86 hotspot instrinsic
Adds c1 & c2 x86 intrinsics for j.l.Runtime.onSpinWait() that utilize the PAUSE instruction

Co-authored-by: Yuri Gaevsky <ygaevsky@azul.com>
Reviewed-by: iveresov, kvn
2016-03-30 17:04:14 +02:00
Vladimir Ivanov
d39c84770b 8152972: C2 crashes with SIGSEGV in LoadNode::make
Reviewed-by: kvn
2016-03-29 21:33:26 +03:00
Vladimir Ivanov
661796fe3f 8152179: C2: Folding of unsigned loads is broken w/ @Stable
Reviewed-by: jrose, kvn
2016-03-28 13:49:34 +03:00
Vladimir Ivanov
3d03610bf4 8152773: C2: LoadNode properties aren't preserved when converting between signed/unsigned variants
Reviewed-by: jrose, kvn
2016-03-28 13:49:34 +03:00
Aleksey Shipilev
103aff334f 8146801: Allocating short arrays of non-constant size is slow
Reviewed-by: kvn, twisti, vlivanov
2016-03-04 01:30:11 +03:00
Vladimir Ivanov
a1b61d2827 8150933: System::arraycopy intrinsic doesn't mark mismatched loads
Reviewed-by: kvn, shade
2016-03-01 20:06:47 +03:00
Vladimir Ivanov
bb51ea7a06 8150543: Mismatched access detection is inaccurate
Reviewed-by: kvn, shade
2016-02-29 23:46:55 +03:00
Vladimir Ivanov
abebc2da5c 8150186: Folding mismatched accesses with @Stable is incorrect
Reviewed-by: kvn, jrose, shade
2016-02-26 01:58:26 +03:00
Aleksey Shipilev
03174f3030 8149813: Move trusted final field handling from C2 LoadNode::Value to shared code
Reviewed-by: thartmann, kvn
2016-02-15 23:45:15 +03:00
Tobias Hartmann
69b52aa28b 8146629: Make phase->is_IterGVN() accessible from Node::Identity and Node::Value
Change arguments of Node::Identity() and Node::Value() from PhaseTransform* to PhaseGVN*.

Reviewed-by: kvn, roland
2016-01-12 12:55:09 +01:00
Zoltan Majo
dfa6539a6a 8086053: Address inconsistencies regarding ZeroTLAB
Add zero-initialization to C1 for fast TLAB refills; strenghten C2 conditions for skipping zero-initialization.

Reviewed-by: kvn, thartmann
2016-01-12 09:19:09 +01:00
Coleen Phillimore
200784d505 8132051: Better byte behavior
Co-authored-by: Roland Westerlin <roland.westerlin@oracle.com>
Co-authored-by: Vladimir Kozlov <vladimir.kozlov@oracle.com>
Co-authored-by: John Rose <john.r.rose@oracle.com>
Reviewed-by: bdelsart, roland, kvn, jrose, ahgross
2015-10-13 18:13:34 -04:00
Roland Westrelin
c18a26c573 8142386: Octane crashes with assert(is_Load())
Unsafe access to an array is wrongly marked as mismatched

Reviewed-by: vlivanov, thartmann
2015-11-17 12:00:16 +01:00
Roland Westrelin
45b3ce816a 8140309: [REDO] failed: no mismatched stores, except on raw memory: StoreB StoreI
Mismatched stores on same slice possible with Unsafe.Put*Unaligned methods

Reviewed-by: kvn, thartmann
2015-10-28 10:20:33 +01:00
Dean Long
42c3dcab55 8140267: assert(is_native_ptr || alias_type->adr_type() == TypeOopPtr::BOTTOM || alias_type->field() != __null || alias_type->element() != __null) failed: field, array element or unknown
Back out 8136473

Reviewed-by: twisti
2015-10-21 18:05:45 -04:00
Roland Westrelin
096fa934a8 8136473: failed: no mismatched stores, except on raw memory: StoreB StoreI
Mismatched stores on same slice possible with Unsafe.Put*Unaligned methods

Reviewed-by: kvn, thartmann
2015-10-16 16:53:02 +02:00
Jesper Wilhelmsson
e75e2e04f7 Merge 2015-10-07 01:03:24 +02:00
David Lindholm
1e71f67736 8080775: Better argument formatting for assert() and friends
Reviewed-by: kbarrett, pliden
2015-09-29 11:02:08 +02:00
Hui Shi
0f4b248b18 8136596: Remove aarch64: MemBarRelease when final field's allocation is NoEscape or ArgEscape
Elide MemBar when AllocateNode _is_non_escaping

Reviewed-by: kvn, roland
2015-09-21 10:51:33 +02:00
Aleksey Shipilev
7c7692856a 8134758: Final String field values should be trusted as stable
Reviewed-by: kvn, thartmann
2015-09-01 19:48:10 +03: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
Roland Westrelin
0baf2f7e8a 8130847: Cloned object's fields observed as null after C2 escape analysis
Eliminated instance/array written to by an array copy variant must be correctly initialized when reallocated at a deopt

Reviewed-by: kvn, vlivanov
2015-08-15 02:54:18 +02:00
Roland Westrelin
d7522fb084 8086046: escape analysis generates incorrect code as of B67
Load bypasses arraycopy that sets the value after the ArrayCopyNode is expanded

Reviewed-by: kvn
2015-06-12 14:10:17 +02:00
Roland Westrelin
a3c77df5f1 8077504: Unsafe load can loose control dependency and cause crash
Node::depends_only_on_test() should return false for Unsafe loads

Reviewed-by: kvn, adinn
2015-05-21 13:54:07 +02:00
Roland Westrelin
a9cdbd0407 8076188: Optimize arraycopy out for non escaping destination
If the destination of an arraycopy is non escaping, the arraycopy may be optimized out

Reviewed-by: kvn, vlivanov
2015-05-12 10:27:50 +02:00
Roland Westrelin
05ea4dbf1e 8069191: moving predicate out of loops may cause array accesses to bypass null check
Remove CastPP nodes only during final graph reshape

Reviewed-by: kvn, jrose
2015-03-24 10:25:09 +01:00
Stefan Karlsson
4913ad5d7d 8072911: Remove includes of oop.inline.hpp from .hpp files
Reviewed-by: brutisso, coleenp, jwilhelm, simonis, dholmes
2015-02-13 14:37:35 +01:00
Zoltan Majo
eb5be4c2fe 8066312: Add new Node* Node::find_out(int opc) method
Added methods find_user_with() and has_user_with() for searching for a particular out type.

Reviewed-by: kvn, jrose
2015-01-19 09:32:40 +01:00
Vladimir Ivanov
5fd1e54fc1 8067338: compiler/debug/TraceIterativeGVN.java segfaults
Reviewed-by: kvn
2014-12-19 16:42:40 -08:00
Vladimir Ivanov
f3d9096e4d 8062258: compiler/debug/TraceIterativeGVN.java segfaults in trace_PhaseIterGVN
Reviewed-by: kvn
2014-11-17 14:02:45 -08: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
Vladimir Ivanov
83181efbeb 8058847: C2: EliminateAutoBox regression after 8042786
Reviewed-by: kvn, roland
2014-10-24 09:13:12 -07:00
Vladimir Kozlov
98f413fa1f Merge 2014-09-04 22:59:17 -07:00
Coleen Phillimore
73d759e533 8049105: Move array component mirror to instance of java/lang/Class (hotspot part 2)
This removes component mirrors from arrayKlass metadata and the C2 intrinsic for them.

Reviewed-by: kvn, twisti, mgerdin
2014-08-28 11:29:09 -04: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
Roland Westrelin
fa27000f3c 8055910: closed/java/util/Collections/CheckedCollections.java failed with ClassCastException not thrown
Missing subtype check for Arrays.copyOf intrinsic

Reviewed-by: kvn, iveresov
2014-08-29 16:32:29 +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
David Chase
305ec3bd3f 8037816: Fix for 8036122 breaks build with Xcode5/clang
Repaired or selectively disabled offending formats; future-proofed with additional checking

Reviewed-by: kvn, jrose, stefank
2014-05-09 16:50:54 -04: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
Vladimir Kozlov
c909ac41de 8039298: assert(base == NULL || t_adr->isa_rawptr() || !phase->type(base)->higher_equal(TypePtr::NULL_PTR))
Convert the assert into the runtime check to skip IGVN optimizations for problematic memory nodes. Eliminate dead nodes more aggressively.

Reviewed-by: twisti, iveresov
2014-05-02 16:44:54 -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