178 Commits

Author SHA1 Message Date
Zoltan Majo
9245cdc214 8076112: Add @HotSpotIntrinsicCandidate annotation to indicate methods for which Java Runtime has intrinsics
Annotate possibly intrinsified methods with @HotSpotIntrinsicCandidate. Add checks omitted by intrinsics to the library code. Add CheckIntrinsics flags to check consistency of intrinsics.

Reviewed-by: jrose, kvn, thartmann, vlivanov, abuckley, darcy, ascarpino, briangoetz, alanb, aph, dnsimon
2015-07-03 07:25:03 +02:00
Andrew Haley
917f70414f Merge 2015-07-02 11:12:59 +01:00
Andrew Haley
52b991b411 8130150: Implement BigInteger.montgomeryMultiply intrinsic
Add montgomeryMultiply intrinsics

Reviewed-by: kvn
2015-06-16 17:31:53 +01:00
James Cheng
e2533553f6 8073583: C2 support for CRC32C on SPARC
Reviewed-by: jrose, kvn
2015-06-29 00:10:01 -07:00
Vladimir Ivanov
90a42c2491 8074551: GWT can be marked non-compilable due to deopt count pollution
Reviewed-by: kvn
2015-06-11 14:19:40 +03:00
Anthony Scarpino
c4c528df14 8073108: Use x86 and SPARC CPU instructions for GHASH acceleration
Reviewed-by: kvn, jrose
2015-06-17 17:48:25 -07:00
Vladimir Kozlov
93d1573c5e 8081778: Use Intel x64 CPU instructions for RSA acceleration
Add intrinsics for BigInteger squareToLen and mulAdd methods.

Reviewed-by: kvn, jrose
2015-06-03 15:02:10 -07: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
cb7a08139b 8074676: java.lang.invoke.PermuteArgsTest.java fails with "assert(is_Initialize()) failed: invalid node class"
After guards in Arrays.copyOf() intrinsic, control may become top

Reviewed-by: kvn, vlivanov
2015-04-15 11:01:56 +02:00
Andrew Haley
1dfbc44c1f 8026049: (bf) Intrinsify ByteBuffer.put{Int, Double, Float, ...} methods
Use unaligned Unsafe loads and stores for ByteBuffer access on platforms which support unaligned access. Add intrinsics for Unsafe.{get,put}-X-Unaligned methods.

Reviewed-by: dholmes, jrose, psandoz, kvn
2015-03-31 12:31:18 -07:00
Roland Westrelin
61aa1cfdef 8075921: assert assert(allocx == alloc) fails in library_call.cpp
Control becomes top after arraycopy guards and confuses tighly coupled allocation logic

Reviewed-by: kvn, vlivanov
2015-03-27 08:58:45 +01:00
Vladimir Ivanov
b64245d163 Merge 2015-03-20 20:32:07 +00:00
Vladimir Ivanov
879642dc68 8074548: Never-taken branches cause repeated deopts in MHs.GWT case
Reviewed-by: jrose, kvn
2015-03-20 11:41:34 -07:00
Vladimir Ivanov
43dbb43fb5 8075263: MHI::checkCustomized isn't eliminated for inlined MethodHandles
Reviewed-by: jrose, kvn
2015-03-20 11:41:34 -07:00
Roland Westrelin
0258ef4abc 8073866: Fix for 8064703 is not sufficient
Side effects between allocation and arraycopy can be reexecuted, unreachable uninitialized array can be seen by GCs

Reviewed-by: kvn, vlivanov
2015-03-16 12:24:06 +01:00
Roland Westrelin
25a0458907 8073796: assert(check_obj_alignment(result)) failed: address not aligned: ..
Arrays.copyOf intrinsic can deoptimize with uninitialized new array

Reviewed-by: kvn
2015-02-25 12:33:43 +01:00
Vladimir Ivanov
dad72d8a2b Merge 2015-02-24 07:39:22 -08:00
Roland Westrelin
88848bd9e8 6912521: System.arraycopy works slower than the simple loop for little lengths
Convert small array copies to series of loads and stores

Reviewed-by: kvn, vlivanov
2015-02-18 18:14:07 +01:00
Harold Seigel
ce4261471b 8068687: Remove meta-index support and cleanup hotspot code for rt.jar etc in non-modular jdk image
Remove the meta-index code and rt.jar code and comments

Reviewed-by: mchung, gtriantafill
2015-02-17 13:19:23 -05:00
Christian Tornqvist
094674666c Merge 2015-02-13 05:17:41 -08:00
Paul Sandoz
c002e71565 8068977: Remove unused sun.misc.Unsafe prefetch intrinsic support
Reviewed-by: kvn, vlivanov
2015-02-10 21:32:05 +01:00
Roland Westrelin
e6ac3ca09e 8072016: Array copy may cause infinite cycle of deoptimization/compilation
Infinite deoptimization/recompilation cycles in case of arraycopy with tightly coupled allocation

Reviewed-by: kvn, vlivanov
2015-02-09 15:10:58 +01:00
Vladimir Ivanov
7227e9ba53 8063137: Never-taken branches should be pruned when GWT LambdaForms are shared
Reviewed-by: jrose, kvn
2015-01-29 10:25:59 -08:00
Tobias Hartmann
21e2e5ffc0 8069580: String intrinsic related cleanups
Small cleanup of string intrinsic related code.

