/hg/icedtea8-forest/hotspot: 63 new changesets

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Tue Jul 26 03:56:34 UTC 2016


changeset 0f47eef348e2 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=0f47eef348e2
author: andrew
date: Wed Jul 20 00:14:17 2016 +0100

	PR3078: Remove duplicated line dating back to 6788347 and 6894807


changeset 03cf8606fc7f in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=03cf8606fc7f
author: andrew
date: Mon Jul 25 06:02:58 2016 +0100

	Added tag icedtea-3.1.0pre04 for changeset 0f47eef348e2


changeset dfe33f6d046b in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=dfe33f6d046b
author: asaha
date: Thu Mar 31 11:40:36 2016 -0700

	Added tag jdk8u92-b14 for changeset 24a09407d71b


changeset 162854aad3a7 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=162854aad3a7
author: asaha
date: Mon Jan 11 13:58:51 2016 -0800

	Added tag jdk8u81-b00 for changeset b374548dcb48


changeset 34dc7de026c1 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=34dc7de026c1
author: kevinw
date: Fri Jan 15 22:33:15 2016 +0000

	8132051: Better byte behavior
	Reviewed-by: coleenp, roland


changeset dceb9ec3b9b9 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=dceb9ec3b9b9
author: kevinw
date: Tue Jan 19 15:35:12 2016 +0000

	8147567: InterpreterRuntime::post_field_access not updated for boolean in JDK-8132051
	Reviewed-by: coleenp


changeset dbc6706b206c in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=dbc6706b206c
author: asaha
date: Tue Jan 26 08:36:21 2016 -0800

	Added tag jdk8u40-b33 for changeset e6aa4a8c1b46


changeset bd18d7ff1a4e in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=bd18d7ff1a4e
author: asaha
date: Tue Jan 26 10:24:49 2016 -0800

	Merge


changeset 737b321e6f0e in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=737b321e6f0e
author: simonis
date: Wed Jan 27 15:01:46 2016 +0100

	8148487: PPC64: Better byte behavior
	Reviewed-by: goetz, mdoerr


changeset a5b78b56841e in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=a5b78b56841e
author: aefimov
date: Sat Jan 30 15:47:29 2016 +0300

	Merge


changeset 1c7a0413e1f3 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=1c7a0413e1f3
author: asaha
date: Sun Jan 31 10:07:50 2016 -0800

	Added tag jdk8u74-b31 for changeset a5b78b56841e


changeset 4cd449d96635 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=4cd449d96635
author: asaha
date: Thu Feb 04 15:13:49 2016 -0800

	Merge


changeset aa6d8e03b258 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=aa6d8e03b258
author: asaha
date: Fri Feb 05 23:10:25 2016 -0800

	Merge


changeset 3d1d360bef82 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=3d1d360bef82
author: kevinw
date: Mon Feb 08 13:08:57 2016 +0000

	8148475: Missing SA Bytecode updates.
	Reviewed-by: coleenp


changeset 3f03f54d9e9f in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=3f03f54d9e9f
author: kevinw
date: Wed Feb 10 13:34:14 2016 +0000

	8149170: Better byte behavior for native arguments
	Summary: Arguments coming from native should be converted to 0=false, 1-255=true
	Reviewed-by: coleenp


changeset d14e327c9b6a in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=d14e327c9b6a
author: asaha
date: Thu Feb 18 09:49:33 2016 -0800

	Merge


changeset 20dbd8a8e6b7 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=20dbd8a8e6b7
author: asaha
date: Thu Feb 18 10:02:52 2016 -0800

	Merge


changeset 81f376fd8bd4 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=81f376fd8bd4
author: asaha
date: Mon Feb 22 13:39:47 2016 -0800

	Merge


changeset edff9941089d in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=edff9941089d
author: asaha
date: Mon Feb 22 14:05:11 2016 -0800

	Merge


changeset acd9e834210f in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=acd9e834210f
author: kevinw
date: Tue Feb 23 23:47:11 2016 +0000

	8149367: PolicyQualifierInfo/index_Ctor JCk test fails with IOE: Invalid encoding for PolicyQualifierInfo
	Summary: fix incorrect code
	Reviewed-by: kvn, coleenp


changeset 815f531cc78b in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=815f531cc78b
author: coleenp
date: Sun Feb 21 08:33:59 2016 -0500

	8150012: Better byte behavior for reflection
	Reviewed-by: kvn, jrose, kevinw, ahgross


changeset 07eef5b14c37 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=07eef5b14c37
author: kevinw
date: Wed Feb 24 11:44:21 2016 +0000

	Merge


changeset 94ec11846b18 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=94ec11846b18
author: thartmann
date: Wed Jan 27 09:02:51 2016 +0100

	6675699: need comprehensive fix for unconstrained ConvI2L with narrowed type
	Summary: Emit CastII to make narrow ConvI2L dependent on the corresponding range check.
	Reviewed-by: kvn, roland