Reviewed-by: kvn, roland
2015-01-22 09:07:41 +01:00
Roland Westrelin
2e82794bfa 6700100: optimize inline_native_clone() for small objects with exact klass
Optimize small instance clones as loads/stores

Reviewed-by: kvn, iveresov
2014-12-16 13:49:36 +01:00
Roland Westrelin
686e5a0a6f 8064703: crash running specjvm98's javac following 8060252
Uncommon trap between arraycopy and initialization may leave array initialized

Reviewed-by: kvn, vlivanov, goetz
2014-12-01 11:59:56 +01: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
Roland Westrelin
79738069b0 8060252: JDK-7173584 compiler changes regress SPECjvm2008 on SPARC
Arraycopy code misses opportunities to optimize copies to just allocated array.

Reviewed-by: kvn
2014-10-20 22:53:37 +02:00
Vladimir Kozlov
74def215cd 8054492: Casting can result in redundant null checks in generated code
Add C2 intrinsic for Class.cast() method and force inline it too.

Reviewed-by: jrose, roland, drchase, iignatyev
2014-10-31 16:51:57 -07:00
Roland Westrelin
2d59d215e2 8057758: Tests run TypeProfileLevel=222 crash with guarantee(0) failed: must find derived/base pair
Use TypeAryPtr::INT type with offset 0 in inline_multiplyToLen().

Reviewed-by: kvn, iveresov
2014-09-09 15:47:18 -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
Roland Westrelin
400f0f7a8f 8055153: nsk/stress/jck60/jck60014 crashes on sparc
Missing control for LoadRange and LoadKlass nodes created during arraycopy node expansion

Reviewed-by: kvn, iveresov
2014-08-19 17:23:38 +02:00
Vladimir Kozlov
ed5be50e9e 8054927: Missing MemNode::acquire ordering in some volatile Load nodes
Fixed memory ordering parameter and added missing barriers for volatile loads.

Reviewed-by: roland, iveresov
2014-08-13 13:05:04 -07:00
Roland Westrelin
a56ade07c7 7173584: Implement arraycopy as a macro node
Delay the conversion of arraycopy to stub calls to macro expansion

Reviewed-by: kvn, iveresov
2014-08-11 14:12:51 +02: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
Vladimir Kozlov
b9e949183d 8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
Add new C2 intrinsic for BigInteger::multiplyToLen() on x86 in 64-bit VM.

Reviewed-by: roland
2014-09-02 12:48:45 -07:00
Goetz Lindenmaier
25f33c005d 8049325: Introduce and clean up umbrella headers for the files in the cpu subdirectories
Introduce and clean up umbrella headers for the files in the cpu subdirectories.

Reviewed-by: lfoltan, coleenp, dholmes
2014-07-04 11:46:01 +02:00
James Cheng
395560c428 8035968: Leverage CPU Instructions to Improve SHA Performance on SPARC
Add C2 SHA intrinsics on SPARC

Reviewed-by: kvn, roland
2014-06-11 11:05:10 -07:00
Vladimir Kozlov
56cea022c9 8035605: Expand functionality of PredictedIntrinsicGenerator
Allow several predicates and separate intrinsic methods per one intrinsified (virtual) method.

Reviewed-by: roland
2014-06-10 12:28:06 -07:00
Roland Westrelin
2838bcc3bf 8026796: Make replace_in_map() on parent maps generic
Propagate node replacements along control flow edges to callers

Reviewed-by: kvn, vlivanov
2014-06-10 13:37:16 +02:00
Vladimir Ivanov
ea0470002e 8033626: assert(ex_map->jvms()->same_calls_as(_exceptions->jvms())) failed: all collected exceptions must come from the same place
Reviewed-by: kvn, roland
2014-06-10 10:00:59 +00: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
Albert Noll
a3b9ebba8d 8011646: SEGV in compiled code with loop predication
Remove control edge of load node to ensure that castPP removal sets the control edge correctly

Reviewed-by: kvn, roland
2014-05-30 06:50:38 +02:00
Yuri Gaevsky
cc3c656cf1 8025580: Temporary flags: UseNewReflection and ReflectionWrapResolutionErrors
The fix removes all UseNewReflection/ReflectionWrapResolutionErrors occurrences/logic and adds them into the list of obsolete_jvm_flags in arguments.cpp.

Reviewed-by: coleenp, hseigel
2014-05-15 17:38:50 -04:00
Tobias Hartmann
ded0d16e25 8042052: assert(t != NULL) failed: must set before get
Added missing call to _gvn.transform to make sure the type of the PhiNode is recorded in the gvn.

Reviewed-by: kvn
2014-05-05 15:10:43 +02:00
Niclas Adlertz
922879d58e 8029302: Performance regression in Math.pow intrinsic
Added special case for x^y where y == 2

Reviewed-by: kvn, roland
2014-04-25 12:48:34 +02:00
Roland Westrelin
eb8588549a 8007988: PrintInlining output is inconsistent with incremental inlining
Fix duplicate and conflicting inlining output

Reviewed-by: kvn, vlivanov
2014-04-09 09:17:43 +02: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