changeset 8d5528e7963f in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=8d5528e7963f
author: asaha
date: Tue Feb 23 09:27:43 2016 -0800

	Added tag jdk8u74-b32 for changeset 94ec11846b18


changeset c42cb5db3601 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=c42cb5db3601
author: asaha
date: Tue Mar 01 15:19:31 2016 -0800

	Merge


changeset 59806927fa4d in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=59806927fa4d
author: asaha
date: Tue Mar 01 15:34:20 2016 -0800

	Merge


changeset 396186c0342b in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=396186c0342b
author: asaha
date: Wed Mar 02 12:31:06 2016 -0800

	Merge


changeset 2682cce3684b in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=2682cce3684b
author: kevinw
date: Wed Mar 02 19:16:30 2016 +0000

	8146518: Zero interpreter broken with better byte behaviour
	Reviewed-by: coleenp


changeset 3fc2faf6efc9 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=3fc2faf6efc9
author: asaha
date: Tue Mar 22 21:56:13 2016 -0700

	Merge


changeset 493ab9e0773f in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=493ab9e0773f
author: asaha
date: Tue Mar 22 22:31:28 2016 -0700

	Merge


changeset d5acb1fc70f5 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=d5acb1fc70f5
author: asaha
date: Wed Mar 23 14:26:17 2016 -0700

	Added tag jdk8u101-b00 for changeset b374548dcb48


changeset ead07188d111 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=ead07188d111
author: asaha
date: Wed Mar 23 14:43:24 2016 -0700

	Merge


changeset 6bd69608ca93 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=6bd69608ca93
author: asaha
date: Mon Mar 28 11:31:43 2016 -0700

	Added tag jdk8u101-b01 for changeset ead07188d111


changeset 4fc39d24d00e in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=4fc39d24d00e
author: asaha
date: Thu Mar 31 14:04:14 2016 -0700

	Merge


changeset 0d5597f44603 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=0d5597f44603
author: asaha
date: Mon Mar 21 14:58:37 2016 -0700

	Merge


changeset 51c505229e71 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=51c505229e71
author: igerasim
date: Wed Feb 17 13:40:12 2016 +0300

	8081778: Use Intel x64 CPU instructions for RSA acceleration
	Summary: Add intrinsics for BigInteger squareToLen and mulAdd methods.
	Reviewed-by: kvn, jrose


changeset 5601e440e5e7 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=5601e440e5e7
author: vkempik
date: Fri Mar 04 16:15:48 2016 +0300

	8130150: Implement BigInteger.montgomeryMultiply intrinsic
	Reviewed-by: kvn, mdoerr


changeset 4abc54f62213 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=4abc54f62213
author: vkempik
date: Wed Mar 09 19:51:23 2016 +0300

	8151522: Disable 8130150 and 8081778 intrinsics by default
	Reviewed-by: kvn


changeset dd8507f51d78 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=dd8507f51d78
author: vkempik
date: Fri Mar 18 17:23:07 2016 +0300

	8152098: Fix 8151522 caused test compiler/intrinsics/squaretolen/TestSquareToLen.java to fail
	Reviewed-by: kvn


changeset 73666857cf0a in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=73666857cf0a
author: asaha
date: Tue Mar 22 12:00:51 2016 -0700

	Added tag jdk8u77-b31 for changeset dd8507f51d78


changeset 445941ba41c0 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=445941ba41c0
author: asaha
date: Thu Mar 31 14:23:12 2016 -0700

	Merge


changeset 34429bad9986 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=34429bad9986
author: asaha
date: Mon Apr 04 12:18:28 2016 -0700

	Merge


changeset bde4021b44f2 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=bde4021b44f2
author: asaha
date: Mon Apr 04 13:58:22 2016 -0700

	Added tag jdk8u101-b02 for changeset 34429bad9986


changeset 50e62b688ddc in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=50e62b688ddc
author: iklam
date: Thu Mar 24 21:38:15 2016 -0700

	8150752: Share Class Data
	Reviewed-by: acorn, hseigel, mschoene


changeset 9edc175ff3e6 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=9edc175ff3e6
author: vkempik
date: Fri Apr 08 15:15:25 2016 +0300

	8152479: Coded byte streams
	Reviewed-by: hseigel


changeset c9ca6deb19a0 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=c9ca6deb19a0
author: asaha
date: Sun Apr 10 23:17:09 2016 -0700

	Added tag jdk8u92-b31 for changeset 445941ba41c0


changeset b41d5faaf1d3 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=b41d5faaf1d3
author: asaha
date: Sun Apr 10 23:31:53 2016 -0700

	Merge


changeset ceecf88e5c2c in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=ceecf88e5c2c
author: asaha
date: Mon Apr 11 12:22:33 2016 -0700

	Added tag jdk8u101-b03 for changeset b41d5faaf1d3


changeset 19e74265fc8d in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=19e74265fc8d
author: asaha
date: Mon Apr 18 10:53:11 2016 -0700

	Added tag jdk8u101-b04 for changeset ceecf88e5c2c


changeset 7c60503b0888 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=7c60503b0888
author: asaha
date: Mon Apr 25 10:51:47 2016 -0700

	Added tag jdk8u101-b05 for changeset 19e74265fc8d


changeset 432c2a4b018e in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=432c2a4b018e
author: asaha
date: Mon May 02 14:24:36 2016 -0700

	Added tag jdk8u101-b06 for changeset 7c60503b0888


changeset cb4af293fe70 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=cb4af293fe70
author: jiangli
date: Wed Apr 27 14:41:55 2016 -0400

	8153312: Constrain AppCDS behavior
	Reviewed-by: iklam, acorn, mschoene


changeset 8ed377d2cec9 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=8ed377d2cec9
author: asaha
date: Mon May 09 10:43:54 2016 -0700

	Added tag jdk8u101-b07 for changeset cb4af293fe70


changeset 9be452c4e716 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=9be452c4e716
author: asaha
date: Mon May 16 10:30:49 2016 -0700

	Added tag jdk8u101-b08 for changeset 8ed377d2cec9


changeset de0aee431117 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=de0aee431117
author: asaha
date: Mon May 23 17:32:08 2016 -0700

	Added tag jdk8u101-b09 for changeset 9be452c4e716


changeset 6257eccb1b98 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=6257eccb1b98
author: asaha
date: Fri May 20 11:26:05 2016 -0700

	Added tag jdk8u91-b15 for changeset e1ea97ad19af


changeset 218a44a163fa in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=218a44a163fa
author: asaha
date: Thu May 26 13:43:29 2016 -0700

	Merge


changeset fa600c26dd0d in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=fa600c26dd0d
author: asaha
date: Tue May 31 09:24:08 2016 -0700

	Added tag jdk8u101-b10 for changeset 218a44a163fa


changeset 0095e54dcaa1 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=0095e54dcaa1
author: shshahma
date: Wed May 11 12:03:46 2016 -0400

	8155981: Bolster bytecode verification
	Reviewed-by: acorn, jdn
	Contributed-by: harold.seigel at oracle.com


changeset 286fe17d81c3 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=286fe17d81c3
author: asaha
date: Mon Jun 06 11:59:10 2016 -0700

	Added tag jdk8u101-b11 for changeset 0095e54dcaa1


changeset 77df35b662ed in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=77df35b662ed
author: asaha
date: Mon Jun 13 12:49:34 2016 -0700

	Added tag jdk8u101-b12 for changeset 286fe17d81c3


changeset e480e0df8eea in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=e480e0df8eea
author: andrew
date: Mon Jul 25 06:38:24 2016 +0100

	Merge jdk8u101-b13


changeset ab3e0bde3c15 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=ab3e0bde3c15
author: andrew
date: Tue Jul 26 04:42:03 2016 +0100

	Added tag icedtea-3.1.0 for changeset e480e0df8eea


diffstat:

 .hgtags                                                                 |   30 +
 src/cpu/x86/vm/assembler_x86.cpp                                        |   20 +
 src/cpu/x86/vm/assembler_x86.hpp                                        |    3 +
 src/cpu/x86/vm/macroAssembler_x86.cpp                                   |  497 ++++++++++
 src/cpu/x86/vm/macroAssembler_x86.hpp                                   |   19 +
 src/cpu/x86/vm/sharedRuntime_x86_64.cpp                                 |  253 +++++
 src/cpu/x86/vm/stubGenerator_x86_64.cpp                                 |  120 ++-
 src/cpu/x86/vm/stubRoutines_x86_64.hpp                                  |    2 +-
 src/cpu/x86/vm/vm_version_x86.cpp                                       |   36 +
 src/share/vm/classfile/dictionary.cpp                                   |   17 +-
 src/share/vm/classfile/dictionary.hpp                                   |    5 +-
 src/share/vm/classfile/systemDictionary.cpp                             |   18 +-
 src/share/vm/classfile/systemDictionaryShared.hpp                       |   19 +-
 src/share/vm/classfile/verificationType.cpp                             |   21 +-
 src/share/vm/classfile/verifier.cpp                                     |   28 +-
 src/share/vm/classfile/vmSymbols.hpp                                    |   18 +-
 src/share/vm/interpreter/bytecodeStream.cpp                             |   10 +-
 src/share/vm/interpreter/bytecodeStream.hpp                             |   39 +-
 src/share/vm/memory/metaspaceShared.cpp                                 |    9 +-
 src/share/vm/memory/metaspaceShared.hpp                                 |    7 +-
 src/share/vm/oops/instanceKlass.cpp                                     |   20 +-
 src/share/vm/oops/klassVtable.cpp                                       |  102 +-
 src/share/vm/oops/klassVtable.hpp                                       |   13 +
 src/share/vm/oops/method.cpp                                            |   28 +
 src/share/vm/oops/method.hpp                                            |    4 +-
 src/share/vm/opto/c2_globals.hpp                                        |   12 +
 src/share/vm/opto/cfgnode.cpp                                           |    2 -
 src/share/vm/opto/compile.cpp                                           |   58 +
 src/share/vm/opto/compile.hpp                                           |   22 +-
 src/share/vm/opto/connode.cpp                                           |   20 +-
 src/share/vm/opto/connode.hpp                                           |   16 +-
 src/share/vm/opto/escape.cpp                                            |    8 +-
 src/share/vm/opto/graphKit.cpp                                          |   51 +-
 src/share/vm/opto/graphKit.hpp                                          |    4 +-
 src/share/vm/opto/library_call.cpp                                      |  250 ++++-
 src/share/vm/opto/loopTransform.cpp                                     |   23 +-
 src/share/vm/opto/loopopts.cpp                                          |    3 +
 src/share/vm/opto/node.cpp                                              |   14 +
 src/share/vm/opto/node.hpp                                              |    3 +
 src/share/vm/opto/parse2.cpp                                            |   11 +-
 src/share/vm/opto/phaseX.cpp                                            |    4 +
 src/share/vm/opto/runtime.cpp                                           |   88 +
 src/share/vm/opto/runtime.hpp                                           |    6 +
 src/share/vm/opto/superword.cpp                                         |    5 +
 src/share/vm/prims/whitebox.cpp                                         |    8 +-
 src/share/vm/runtime/sharedRuntime.hpp                                  |    6 +
 src/share/vm/runtime/stubRoutines.cpp                                   |    4 +
 src/share/vm/runtime/stubRoutines.hpp                                   |    8 +
 src/share/vm/runtime/vmStructs.cpp                                      |    2 +
 test/compiler/intrinsics/montgomerymultiply/MontgomeryMultiplyTest.java |  284 +++++
 test/compiler/intrinsics/muladd/TestMulAdd.java                         |  118 ++
 test/compiler/intrinsics/squaretolen/TestSquareToLen.java               |  116 ++
 test/compiler/loopopts/TestLoopPeeling.java                             |  100 ++
 test/testlibrary/whitebox/sun/hotspot/WhiteBox.java                     |    4 +-
 54 files changed, 2479 insertions(+), 109 deletions(-)

diffs (truncated from 3690 to 500 lines):

diff -r 6000574e256d -r ab3e0bde3c15 .hgtags
--- a/.hgtags	Sun Jul 17 18:54:24 2016 +0100
+++ b/.hgtags	Tue Jul 26 04:42:03 2016 +0100
@@ -617,6 +617,7 @@
 6824e2475e0432e27f9cc51838bc34ea5fbf5113 jdk8u40-b27
 8220f68a195f6eeed2f5fb6e8a303726b512e899 jdk8u40-b31
 850a290eb1088a61178d1910c500e170ef4f4386 jdk8u40-b32
+e6aa4a8c1b46a05b6c493b4ffe5c2555013f5c99 jdk8u40-b33
 1b3abbeee961dee49780c0e4af5337feb918c555 jdk8u40-b10
 f10fe402dfb1543723b4b117a7cba3ea3d4159f1 hs25.40-b15
 99372b2fee0eb8b3452f47230e84aa6e97003184 jdk8u40-b11
@@ -826,17 +827,28 @@
 dc2fdd4e0b8105268b8231040f761f27ab4523f2 jdk8u72-b14
 dbf85d44da89a2428b3bd678be791c314e148845 icedtea-3.0.0pre09
 d6670c5d49ba381405ec9f69a78ccc5b8b0c8473 jdk8u72-b15
+da43260704c28b9f19cb652090ae65c258220fd6 jdk8u72-b31
 26b99cd20661a1fa05939d1856a9389311e01c4f jdk8u73-b00
 931c31db01ae873525a1b2c306b01129eb431960 jdk8u73-b01
 67566d815a66d958c1f817d65f1621ba1d2e5f33 jdk8u73-b02
 451dda77f6c29bd3260e87f847a9eadae122a759 jdk8u74-b00
 c1031a924f2c910fad078838b88a2f0146f2de98 jdk8u74-b01
 ca9cae9aa9e989bbe6713c91d55c913edeaecce4 jdk8u74-b02
+a5b78b56841e97ce00463874f1b7f63c54d84934 jdk8u74-b31
+94ec11846b18111e73929b6caa9fbe7262e142c1 jdk8u74-b32
+1b6d4fd2730e58f17820930f797938dc182117c4 jdk8u77-b00
+ddd297e340b1170d3cec011ee64e729f8b493c86 jdk8u77-b01
+1b4072e4bb3ad54c4e894998486a8b33f0689160 jdk8u77-b02
+223b64a19e94222dd97b92bb40abcfbc0bf6ef1f jdk8u77-b03
+dd8507f51d786572dae18af8ffdc5a1ea34c755e jdk8u77-b31
+
+94ec11846b18111e73929b6caa9fbe7262e142c1 jdk8u74-b32
 da43260704c28b9f19cb652090ae65c258220fd6 jdk8u72-b31
 c0242ea4bde19d72be5149feda112a39e8c89b0a jdk8u75-b00
 ca3b8c8e390ab0540b0cc2e5def869b38e460d86 jdk8u75-b01
 9aef5b5e0a68f20059cfa9e2806b4ff0e11a3d31 jdk8u75-b02
 2df9fe896819362b9075a670b78106b249e50d6d jdk8u75-b03
+b374548dcb4834eb8731a06b52faddd0f10bd45d jdk8u101-b00
 32b682649973231b54740c09b10889660f6ebde5 jdk8u75-b04
 1f43bd4fab06d2ca5d1964611df14d8506d6b36e jdk8u75-b05
 916712f178c39d0acbc590f38802133fc86a7346 jdk8u75-b06
@@ -855,6 +867,7 @@
 bbbb05e91c629f8d9eef2ba43933767f68a898b0 jdk8u91-b00
 e36b6ade0499eadfd8673fe62ef0a613af2e6d67 jdk8u91-b13
 fa8991ccf6e5b74890a0b5672440b3c09d8d8732 jdk8u91-b14
+e1ea97ad19af4d1e0bda449aa43be7e1b118ffe9 jdk8u91-b15
 d7b01fb81aa8a5437cb03bc36afe15cf0e55fb89 jdk8u76-b00
 c1679cc87ba045219169cabb6b9b378c2b5cc578 jdk8u76-b01
 218483967e52b419d885d34af4488a81c5133804 jdk8u76-b02
@@ -873,3 +886,20 @@
 cbd30c92ef7a62846124e28b35aaf668621b1105 icedtea-3.1.0pre01
 76eca5cf31500ecb1d1807685729a7ea5c3780e7 icedtea-3.1.0pre02
 ea6933324a7a52379d7f1e18e7525fd619079865 icedtea-3.1.0pre03
+0f47eef348e2ec17dd6492886c57e23023fbc435 icedtea-3.1.0pre04
+24a09407d71bb2cc4848bfa21660c890b4d722b1 jdk8u92-b14
+445941ba41c0e3829fe02140690b144281ac2141 jdk8u92-b31
+b374548dcb4834eb8731a06b52faddd0f10bd45d jdk8u81-b00
+ead07188d11107e877e8e4ad215ff6cb238a8a92 jdk8u101-b01
+34429bad9986677f4991c80aeb22665842881cba jdk8u101-b02
+b41d5faaf1d32ed1bf9592f65f2f94ddd4c60fc4 jdk8u101-b03
+ceecf88e5c2c09bfabf5926581e6d0b0f65f5148 jdk8u101-b04
+19e74265fc8def6a7fc96c836d8ebe38ad1cf199 jdk8u101-b05
+7c60503b0888ac16eac80a6cd074195973f8dedb jdk8u101-b06
+cb4af293fe70549b51039bb9197f373e6750fafb jdk8u101-b07
+8ed377d2cec94435d1617a37999960a24be73ad9 jdk8u101-b08
+9be452c4e7161e60d623d55bb72ad013386aefd1 jdk8u101-b09
+218a44a163fa8c2532fd5f2e8ea9bc3c9c2ca8cf jdk8u101-b10
+0095e54dcaa1acfe1614feff9600734c26af7ae8 jdk8u101-b11
+286fe17d81c3d153611a28e50926083ae934cc56 jdk8u101-b12
+e480e0df8eea8e5d022672a450cd6c8e2eeac86b icedtea-3.1.0
diff -r 6000574e256d -r ab3e0bde3c15 src/cpu/x86/vm/assembler_x86.cpp
--- a/src/cpu/x86/vm/assembler_x86.cpp	Sun Jul 17 18:54:24 2016 +0100
+++ b/src/cpu/x86/vm/assembler_x86.cpp	Tue Jul 26 04:42:03 2016 +0100
@@ -2318,6 +2318,13 @@
   emit_arith(0x0B, 0xC0, dst, src);
 }
 
+void Assembler::orl(Address dst, Register src) {
+  InstructionMark im(this);
+  prefix(dst, src);
+  emit_int8(0x09);
+  emit_operand(src, dst);
+}
+
 void Assembler::packuswb(XMMRegister dst, Address src) {
   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
   assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");
@@ -5613,6 +5620,19 @@
   }
 }
 
+void Assembler::rcrq(Register dst, int imm8) {
+  assert(isShiftCount(imm8 >> 1), "illegal shift count");
+  int encode = prefixq_and_encode(dst->encoding());
+  if (imm8 == 1) {
+    emit_int8((unsigned char)0xD1);
+    emit_int8((unsigned char)(0xD8 | encode));
+  } else {
+    emit_int8((unsigned char)0xC1);
+    emit_int8((unsigned char)(0xD8 | encode));
+    emit_int8(imm8);
+  }
+}
+
 void Assembler::rorq(Register dst, int imm8) {
   assert(isShiftCount(imm8 >> 1), "illegal shift count");
   int encode = prefixq_and_encode(dst->encoding());
diff -r 6000574e256d -r ab3e0bde3c15 src/cpu/x86/vm/assembler_x86.hpp
--- a/src/cpu/x86/vm/assembler_x86.hpp	Sun Jul 17 18:54:24 2016 +0100
+++ b/src/cpu/x86/vm/assembler_x86.hpp	Tue Jul 26 04:42:03 2016 +0100
@@ -1455,6 +1455,7 @@
   void orl(Register dst, int32_t imm32);
   void orl(Register dst, Address src);
   void orl(Register dst, Register src);
+  void orl(Address dst, Register src);
 
   void orq(Address dst, int32_t imm32);
   void orq(Register dst, int32_t imm32);
@@ -1555,6 +1556,8 @@
 
   void rclq(Register dst, int imm8);
 
+  void rcrq(Register dst, int imm8);
+
   void rdtsc();
 
   void ret(int imm16);
diff -r 6000574e256d -r ab3e0bde3c15 src/cpu/x86/vm/macroAssembler_x86.cpp
--- a/src/cpu/x86/vm/macroAssembler_x86.cpp	Sun Jul 17 18:54:24 2016 +0100
+++ b/src/cpu/x86/vm/macroAssembler_x86.cpp	Tue Jul 26 04:42:03 2016 +0100
@@ -7769,6 +7769,503 @@
   pop(tmp2);
   pop(tmp1);
 }
+
+//Helper functions for square_to_len()
+
+/**
+ * Store the squares of x[], right shifted one bit (divided by 2) into z[]
+ * Preserves x and z and modifies rest of the registers.
+ */
+
+void MacroAssembler::square_rshift(Register x, Register xlen, Register z, Register tmp1, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, Register raxReg) {
+  // Perform square and right shift by 1
+  // Handle odd xlen case first, then for even xlen do the following
+  // jlong carry = 0;
+  // for (int j=0, i=0; j < xlen; j+=2, i+=4) {
+  //     huge_128 product = x[j:j+1] * x[j:j+1];
+  //     z[i:i+1] = (carry << 63) | (jlong)(product >>> 65);
+  //     z[i+2:i+3] = (jlong)(product >>> 1);
+  //     carry = (jlong)product;
+  // }
+
+  xorq(tmp5, tmp5);     // carry
+  xorq(rdxReg, rdxReg);
+  xorl(tmp1, tmp1);     // index for x
+  xorl(tmp4, tmp4);     // index for z
+
+  Label L_first_loop, L_first_loop_exit;
+
+  testl(xlen, 1);
+  jccb(Assembler::zero, L_first_loop); //jump if xlen is even
+
+  // Square and right shift by 1 the odd element using 32 bit multiply
+  movl(raxReg, Address(x, tmp1, Address::times_4, 0));
+  imulq(raxReg, raxReg);
+  shrq(raxReg, 1);
+  adcq(tmp5, 0);
+  movq(Address(z, tmp4, Address::times_4, 0), raxReg);
+  incrementl(tmp1);
+  addl(tmp4, 2);
+
+  // Square and  right shift by 1 the rest using 64 bit multiply
+  bind(L_first_loop);
+  cmpptr(tmp1, xlen);
+  jccb(Assembler::equal, L_first_loop_exit);
+
+  // Square
+  movq(raxReg, Address(x, tmp1, Address::times_4,  0));
+  rorq(raxReg, 32);    // convert big-endian to little-endian
+  mulq(raxReg);        // 64-bit multiply rax * rax -> rdx:rax
+
+  // Right shift by 1 and save carry
+  shrq(tmp5, 1);       // rdx:rax:tmp5 = (tmp5:rdx:rax) >>> 1
+  rcrq(rdxReg, 1);
+  rcrq(raxReg, 1);
+  adcq(tmp5, 0);
+
+  // Store result in z
+  movq(Address(z, tmp4, Address::times_4, 0), rdxReg);
+  movq(Address(z, tmp4, Address::times_4, 8), raxReg);
+
+  // Update indices for x and z
+  addl(tmp1, 2);
+  addl(tmp4, 4);
+  jmp(L_first_loop);
+
+  bind(L_first_loop_exit);
+}
+
+
+/**
+ * Perform the following multiply add operation using BMI2 instructions
+ * carry:sum = sum + op1*op2 + carry
+ * op2 should be in rdx
+ * op2 is preserved, all other registers are modified
+ */
+void MacroAssembler::multiply_add_64_bmi2(Register sum, Register op1, Register op2, Register carry, Register tmp2) {
+  // assert op2 is rdx
+  mulxq(tmp2, op1, op1);  //  op1 * op2 -> tmp2:op1
+  addq(sum, carry);
+  adcq(tmp2, 0);
+  addq(sum, op1);
+  adcq(tmp2, 0);
+  movq(carry, tmp2);
+}
+
+/**
+ * Perform the following multiply add operation:
+ * carry:sum = sum + op1*op2 + carry
+ * Preserves op1, op2 and modifies rest of registers
+ */
+void MacroAssembler::multiply_add_64(Register sum, Register op1, Register op2, Register carry, Register rdxReg, Register raxReg) {
+  // rdx:rax = op1 * op2
+  movq(raxReg, op2);
+  mulq(op1);
+
+  //  rdx:rax = sum + carry + rdx:rax
+  addq(sum, carry);
+  adcq(rdxReg, 0);
+  addq(sum, raxReg);
+  adcq(rdxReg, 0);
+
+  // carry:sum = rdx:sum
+  movq(carry, rdxReg);
+}
+
+/**
+ * Add 64 bit long carry into z[] with carry propogation.
+ * Preserves z and carry register values and modifies rest of registers.
+ *
+ */
+void MacroAssembler::add_one_64(Register z, Register zlen, Register carry, Register tmp1) {
+  Label L_fourth_loop, L_fourth_loop_exit;
+
+  movl(tmp1, 1);
+  subl(zlen, 2);
+  addq(Address(z, zlen, Address::times_4, 0), carry);
+
+  bind(L_fourth_loop);
+  jccb(Assembler::carryClear, L_fourth_loop_exit);
+  subl(zlen, 2);
+  jccb(Assembler::negative, L_fourth_loop_exit);
+  addq(Address(z, zlen, Address::times_4, 0), tmp1);
+  jmp(L_fourth_loop);
+  bind(L_fourth_loop_exit);
+}
+
+/**
+ * Shift z[] left by 1 bit.
+ * Preserves x, len, z and zlen registers and modifies rest of the registers.
+ *
+ */
+void MacroAssembler::lshift_by_1(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
+
+  Label L_fifth_loop, L_fifth_loop_exit;
+
+  // Fifth loop
+  // Perform primitiveLeftShift(z, zlen, 1)
+
+  const Register prev_carry = tmp1;
+  const Register new_carry = tmp4;
+  const Register value = tmp2;
+  const Register zidx = tmp3;
+
+  // int zidx, carry;
+  // long value;
+  // carry = 0;
+  // for (zidx = zlen-2; zidx >=0; zidx -= 2) {
+  //    (carry:value)  = (z[i] << 1) | carry ;
+  //    z[i] = value;
+  // }
+
+  movl(zidx, zlen);
+  xorl(prev_carry, prev_carry); // clear carry flag and prev_carry register
+
+  bind(L_fifth_loop);
+  decl(zidx);  // Use decl to preserve carry flag
+  decl(zidx);
+  jccb(Assembler::negative, L_fifth_loop_exit);
+
+  if (UseBMI2Instructions) {
+     movq(value, Address(z, zidx, Address::times_4, 0));
+     rclq(value, 1);
+     rorxq(value, value, 32);
+     movq(Address(z, zidx, Address::times_4,  0), value);  // Store back in big endian form
+  }
+  else {
+    // clear new_carry
+    xorl(new_carry, new_carry);
+
+    // Shift z[i] by 1, or in previous carry and save new carry
+    movq(value, Address(z, zidx, Address::times_4, 0));
+    shlq(value, 1);
+    adcl(new_carry, 0);
+
+    orq(value, prev_carry);
+    rorq(value, 0x20);
+    movq(Address(z, zidx, Address::times_4,  0), value);  // Store back in big endian form
+
+    // Set previous carry = new carry
+    movl(prev_carry, new_carry);
+  }
+  jmp(L_fifth_loop);
+
+  bind(L_fifth_loop_exit);
+}
+
+
+/**
+ * Code for BigInteger::squareToLen() intrinsic
+ *
+ * rdi: x
+ * rsi: len
+ * r8:  z
+ * rcx: zlen
+ * r12: tmp1
+ * r13: tmp2
+ * r14: tmp3
+ * r15: tmp4
+ * rbx: tmp5
+ *
+ */
+void MacroAssembler::square_to_len(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, Register raxReg) {
+
+  Label L_second_loop, L_second_loop_exit, L_third_loop, L_third_loop_exit, fifth_loop, fifth_loop_exit, L_last_x, L_multiply;
+  push(tmp1);
+  push(tmp2);
+  push(tmp3);
+  push(tmp4);
+  push(tmp5);
+
+  // First loop
+  // Store the squares, right shifted one bit (i.e., divided by 2).
+  square_rshift(x, len, z, tmp1, tmp3, tmp4, tmp5, rdxReg, raxReg);
+
+  // Add in off-diagonal sums.
+  //
+  // Second, third (nested) and fourth loops.
+  // zlen +=2;
+  // for (int xidx=len-2,zidx=zlen-4; xidx > 0; xidx-=2,zidx-=4) {
+  //    carry = 0;
+  //    long op2 = x[xidx:xidx+1];
+  //    for (int j=xidx-2,k=zidx; j >= 0; j-=2) {
+  //       k -= 2;
+  //       long op1 = x[j:j+1];
+  //       long sum = z[k:k+1];
+  //       carry:sum = multiply_add_64(sum, op1, op2, carry, tmp_regs);
+  //       z[k:k+1] = sum;
+  //    }
+  //    add_one_64(z, k, carry, tmp_regs);
+  // }
+
+  const Register carry = tmp5;
+  const Register sum = tmp3;
+  const Register op1 = tmp4;
+  Register op2 = tmp2;
+
+  push(zlen);
+  push(len);
+  addl(zlen,2);
+  bind(L_second_loop);
+  xorq(carry, carry);
+  subl(zlen, 4);
+  subl(len, 2);
+  push(zlen);
+  push(len);
+  cmpl(len, 0);
+  jccb(Assembler::lessEqual, L_second_loop_exit);
+
+  // Multiply an array by one 64 bit long.
+  if (UseBMI2Instructions) {
+    op2 = rdxReg;
+    movq(op2, Address(x, len, Address::times_4,  0));
+    rorxq(op2, op2, 32);
+  }
+  else {
+    movq(op2, Address(x, len, Address::times_4,  0));
+    rorq(op2, 32);
+  }
+
+  bind(L_third_loop);
+  decrementl(len);
+  jccb(Assembler::negative, L_third_loop_exit);
+  decrementl(len);
+  jccb(Assembler::negative, L_last_x);
+
+  movq(op1, Address(x, len, Address::times_4,  0));
+  rorq(op1, 32);
+
+  bind(L_multiply);
+  subl(zlen, 2);
+  movq(sum, Address(z, zlen, Address::times_4,  0));
+
+  // Multiply 64 bit by 64 bit and add 64 bits lower half and upper 64 bits as carry.
+  if (UseBMI2Instructions) {
+    multiply_add_64_bmi2(sum, op1, op2, carry, tmp2);
+  }
+  else {
+    multiply_add_64(sum, op1, op2, carry, rdxReg, raxReg);
+  }
+
+  movq(Address(z, zlen, Address::times_4, 0), sum);
+
+  jmp(L_third_loop);
+  bind(L_third_loop_exit);
+
+  // Fourth loop
+  // Add 64 bit long carry into z with carry propogation.
+  // Uses offsetted zlen.
+  add_one_64(z, zlen, carry, tmp1);
+
+  pop(len);
+  pop(zlen);
+  jmp(L_second_loop);
+
+  // Next infrequent code is moved outside loops.
+  bind(L_last_x);
+  movl(op1, Address(x, 0));
+  jmp(L_multiply);
+
+  bind(L_second_loop_exit);
+  pop(len);
+  pop(zlen);
+  pop(len);
+  pop(zlen);
+
+  // Fifth loop
+  // Shift z left 1 bit.
+  lshift_by_1(x, len, z, zlen, tmp1, tmp2, tmp3, tmp4);
+
+  // z[zlen-1] |= x[len-1] & 1;
+  movl(tmp3, Address(x, len, Address::times_4, -4));
+  andl(tmp3, 1);
+  orl(Address(z, zlen, Address::times_4,  -4), tmp3);
+
+  pop(tmp5);
+  pop(tmp4);
+  pop(tmp3);
+  pop(tmp2);
+  pop(tmp1);
+}
+
+/**
+ * Helper function for mul_add()
+ * Multiply the in[] by int k and add to out[] starting at offset offs using
+ * 128 bit by 32 bit multiply and return the carry in tmp5.
+ * Only quad int aligned length of in[] is operated on in this function.
+ * k is in rdxReg for BMI2Instructions, for others it is in tmp2.
+ * This function preserves out, in and k registers.
+ * len and offset point to the appropriate index in "in" & "out" correspondingly
+ * tmp5 has the carry.
+ * other registers are temporary and are modified.
+ *
+ */
+void MacroAssembler::mul_add_128_x_32_loop(Register out, Register in,
+  Register offset, Register len, Register tmp1, Register tmp2, Register tmp3,
+  Register tmp4, Register tmp5, Register rdxReg, Register raxReg) {
+
+  Label L_first_loop, L_first_loop_exit;
+
+  movl(tmp1, len);
+  shrl(tmp1, 2);
+
+  bind(L_first_loop);
+  subl(tmp1, 1);
+  jccb(Assembler::negative, L_first_loop_exit);
+
+  subl(len, 4);
+  subl(offset, 4);
+
+  Register op2 = tmp2;
+  const Register sum = tmp3;
+  const Register op1 = tmp4;
+  const Register carry = tmp5;
+
+  if (UseBMI2Instructions) {
+    op2 = rdxReg;
+  }
+
+  movq(op1, Address(in, len, Address::times_4,  8));
+  rorq(op1, 32);
+  movq(sum, Address(out, offset, Address::times_4,  8));
+  rorq(sum, 32);
+  if (UseBMI2Instructions) {
+    multiply_add_64_bmi2(sum, op1, op2, carry, raxReg);
+  }
+  else {
+    multiply_add_64(sum, op1, op2, carry, rdxReg, raxReg);
+  }
+  // Store back in big endian from little endian


More information about the distro-pkg-dev mailing list