Compare commits

..

143 Commits

Author SHA1 Message Date
J. Duke
0d0f164600 Merge 2017-07-05 23:42:20 +02:00
J. Duke
77652db97d Merge 2017-07-05 23:42:07 +02:00
J. Duke
4221eb48d8 Merge 2017-07-05 23:41:51 +02:00
J. Duke
82ff76303c Merge 2017-07-05 23:41:36 +02:00
J. Duke
476f2a457e Merge 2017-07-05 23:41:19 +02:00
J. Duke
bca4bd4e67 Merge 2017-07-05 23:41:01 +02:00
J. Duke
2897373636 Merge 2017-07-05 23:40:49 +02:00
J. Duke
13c7839ccf Added tag jdk-9+173 for changeset 6dd7fda42bab 2017-07-05 23:38:37 +02:00
J. Duke
022478636a Merge 2017-07-05 23:38:35 +02:00
J. Duke
a8ba9773bc Merge 2017-07-05 23:38:19 +02:00
J. Duke
44e9361690 Merge 2017-07-05 23:38:02 +02:00
J. Duke
5c98a075b0 Merge 2017-07-05 23:37:46 +02:00
J. Duke
f600531122 Merge 2017-07-05 23:37:32 +02:00
J. Duke
c61500476a Added tag jdk-9+172 for changeset dad6746278fa 2017-07-05 23:35:20 +02:00
J. Duke
902b559c9a Merge 2017-07-05 23:35:18 +02:00
J. Duke
b4a1c2c9f9 Merge 2017-07-05 23:35:01 +02:00
J. Duke
7f7397afc2 Merge 2017-07-05 23:34:46 +02:00
J. Duke
b0cb30ea09 Merge 2017-07-05 23:34:24 +02:00
J. Duke
8c0ed98c13 Merge 2017-07-05 23:34:11 +02:00
J. Duke
411490a7ef Added tag jdk-9+171 for changeset 643b5f18c265 2017-07-05 23:32:02 +02:00
Paul Sandoz
70eda1ba26 8181824: Broken javadoc link in java.util.BitSet
Reviewed-by: martin
2017-06-09 11:26:42 -07:00
Daniel Fuchs
18b1dfcafa 8181867: [tests] Reorganize EchoHandlers
This fix reorganize some test files and rename some test classes. Several classes named EchoHandler in the unnamed package are renamed to make it clear what classes (and sources) tests that use these EchoHandler implementations effectively depend on.

Reviewed-by: chegar
2017-06-09 16:52:07 +01:00
Lana Steuck
681487c5e0 Merge 2017-06-08 23:11:43 +00:00
Lana Steuck
e65e9895d4 Merge 2017-06-08 23:11:39 +00:00
Lana Steuck
7b7451a78f Merge 2017-06-08 23:11:21 +00:00
Lana Steuck
9ddc858469 Merge 2017-06-08 23:11:15 +00:00
Lana Steuck
993c9a0c83 Merge 2017-06-08 23:11:11 +00:00
Lana Steuck
bd4100bd5c Merge 2017-06-08 23:11:00 +00:00
Lana Steuck
20d68ecb58 Merge 2017-06-08 23:10:51 +00:00
Jonathan Gibbons
a944319c4e 8180296: Move Javadoc: doclet, taglet specs to specs directory
Reviewed-by: ksrini
2017-06-08 15:50:22 -07:00
Lana Steuck
be4b3bd942 Added tag jdk-9+173 for changeset 4b53bf8b530c 2017-06-08 16:32:57 +00:00
Lana Steuck
6cef7d30d1 Added tag jdk-9+173 for changeset 3669cf10f2e3 2017-06-08 16:32:57 +00:00
Lana Steuck
e68df62c6d Added tag jdk-9+173 for changeset c4bf1e214a16 2017-06-08 16:32:55 +00:00
Lana Steuck
b659d74423 Added tag jdk-9+173 for changeset d952dcd38dba 2017-06-08 16:32:55 +00:00
Lana Steuck
3b066f59e5 Added tag jdk-9+173 for changeset fac2783f3c0b 2017-06-08 16:32:55 +00:00
Lana Steuck
7781ed0fd6 Added tag jdk-9+173 for changeset 17af9f5736f7 2017-06-08 16:32:53 +00:00
Lana Steuck
75b3070ce1 Added tag jdk-9+173 for changeset c57e79c03808 2017-06-08 16:32:53 +00:00
Erik Joelsson
938744edab 8178064: OpenJDK RI binary should include the license file for freetype
Reviewed-by: tbell, ihse
2017-06-08 14:53:56 +02:00
Erik Joelsson
e9fe6f3c6b 8178064: OpenJDK RI binary should include the license file for freetype
Reviewed-by: tbell, ihse
2017-06-08 14:53:48 +02:00
Magnus Ihse Bursie
0a843fc371 8180300: Move JDWP specs to specs directory
Reviewed-by: sspitsyn
2017-06-08 13:49:11 +02:00
Daniel Fuchs
3d902cf92a 8180044: java/net/httpclient/ManyRequests.java failed due to timeout
Fixes several race conditions observed while testing.

Reviewed-by: michaelm, msheppar, prappo
2017-06-08 12:41:07 +01:00
Daniel Fuchs
7a520e19a1 8181430: HTTP/2 client might deadlock when receiving data during the initial handshake
CountDownLatch removed. Data produced during the handshake is instead buffered until the preface is sent.

Reviewed-by: michaelm, msheppar, prappo
2017-06-08 12:24:13 +01:00
Magnus Ihse Bursie
a171cafd32 8181776: Move back specs to closed
Reviewed-by: erikj
2017-06-08 11:24:46 +02:00
Mandy Chung
57cdb9b642 8181639: Add tool and services information to module summary
Reviewed-by: alanb, psandoz, lancea
2017-06-07 21:15:31 -07:00
Mandy Chung
08c80bdefc 8181639: Add tool and services information to module summary
Reviewed-by: alanb, psandoz, lancea
2017-06-07 21:15:06 -07:00
Mandy Chung
76800fef73 8181639: Add tool and services information to module summary
Reviewed-by: alanb, psandoz, lancea
2017-06-07 21:14:58 -07:00
Mandy Chung
5e82a2de08 8181639: Add tool and services information to module summary
Reviewed-by: alanb, psandoz, lancea
2017-06-07 21:08:37 -07:00
Mandy Chung
848c1f69fb 8181639: Add tool and services information to module summary
Reviewed-by: alanb, psandoz, lancea
2017-06-07 18:57:35 -07:00
Mandy Chung
0369442aa0 8181639: Add tool and services information to module summary
Reviewed-by: alanb, psandoz, lancea
2017-06-07 18:57:24 -07:00
Mandy Chung
fd73998610 8181696: Package versioning link does not exist in JAR file specification
Reviewed-by: alanb
2017-06-07 18:54:45 -07:00
Lance Andersen
0e7374e99c 8181702: Mark jdk.xml.bind and jdk.xml.ws modules deprecated and for removal
Reviewed-by: alanb, mchung
2017-06-07 18:47:54 -04:00
Lance Andersen
644aec5212 8181195: Mark java.se.ee aggregator module deprecated and for removal
Reviewed-by: joehw, alanb, mchung
2017-06-07 15:05:35 -04:00
Phil Race
e7a9736953 Merge 2017-06-07 06:45:09 -07:00
Weijun Wang
fc92cc69ef 8181461: sun/security/krb5/auto/KdcPolicy.java fails with java.lang.Exception: Does not match
Reviewed-by: xuelei
2017-06-07 10:03:41 +08:00
Manajit Halder
77532f2533 8172510: This test fails for me on OS X consistently with result: Expected : 01230123 Actual : 001122303011223
Reviewed-by: serb, prr
2017-06-06 14:38:19 +05:30
Prasanta Sadhukhan
7034b57473 8181640: Spelling mistake in javadoc javax.swing.JEditorPane.scrollToReference(String)
Reviewed-by: serb
2017-06-06 11:56:01 +05:30
Prasanta Sadhukhan
8f06089168 8181401: Error in Javadoc for JTabbedPane getAccessibleName()
Reviewed-by: serb, ssadetsky
2017-06-06 11:11:12 +05:30
Ron Pressler
ac0bf2d401 8181292: Backport Rename internal Unsafe.compare methods from 10 to 9
Reviewed-by: psandoz, dholmes, mchung
2017-06-05 16:05:24 -07:00
Ron Pressler
061b09e847 8181292: Backport Rename internal Unsafe.compare methods from 10 to 9
Co-authored-by: Claes Redestad <claes.redestad@oracle.com>
Reviewed-by: psandoz, dholmes, thartmann, kvn
2017-06-05 15:52:09 -07:00
Erik Österlund
c4d86b2455 8161145: The min/max macros make hotspot tests fail to build with GCC 6
Change min/max macros to expand (once) to self.

Reviewed-by: sgehwolf, pliden, andrew
2017-06-06 13:31:34 -04:00
Phil Race
d5fb09f608 Merge 2017-06-05 11:00:25 -07:00
Kumar Srinivasan
8031c134aa 8181441: Fix minor typo/link in the old standard doclet API documentation
Reviewed-by: jjg
2017-06-02 13:38:43 -07:00
Pavel Rappo
cc296e46f5 8180155: WebSocket secure connection get stuck after onOpen
8156518: WebSocket.Builder.connectTimeout(long timeout, TimeUnit unit) implicitly affect websocket connection timeout

Reviewed-by: dfuchs
2017-06-02 18:32:39 +01:00
Anton Litvinov
87be0f2e80 8181192: [macos] javafx.print.PrinterJob.showPrintDialog() hangs on macOS
Reviewed-by: prr, serb
2017-06-02 18:40:55 +03:00
Bob Vandette
578fd1677d Merge 2017-06-02 10:37:05 -04:00
Bob Vandette
d0649472fa 8181093: assert(si->is_ldr_literal()) failed on arm64 test nsk/jdi/.../returnValue004
Reviewed-by: kvn, dlong
2017-06-02 10:35:44 -04:00
Magnus Ihse Bursie
1697e378d3 8180322: Move JNI spec to specs directory
Reviewed-by: mchung, dholmes
2017-06-02 14:29:02 +02:00
Roland Westrelin
a9c2bc6517 8179678: ArrayCopy with same src and dst can cause incorrect execution or compiler crash
Replacing load on dst with load on src only valid if copy doesn't modify src element to load

Reviewed-by: kvn, thartmann
2017-06-02 09:08:34 +02:00
Naoto Sato
b2870f2b5f 8180375: Rename <baseName>Provider to <packagename>.spi.<simpleName>Provider
Reviewed-by: mchung
2017-06-01 14:52:53 -07:00
Lana Steuck
32ec4f19bd Merge 2017-06-01 18:49:35 +00:00
Lana Steuck
59744df73d Merge 2017-06-01 18:48:56 +00:00
Lana Steuck
63fafe8f4e Merge 2017-06-01 18:48:34 +00:00
Lana Steuck
767708c888 Merge 2017-06-01 18:48:29 +00:00
Lana Steuck
ecad36f796 Merge 2017-06-01 18:48:00 +00:00
Lana Steuck
619406edfe Added tag jdk-9+172 for changeset e8aff9b4abd4 2017-06-01 18:26:36 +00:00
Lana Steuck
87077a671c Added tag jdk-9+172 for changeset 6b415c11de28 2017-06-01 18:26:36 +00:00
Lana Steuck
0175ff7a69 Added tag jdk-9+172 for changeset 5960c6c803da 2017-06-01 18:26:35 +00:00
Lana Steuck
6d381ad5bb Added tag jdk-9+172 for changeset 71093c519b3e 2017-06-01 18:26:34 +00:00
Lana Steuck
84abc71347 Added tag jdk-9+172 for changeset ce74046c204f 2017-06-01 18:26:34 +00:00
Lana Steuck
f3bfb121b2 Added tag jdk-9+172 for changeset ec60e7df88cd 2017-06-01 18:26:33 +00:00
Lana Steuck
c4a1567a74 Added tag jdk-9+172 for changeset 9fdb3c433907 2017-06-01 18:26:33 +00:00
Lana Steuck
6498ea1408 Added tag jdk-9+172 for changeset 52500c1d7f1f 2017-06-01 18:26:32 +00:00
Mark Sheppard
b45b8855a2 8176784: Amend HREF to technote/guides in CORBA API docs to unilinks for guides
Reviewed-by: chegar, rriggs
2017-06-01 17:49:34 +01:00
Roger Riggs
eb2e12eefd 8181156: html5 issues in java.base javadoc
Reviewed-by: ihse, erikj
2017-06-01 10:21:43 -04:00
Roger Riggs
4fff93d5b6 8181156: html5 issues in java.base javadoc
Reviewed-by: alanb
2017-06-01 09:28:59 -04:00
Roger Riggs
3171214a12 8180582: The bind to rmiregistry is rejected by registryFilter even though registryFilter is set
The Registry MAXDEPTH should allow binding more complex objects

Reviewed-by: dfuchs, smarks
2017-05-31 23:45:36 -04:00
Valerie Peng
fc10ff7fe0 8180635: (doc) Clarify the compatibility and interoperability issue when using provider default values
Updated the javadoc of KeyPairGenerator, KeyGenerator, AlgorithmParameterGenerator and their Spi classes

Reviewed-by: mullan
2017-06-01 03:26:30 +00:00
Hamlin Li
696328559d 8181082: class-level since tag issues in java.base & java.datatransfer module
Reviewed-by: alanb, serb
2017-05-31 19:54:16 -07:00
Jonathan Gibbons
e0cd6e69c0 8181290: Invalid HTML 5 in core-libs docs
Reviewed-by: mchung, lancea
2017-05-30 15:49:45 -07:00
Jonathan Gibbons
d2b3d30d6a 8181290: Invalid HTML 5 in core-libs docs
Reviewed-by: mchung, lancea
2017-05-30 15:48:54 -07:00
Mandy Chung
5a44e0f4d1 8181148: Update the jdeps tool to list exported packages instead of just internal APIs
Reviewed-by: psandoz
2017-05-30 14:12:16 -07:00
Mandy Chung
b57ce33394 8181148: Update the jdeps tool to list exported packages instead of just internal APIs
Reviewed-by: psandoz
2017-05-30 14:11:53 -07:00
Vladimir Ivanov
5d2b14d198 8179882: C2: Stale control info after cast node elimination during loop optimization pass
Reviewed-by: kvn, roland
2017-05-30 21:35:21 +03:00
Zoltan Majo
73b3420b12 8180855: Null pointer dereference in OopMapSet::all_do of oopMap.cpp:394
Check for possible null-point dereference.

Reviewed-by: kvn
2017-05-29 10:32:37 +02:00
Magnus Ihse Bursie
5fff5a2fd2 8175824: Adapt javadoc generation to different requirements for JDK and JavaSE
Reviewed-by: erikj, mchung
2017-05-29 09:18:16 +02:00
Magnus Ihse Bursie
5bf8bd9a1b 8175824: Adapt javadoc generation to different requirements for JDK and JavaSE
Reviewed-by: erikj, mchung
2017-05-29 09:18:10 +02:00
Mandy Chung
e0fa8ae189 8180574: tools/launcher/modules/patch/systemmodules/PatchSystemModules.java failed in upgradeHashedModule() and patchHashedModule() intermittently
Reviewed-by: alanb, bchristi
2017-05-26 21:20:16 -07:00
Phil Race
8190890ef7 Merge 2017-05-26 09:07:25 -07:00
Phil Race
dff24c5402 Merge 2017-05-26 08:22:05 -07:00
Lana Steuck
1b9bc71495 Merge 2017-05-26 00:45:29 +00:00
Lana Steuck
cd62e1b6a1 Merge 2017-05-26 00:45:12 +00:00
Lana Steuck
19aadc8e3b Merge 2017-05-26 00:45:03 +00:00
Lana Steuck
31af6b45ea Merge 2017-05-26 00:44:54 +00:00
Lana Steuck
5a9513dfca Added tag jdk-9+171 for changeset e04bdb41c10a 2017-05-26 00:29:15 +00:00
Lana Steuck
38f7b05e1b Added tag jdk-9+171 for changeset 68023c0c9861 2017-05-26 00:29:15 +00:00
Lana Steuck
36db7be3a5 Added tag jdk-9+171 for changeset a54893aaee2a 2017-05-26 00:29:13 +00:00
Lana Steuck
aa6e6a104a Added tag jdk-9+171 for changeset e09145bcfcc5 2017-05-26 00:29:13 +00:00
Lana Steuck
7f348b3547 Added tag jdk-9+171 for changeset 14e43572d5f5 2017-05-26 00:29:13 +00:00
Lana Steuck
34ea5bd979 Added tag jdk-9+171 for changeset e4eadf80c436 2017-05-26 00:29:12 +00:00
Lana Steuck
df177f4150 Added tag jdk-9+171 for changeset 9e1b29faefa9 2017-05-26 00:29:12 +00:00
Lana Steuck
db214b049e Added tag jdk-9+171 for changeset 562ad59ed4e7 2017-05-26 00:29:11 +00:00
Mandy Chung
4f8f7b2501 8181033: Confusing message: A JNI error has occurred, please check your installation and try again
Reviewed-by: alanb, dholmes, ksrini
2017-05-25 10:40:08 -07:00
Daniel Fuchs
aea187fdd2 8180279: java/net/httpclient/whitebox/Driver.java failed due to timeout
Fixed a race condition in RawChannelTest.java

Reviewed-by: prappo, michaelm
2017-05-25 11:54:42 +01:00
Hamlin Li
51272f395a 8180807: java.io.Serializable class-level readObject description error
Reviewed-by: chegar, rriggs
2017-05-24 19:02:45 -07:00
Joe Wang
77d6023200 8180349: Review JAXP Java SE 9 API javadocs
Reviewed-by: rriggs, lancea
2017-05-24 14:10:04 -07:00
Rob McKenna
e830b7d68e 8180949: Correctly handle exception in TCPChannel.createConnection
Reviewed-by: rriggs
2017-05-24 22:07:07 +01:00
Sergey Bylokhov
bd80c04cc2 8066005: java.awt.event.KeyEvent.originalSource doesn't have "since" tag in Serialized Form
Reviewed-by: prr
2017-05-24 13:53:53 -07:00
Tobias Hartmann
83a3e9f114 8180813: Null pointer dereference of CodeCache::find_blob() result
Fixed missing null checks on the result of CodeCache::find_blob() found by Parfait.

Reviewed-by: shade, kvn
2017-05-24 16:53:58 +02:00
Li Jiang
6354698728 8180167: JDK9 message drop 40 l10n resource file updates
Reviewed-by: alanb, mchung, dfuchs, rfield, shinyafox, weijun, joehw
2017-05-23 23:27:20 -07:00
Li Jiang
8c982f3544 8180167: JDK9 message drop 40 l10n resource file updates
Reviewed-by: alanb, mchung, dfuchs, rfield, shinyafox, weijun, joehw
2017-05-23 23:26:21 -07:00
Li Jiang
74ef00df37 8180167: JDK9 message drop 40 l10n resource file updates
Reviewed-by: alanb, mchung, dfuchs, rfield, shinyafox, weijun, joehw
2017-05-23 23:25:26 -07:00
Brian Burkhalter
06d33aa65a 8180885: Create test to detect if TimeZone.setDefault affects File.setLastModifiedTime
Check whether File.lastModified is affected by not setting the default time zone or by setting to any of the available time zones.

Reviewed-by: dfuchs, rriggs
2017-05-24 10:52:24 -07:00
Rob McKenna
2f402211d9 8175131: sun.rmi.transport.tcp.TCPChannel.createConnection close connection on timeout
Reviewed-by: rriggs, msheppar
2017-05-24 17:25:45 +01:00
Joe Darcy
538f99f6ca 8074977: Constructor.getAnnotatedParameterTypes returns wrong value
Additional comments from plevart and forax

Reviewed-by: mchung, alanb
2017-05-23 14:34:45 -07:00
Lance Andersen
7f5c2a5718 8180728: DatabaseMeta.getRowIdLifetime returns an enum but javadoc refers to int
Reviewed-by: joehw, rriggs
2017-05-23 16:14:02 -04:00
Brian Burkhalter
0f5b1f5cf8 8180353: FileOutputStream documentation does not indicate properly whether files get truncated or not
Update documentation of FileOutputStream(String)

Reviewed-by: chegar, dfuchs
2017-05-23 11:47:52 -07:00
Daniel Fuchs
b518bb5bcd 8180428: Clarify implementation note in Clock.java to match implementation changes made by JDK-8068730
Reviewed-by: dholmes, scolebourne
2017-05-23 11:33:01 +01:00
Sergey Bylokhov
edb00726d3 8177628: Opensource unit/regression tests for ImageIO
Reviewed-by: prr, pnarayanan
2017-05-22 19:54:23 -07:00
Phil Race
a89cb1d937 Merge 2017-05-22 08:54:59 -07:00
Phil Race
de926ebe30 8177393: Result of RescaleOp for 4BYTE_ABGR images may be 25% black
Reviewed-by: flar, psadhukhan
2017-05-19 14:57:51 -07:00
Semyon Sadetsky
ed2434de14 8179665: [Windows] java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
Reviewed-by: prr, serb
2017-05-19 07:06:28 -07:00
Lana Steuck
6dd266ef16 Added tag jdk-9+170 for changeset 685d1772b3cf 2017-05-18 14:54:56 +00:00
Lana Steuck
2e6d1426b2 Added tag jdk-9+170 for changeset f5f796453339 2017-05-18 14:54:56 +00:00
Lana Steuck
319619e55f Added tag jdk-9+170 for changeset 5198a9f0c661 2017-05-18 14:54:54 +00:00
Lana Steuck
9b6308c921 Added tag jdk-9+170 for changeset aa1fcec9731f 2017-05-18 14:54:53 +00:00
Phil Race
7eb1822889 Merge 2017-05-17 11:01:09 -07:00
Mikhail Cherkasov
1df6a97a4d 8175915: NullPointerException from JComboBox and JList when Accessibility enabled
Reviewed-by: serb, prr
2017-05-15 15:32:14 +03:00
Alexander Zvegintsev
8ec46c5612 8178996: [macos] JComboBox doesn't display popup in mixed JavaFX Swing Application on 8u131 and Mac OS 10.12
Reviewed-by: serb, ssadetsky
2017-05-12 15:01:22 +03:00
Prasanta Sadhukhan
1351bca5b4 8169897: [PIT] javax/swing/plaf/basic/BasicGraphicsUtils/8132119/bug8132119.java fails
Reviewed-by: alexsch
2017-05-12 12:28:49 +05:30
Lana Steuck
9f3a70f1fc Added tag jdk-9+169 for changeset a6583de69bb5 2017-05-11 16:26:50 +00:00
Ajit Ghaisas
e80ef7a2e0 8179014: JFileChooser with Windows look and feel crashes on win 10
Reviewed-by: prr, serb
2017-05-11 12:41:35 +05:30
Phil Race
025daa2460 Merge 2017-05-09 12:19:08 -07:00
Sergey Bylokhov
e41b775ecd 8178383: Validation of FileIO in the tests for JavaSound should be stricter
Reviewed-by: prr
2017-05-06 13:17:36 -07:00
735 changed files with 22651 additions and 13617 deletions

View File

@@ -414,3 +414,6 @@ d3e973f1809606c67412361041ad197e50fe8cec jdk-9+166
fcabc74bd44e56c7419d111d59b95669ecb33c55 jdk-9+168
c7efde2b60fc1ec04630be769d9ad60efb39c39c jdk-9+169
898cbe31fbdae2d25d141384fac746cc244a730c jdk-9+170
643b5f18c2656fe91b69fea85b07b98d5fad394d jdk-9+171
dad6746278facbbea57dd462cb56fb743dc0a5f0 jdk-9+172
6dd7fda42bab7ecf648cafb0a4e9b4ca11b3094f jdk-9+173

View File

@@ -413,3 +413,6 @@ ba5b16c9c6d80632b61959a33d424b1c3398ce62 jdk-9+166
143d4c87bc1ef1ed6dadd613cd9dd4488fdefc29 jdk-9+168
b25838a28195f4b6dab34668411eedd2d366a16c jdk-9+169
4d163ec59d989a9261ed7f848bc6303f90869af5 jdk-9+170
4c12464a907db4656c1033f56fa49cba643ac629 jdk-9+171
2c25fc24103251f9711a1c280c31e1e41016d90f jdk-9+172
88d7fd969e7df0e07a53b201cfd29393ca33ede9 jdk-9+173

View File

@@ -688,6 +688,7 @@ LIBFFI_LIBS
LIBFFI_CFLAGS
ALSA_LIBS
ALSA_CFLAGS
FREETYPE_LICENSE
FREETYPE_BUNDLE_LIB_PATH
FREETYPE_LIBS
FREETYPE_CFLAGS
@@ -1199,6 +1200,7 @@ with_freetype_include
with_freetype_lib
with_freetype_src
enable_freetype_bundling
with_freetype_license
with_alsa
with_alsa_include
with_alsa_lib
@@ -2151,6 +2153,7 @@ Optional Packages:
--with-freetype-src specify directory with freetype sources to
automatically build the library (experimental,
Windows-only)
--with-freetype-license if bundling freetype, also bundle this license file
--with-alsa specify prefix directory for the alsa package
(expecting the libraries under PATH/lib and the
headers under PATH/include)
@@ -5183,7 +5186,7 @@ VS_SDK_PLATFORM_NAME_2013=
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
DATE_WHEN_GENERATED=1494858828
DATE_WHEN_GENERATED=1496926402
###############################################################################
#
@@ -57706,6 +57709,12 @@ if test "${enable_freetype_bundling+set}" = set; then :
fi
# Check whether --with-freetype-license was given.
if test "${with_freetype_license+set}" = set; then :
withval=$with_freetype_license;
fi
# Need to specify explicitly since it needs to be overridden on some versions of macosx
FREETYPE_BASE_NAME=freetype
FREETYPE_CFLAGS=
@@ -63652,6 +63661,153 @@ $as_echo "$BUNDLE_FREETYPE" >&6; }
fi # end freetype needed
FREETYPE_LICENSE=""
if test "x$with_freetype_license" = "xyes"; then
as_fn_error $? "--with-freetype-license must have a value" "$LINENO" 5
elif test "x$with_freetype_license" != "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype license" >&5
$as_echo_n "checking for freetype license... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_freetype_license" >&5
$as_echo "$with_freetype_license" >&6; }
FREETYPE_LICENSE="$with_freetype_license"
# Only process if variable expands to non-empty
if test "x$FREETYPE_LICENSE" != x; then
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
# Input might be given as Windows format, start by converting to
# unix format.
path="$FREETYPE_LICENSE"
new_path=`$CYGPATH -u "$path"`
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
# "foo.exe" is OK but "foo" is an error.
#
# This test is therefore slightly more accurate than "test -f" to check for file precense.
# It is also a way to make sure we got the proper file name for the real test later on.
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
if test "x$test_shortpath" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Cannot locate the the path of FREETYPE_LICENSE" "$LINENO" 5
fi
# Call helper function which possibly converts this using DOS-style short mode.
# If so, the updated path is stored in $new_path.
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
fi
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
if test "x$test_cygdrive_prefix" = x; then
# As a simple fix, exclude /usr/bin since it's not a real path.
if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
# a path prefixed by /cygdrive for fixpath to work.
new_path="$CYGWIN_ROOT_PATH$input_path"
fi
fi
if test "x$path" != "x$new_path"; then
FREETYPE_LICENSE="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&6;}
fi
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
path="$FREETYPE_LICENSE"
has_colon=`$ECHO $path | $GREP ^.:`
new_path="$path"
if test "x$has_colon" = x; then
# Not in mixed or Windows style, start by that.
new_path=`cmd //c echo $path`
fi
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
fi
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
if test "x$path" != "x$new_path"; then
FREETYPE_LICENSE="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&6;}
fi
# Save the first 10 bytes of this path to the storage, so fixpath can work.
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
else
# We're on a unix platform. Hooray! :)
path="$FREETYPE_LICENSE"
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
# Use eval to expand a potential ~
eval path="$path"
if test ! -f "$path" && test ! -d "$path"; then
as_fn_error $? "The path of FREETYPE_LICENSE, which resolves as \"$path\", is not found." "$LINENO" 5
fi
if test -d "$path"; then
FREETYPE_LICENSE="`cd "$path"; $THEPWDCMD -L`"
else
dir="`$DIRNAME "$path"`"
base="`$BASENAME "$path"`"
FREETYPE_LICENSE="`cd "$dir"; $THEPWDCMD -L`/$base"
fi
fi
fi
if test ! -f "$FREETYPE_LICENSE"; then
as_fn_error $? "$FREETYPE_LICENSE cannot be found" "$LINENO" 5
fi
fi

View File

@@ -194,6 +194,8 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
[specify directory with freetype sources to automatically build the library (experimental, Windows-only)])])
AC_ARG_ENABLE(freetype-bundling, [AS_HELP_STRING([--disable-freetype-bundling],
[disable bundling of the freetype library with the build result @<:@enabled on Windows or when using --with-freetype, disabled otherwise@:>@])])
AC_ARG_WITH(freetype-license, [AS_HELP_STRING([--with-freetype-license],
[if bundling freetype, also bundle this license file])])
# Need to specify explicitly since it needs to be overridden on some versions of macosx
FREETYPE_BASE_NAME=freetype
@@ -443,7 +445,21 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
fi # end freetype needed
FREETYPE_LICENSE=""
if test "x$with_freetype_license" = "xyes"; then
AC_MSG_ERROR([--with-freetype-license must have a value])
elif test "x$with_freetype_license" != "x"; then
AC_MSG_CHECKING([for freetype license])
AC_MSG_RESULT([$with_freetype_license])
FREETYPE_LICENSE="$with_freetype_license"
BASIC_FIXUP_PATH(FREETYPE_LICENSE)
if test ! -f "$FREETYPE_LICENSE"; then
AC_MSG_ERROR([$FREETYPE_LICENSE cannot be found])
fi
fi
AC_SUBST(FREETYPE_BUNDLE_LIB_PATH)
AC_SUBST(FREETYPE_CFLAGS)
AC_SUBST(FREETYPE_LIBS)
AC_SUBST(FREETYPE_LICENSE)
])

View File

@@ -312,6 +312,7 @@ DEFAULT_MAKE_TARGET:=@DEFAULT_MAKE_TARGET@
FREETYPE_LIBS:=@FREETYPE_LIBS@
FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
FREETYPE_LICENSE=@FREETYPE_LICENSE@
CUPS_CFLAGS:=@CUPS_CFLAGS@
ALSA_LIBS:=@ALSA_LIBS@
ALSA_CFLAGS:=@ALSA_CFLAGS@

View File

@@ -893,6 +893,16 @@ var getJibProfilesProfiles = function (input, common, data) {
}
});
// The windows ri profile needs to add the freetype license file
profilesRiFreetype = {
"windows-x86-ri": {
configure_args: "--with-freetype-license="
+ input.get("freetype", "install_path")
+ "/freetype-2.7.1-v120-x86/freetype.md"
}
};
profiles = concatObjects(profiles, profilesRiFreetype);
// Generate the missing platform attributes
profiles = generatePlatformAttributes(profiles);
profiles = generateDefaultMakeTargetsConfigureArg(common, profiles);

View File

@@ -412,3 +412,6 @@ a510b2201154abdd12ede42788086b5283bfb9a6 jdk-9+165
43de67f51801b9e16507865fcb7e8344f4ca4aa9 jdk-9+167
03a2cc9c8a1e8f87924c9863e917bc8b91770d5f jdk-9+168
b2218d41edef02ee8f94bb438f885b2ba79bfa08 jdk-9+169
8a4ab3b0ab9a86df73d9a1e337134f2dbe006725 jdk-9+170
c62e5964cfcf144d8f72e9ba69757897785349a9 jdk-9+171
95ed14547ca9246baed34f90ef3ca13217538a8c jdk-9+172

View File

@@ -62,6 +62,8 @@ import com.sun.corba.se.impl.orbutil.GetPropertyAction;
* attempts to narrow it to conform to
* the given interface. If the operation is successful the result will be an
* object of the specified type, otherwise an exception will be thrown.
*
* <p>See also {@extLink rmi_iiop_guides RMI-IIOP developer's guides}.</p>
*/
public class PortableRemoteObject {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* the Activity, or that the Activity completed in a manner other than that
* originally requested.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since J2SE 1.5
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,8 +31,8 @@ package org.omg.CORBA;
* Activity context was necessary to perform the invoked operation, but one
* was not found associated with the calling thread.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since J2SE 1.5
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,8 +32,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,8 +32,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -37,10 +37,9 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning of
* minor codes</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions},
* {@extLink jidlexception_minorcodes meaning of minor codes}
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,8 +30,8 @@ package org.omg.CORBA;
* support the quality of service required by an invocation parameter that
* has a quality of service semantics associated with it.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since J2SE 1.5
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,8 +32,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,8 +30,8 @@ package org.omg.CORBA;
* the legal bounds for the object that a method is trying
* to access.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class Bounds extends org.omg.CORBA.UserException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,8 +29,8 @@ package org.omg.CORBA;
* This exception is raised whenever meaningful communication is not possible
* between client and server native code sets.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since J2SE 1.5
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,11 +33,11 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning
* of minor codes</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
* to see the minor codes for this exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning of
* minor codes</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,11 +35,11 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning
* of minor codes</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
* to see the minor codes for this exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,8 +36,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,11 +33,11 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning
* of minor codes</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes meaning of minor codes}
* to see the minor codes for this exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,8 +32,8 @@ package org.omg.CORBA;
* suspended. It is also raised when an attempted invocation is made that
* is incompatible with the Activity's current state.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since J2SE 1.5
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -37,11 +37,11 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
* Code Meanings</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
* to see the minor codes for this exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class INV_POLICY extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,8 +39,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
* Code Meanings</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
* to see the minor codes for this exception.
*
* @since JDK1.2
*/

View File

@@ -36,8 +36,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
* Code Meanings</A> to see the minor codes for this exception.
* See the section {extLink jidlexception_minorcodes Minor Code Meanings}
* to see the minor codes for this exception.
*
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,8 +32,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,8 +32,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,11 +39,11 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
* Code Meanings</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
* to see the minor codes for this exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,11 +34,11 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
* Code Meanings</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
* to see the minor codes for this exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since JDK1.2
*/

View File

@@ -184,6 +184,8 @@ import java.security.PrivilegedAction;
* Therefore, the implementation first checks the ${java.home}/conf directory for orb.properties,
* and thereafter the ${java.home}/lib directory.
*
* <p>See also {@extLink idl_guides IDL developer's guide}.</p>
*
* @since JDK1.2
*/
abstract public class ORB {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class PERSIST_STORE extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* This exception is also raised if the current effective RebindPolicy has
* a value of NO_RECONNECT and a connection must be reopened.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since J2SE 1.5
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,8 +44,8 @@ import com.sun.corba.se.impl.util.SUNVMCID;
* declared in signatures of the Java methods mapped from operations in
* IDL interfaces.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public abstract class SystemException extends java.lang.RuntimeException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,8 +30,8 @@ package org.omg.CORBA;
* specified time-to-live period has been exceeded. It is a standard system
* exception because time-to-live QoS can be applied to any invocation.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @since J2SE 1.5
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,8 +35,8 @@ package org.omg.CORBA;
* a string describing the exception.
* The OMG CORBA core 2.4 specification has details.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class TRANSACTION_MODE extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@ package org.omg.CORBA;
* a string describing the exception.
* The OMG Transaction Service specfication has details.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class TRANSACTION_REQUIRED extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,8 +36,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class TRANSACTION_ROLLEDBACK extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,8 +35,8 @@ package org.omg.CORBA;
* a string describing the exception.
* The OMG CORBA core 2.4 specification has details.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class TRANSACTION_UNAVAILABLE extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,8 +36,8 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class TRANSIENT extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,11 +39,11 @@ package org.omg.CORBA;
* what caused the exception, and a completion status. It may also contain
* a string describing the exception.
* <P>
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
* Code Meanings</A> to see the minor codes for this exception.
* See the section {@extLink jidlexception_minorcodes Minor Code Meaning}
* to see the minor codes for this exception.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class UNKNOWN extends SystemException {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,8 +32,8 @@ package org.omg.CORBA;
* <code>UnknownUserException</code> object. This is available from the
* <code>Environment</code> object returned by the method <code>Request.env</code>.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
* @see Request
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,8 +31,8 @@ package org.omg.CORBA;
* means that they need to
* be declared in method signatures.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public abstract class UserException extends java.lang.Exception implements org.omg.CORBA.portable.IDLEntity {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@ package org.omg.CORBA;
* which the client originally sent the request.
* See the OMG Transaction Service Specification for details.
*
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
* Java&nbsp;IDL exceptions</A>
* <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
* </p>
*/
public final class WrongTransaction extends UserException {

View File

@@ -42,7 +42,7 @@ is the name of an IDL interface.
</UL>
<H2><a name="helper">Helper Files</a></H2>
<H2><a id="helper">Helper Files</a></H2>
<P>Helper files supply several static methods needed to manipulate the type.
These include <code>Any</code> insert and extract operations for the type,
@@ -57,7 +57,7 @@ the object reference does not support the requested type. A different system exc
is raised to indicate other kinds of errors. Trying to narrow
a null will always succeed with a return value of null.
<H2><a name="holder">Holder Files</a></H2>
<H2><a id="holder">Holder Files</a></H2>
<P>Support for out and inout parameter passing modes requires the use of additional holder classes.
These classes are available for all of the basic IDL datatypes in the <code>org.omg.CORBA</code> package
@@ -74,7 +74,7 @@ false for boolean, 0 for numeric and char types, null for strings, null for obje
the <code>org.omg.CORBA.portable.Streamable</code> interface.
<H2><a name="operations">Operations Files</a></H2>
<H2><a id="operations">Operations Files</a></H2>
<P>A non abstract IDL interface is mapped to two public Java interfaces:
a <em>signature</em> interface and an <em>operations</em> interface.
@@ -96,7 +96,7 @@ expressed in IDL is reflected in both the Java signature
interface and operations interface hierarchies.
<H2><a name="stub">Stubs</a></H2>
<H2><a id="stub">Stubs</a></H2>
<P>For the mapping of a non-object-oriented language, there will be
a programming interface to the stubs for each interface type. Generally, the stubs

View File

@@ -147,9 +147,7 @@ resolve initial object references. These are:
<code><b>register_initial_reference</b>(String id, org.omg.CORBA.Object obj)</code>
</UL>
<P>An example that uses some of these methods is <A
HREF="{@docRoot}/../technotes/guides/idl/GShome.html">
<em>Getting Started with Java IDL</em></A>.
<P>An example that uses some of these methods is {@extLink idl_getting_started Getting Started with Java IDL}.
<H2>
Exceptions</H2>
@@ -158,9 +156,8 @@ Java programming language. If a method is defined to throw an exception,
then any code using that method must have a <code>try</code>/<code>catch</code>
block and handle that exception when it is thrown.
<P>The documentation on <A
HREF="{@docRoot}/../technotes/guides/idl/jidlExceptions.html"><em>Java
IDL exceptions</em></A> has more information and explains the difference between
<P>The documentation on {@extLink jidlexception Java&nbsp;IDL exceptions }
has more information and explains the difference between
system exceptions and user-defined exceptions.
<P>The following is a list of the system exceptions (which are unchecked
@@ -447,8 +444,8 @@ object, whereas the <code>narrow</code> method for an interface that is abstract
will take an object in the Java programming language. The helper class for a
non-abstract interface that has at least one abstract base interface will provide
both versions of the <code>narrow</code> method.
<P>The <A HREF="{@docRoot}/../technotes/guides/idl/jidlExample.html"><em>Hello World</em></A>
tutorial uses a <code>narrow</code> method that looks like this:
<P>The {@extLink idl_guides Hello World tutorial}
uses a <code>narrow</code> method that looks like this:
<PRE>
// create and initialize the ORB
ORB orb = ORB.init(args, null);
@@ -548,6 +545,7 @@ abstract public class AccountHelper
}
</PRE>
<a id="value"></a>
<h3>Value Type Helper Classes</h3>
A helper class for a value type includes different renderings of
the same methods generated for non-value type methods. The main difference
@@ -861,8 +859,8 @@ ValueMember
Related Documentation</H1>
For overviews, guides, and a tutorial, please see:
<UL>
<LI>
<A HREF="{@docRoot}/../technotes/guides/idl/index.html">Java IDL home page</A>
<LI> {@extLink idl_guides Java&nbsp;IDL tutorial page}.</LI>
<LI> {@extLink rmi_iiop_guides RMI-IIOP developer's guide}.</LI>
</UL>

View File

@@ -3,7 +3,7 @@
<head>
<!--
/*
* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -334,14 +334,12 @@ href="http://www.omg.org/cgi-bin/doc?ptc/00-08-07">ptc/00-08-07</a>)
For an overview and examples of how to use the
<code>CosNaming</code> API, please see:
<ul>
<li><a href="../../../../technotes/guides/idl/tnameserv.html">
Naming Service</a>
<li>{@extLink tnameserv NamingService}
</ul>
<p>
For an overview of Java&nbsp;IDL, please see:
<ul>
<li><a href="../../../../technotes/guides/idl/index.html">
Java&nbsp;IDL home page</a>
<li>{@extLink idl_guides Java&nbsp;IDL developer's home page}
</ul>
@since JDK1.3

View File

@@ -157,7 +157,7 @@ follows exactly the same pattern as the other holder classes for basic types.
<H2>Related Documentation</H2>
<P>For an overview of Java IDL, please see:
<A HREF="../../../../technotes/guides/idl/index.html">Java IDL home page</A>.
{@extLink idl_guides Java&nbsp;IDL home page}.
<H2>Example Code</H2>
<a id="sampleserver"></a>

View File

@@ -573,3 +573,6 @@ c92c6416ca03b1464d5ed99cf6201e52b5ba0a70 jdk-9+165
fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168
16d692be099c5c38eb48cc9aca78b0c900910d5b jdk-9+169
38a240fd58a287acb1963920b92ed4d9c2fd39e3 jdk-9+170
d53171650a2cc6c6f699c966c533b914ca9c0602 jdk-9+171
1ae9e84f68b359420d2d153ecfe5ee2903e33a2e jdk-9+172
e64b1cb48d6e7703928a9d1da106fc27f8cb65fd jdk-9+173

View File

@@ -139,7 +139,7 @@ void metadata_Relocation::pd_fix_value(address x) {
#ifdef AARCH64
#ifdef COMPILER2
NativeMovConstReg* ni = nativeMovConstReg_at(addr());
if (ni->is_movz()) {
if (ni->is_mov_slow()) {
return;
}
#endif

View File

@@ -26,6 +26,15 @@
/**
* Defines the implementation of the HotSpot Serviceability Agent.
*
* <p> This module includes the <em>{@index jhsdb jhsdb tool}</em> tool to
* attach to a running Java Virtual Machine (JVM) or launch a postmortem
* debugger to analyze the content of a core-dump from a crashed JVM.
*
* <dl style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif">
* <dt class="simpleTagLabel">Tool Guides:</dt>
* <dd> {@extLink jhsdb_tool_reference jhsdb}</dd>
* </dl>
*
* @moduleGraph
* @since 9
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -246,21 +246,21 @@ public class CheckGraalIntrinsics extends GraalTest {
"jdk/internal/misc/Unsafe.allocateUninitializedArray0(Ljava/lang/Class;I)Ljava/lang/Object;",
"jdk/internal/misc/Unsafe.compareAndExchangeByteAcquire(Ljava/lang/Object;JBB)B",
"jdk/internal/misc/Unsafe.compareAndExchangeByteRelease(Ljava/lang/Object;JBB)B",
"jdk/internal/misc/Unsafe.compareAndExchangeByteVolatile(Ljava/lang/Object;JBB)B",
"jdk/internal/misc/Unsafe.compareAndExchangeByte(Ljava/lang/Object;JBB)B",
"jdk/internal/misc/Unsafe.compareAndExchangeIntAcquire(Ljava/lang/Object;JII)I",
"jdk/internal/misc/Unsafe.compareAndExchangeIntRelease(Ljava/lang/Object;JII)I",
"jdk/internal/misc/Unsafe.compareAndExchangeIntVolatile(Ljava/lang/Object;JII)I",
"jdk/internal/misc/Unsafe.compareAndExchangeInt(Ljava/lang/Object;JII)I",
"jdk/internal/misc/Unsafe.compareAndExchangeLongAcquire(Ljava/lang/Object;JJJ)J",
"jdk/internal/misc/Unsafe.compareAndExchangeLongRelease(Ljava/lang/Object;JJJ)J",
"jdk/internal/misc/Unsafe.compareAndExchangeLongVolatile(Ljava/lang/Object;JJJ)J",
"jdk/internal/misc/Unsafe.compareAndExchangeLong(Ljava/lang/Object;JJJ)J",
"jdk/internal/misc/Unsafe.compareAndExchangeObjectAcquire(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
"jdk/internal/misc/Unsafe.compareAndExchangeObjectRelease(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
"jdk/internal/misc/Unsafe.compareAndExchangeObjectVolatile(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
"jdk/internal/misc/Unsafe.compareAndExchangeObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
"jdk/internal/misc/Unsafe.compareAndExchangeShortAcquire(Ljava/lang/Object;JSS)S",
"jdk/internal/misc/Unsafe.compareAndExchangeShortRelease(Ljava/lang/Object;JSS)S",
"jdk/internal/misc/Unsafe.compareAndExchangeShortVolatile(Ljava/lang/Object;JSS)S",
"jdk/internal/misc/Unsafe.compareAndSwapByte(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.compareAndSwapShort(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.compareAndExchangeShort(Ljava/lang/Object;JSS)S",
"jdk/internal/misc/Unsafe.compareAndSetByte(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.compareAndSetShort(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.copyMemory0(Ljava/lang/Object;JLjava/lang/Object;JJ)V",
"jdk/internal/misc/Unsafe.getAndAddByte(Ljava/lang/Object;JB)B",
"jdk/internal/misc/Unsafe.getAndAddShort(Ljava/lang/Object;JS)S",
@@ -295,26 +295,26 @@ public class CheckGraalIntrinsics extends GraalTest {
"jdk/internal/misc/Unsafe.putObjectOpaque(Ljava/lang/Object;JLjava/lang/Object;)V",
"jdk/internal/misc/Unsafe.putShortOpaque(Ljava/lang/Object;JS)V",
"jdk/internal/misc/Unsafe.unpark(Ljava/lang/Object;)V",
"jdk/internal/misc/Unsafe.weakCompareAndSwapByte(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapByteAcquire(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapByteRelease(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapByteVolatile(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapInt(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapIntAcquire(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapIntRelease(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapIntVolatile(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapLong(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapLongAcquire(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapLongRelease(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapLongVolatile(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapObjectAcquire(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapObjectRelease(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapObjectVolatile(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapShort(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapShortAcquire(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapShortRelease(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSwapShortVolatile(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetBytePlain(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetByteAcquire(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetByteRelease(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetByte(Ljava/lang/Object;JBB)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetIntPlain(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetIntAcquire(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetIntRelease(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetInt(Ljava/lang/Object;JII)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetLongPlain(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetLongAcquire(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetLongRelease(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetLong(Ljava/lang/Object;JJJ)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetObjectPlain(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetObjectAcquire(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetObjectRelease(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetShortPlain(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetShortAcquire(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetShortRelease(Ljava/lang/Object;JSS)Z",
"jdk/internal/misc/Unsafe.weakCompareAndSetShort(Ljava/lang/Object;JSS)Z",
"jdk/internal/util/Preconditions.checkIndex(IILjava/util/function/BiFunction;)I",
"jdk/jfr/internal/JVM.counterTime()J",
"jdk/jfr/internal/JVM.getBufferWriter()Ljava/lang/Object;",

View File

@@ -251,7 +251,13 @@ public class StandardGraphBuilderPlugins {
for (JavaKind kind : new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}) {
Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass();
r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() {
String casName;
if (Java8OrEarlier) {
casName = "compareAndSwap";
} else {
casName = "compareAndSet";
}
r.register5(casName + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() {
@Override
public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unsafe, ValueNode object, ValueNode offset, ValueNode expected, ValueNode x) {
// Emits a null-check for the otherwise unused receiver

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -108,7 +108,7 @@ bool Compiler::is_intrinsic_supported(const methodHandle& method) {
}
switch (id) {
case vmIntrinsics::_compareAndSwapLong:
case vmIntrinsics::_compareAndSetLong:
if (!VM_Version::supports_cx8()) return false;
break;
case vmIntrinsics::_getAndAddInt:
@@ -217,8 +217,8 @@ bool Compiler::is_intrinsic_supported(const methodHandle& method) {
case vmIntrinsics::_updateDirectByteBufferCRC32C:
#endif
case vmIntrinsics::_vectorizedMismatch:
case vmIntrinsics::_compareAndSwapInt:
case vmIntrinsics::_compareAndSwapObject:
case vmIntrinsics::_compareAndSetInt:
case vmIntrinsics::_compareAndSetObject:
case vmIntrinsics::_getCharStringU:
case vmIntrinsics::_putCharStringU:
#ifdef TRACE_HAVE_INTRINSICS

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -3500,9 +3500,9 @@ void GraphBuilder::build_graph_for_intrinsic(ciMethod* callee, bool ignore_retur
case vmIntrinsics::_putLongVolatile : append_unsafe_put_obj(callee, T_LONG, true); return;
case vmIntrinsics::_putFloatVolatile : append_unsafe_put_obj(callee, T_FLOAT, true); return;
case vmIntrinsics::_putDoubleVolatile : append_unsafe_put_obj(callee, T_DOUBLE, true); return;
case vmIntrinsics::_compareAndSwapLong:
case vmIntrinsics::_compareAndSwapInt:
case vmIntrinsics::_compareAndSwapObject: append_unsafe_CAS(callee); return;
case vmIntrinsics::_compareAndSetLong:
case vmIntrinsics::_compareAndSetInt:
case vmIntrinsics::_compareAndSetObject: append_unsafe_CAS(callee); return;
case vmIntrinsics::_getAndAddInt:
case vmIntrinsics::_getAndAddLong : append_unsafe_get_and_set_obj(callee, true); return;
case vmIntrinsics::_getAndSetInt :

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -3212,13 +3212,13 @@ void LIRGenerator::do_Intrinsic(Intrinsic* x) {
// java.nio.Buffer.checkIndex
case vmIntrinsics::_checkIndex: do_NIOCheckIndex(x); break;
case vmIntrinsics::_compareAndSwapObject:
case vmIntrinsics::_compareAndSetObject:
do_CompareAndSwap(x, objectType);
break;
case vmIntrinsics::_compareAndSwapInt:
case vmIntrinsics::_compareAndSetInt:
do_CompareAndSwap(x, intType);
break;
case vmIntrinsics::_compareAndSwapLong:
case vmIntrinsics::_compareAndSetLong:
do_CompareAndSwap(x, longType);
break;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -632,25 +632,28 @@ bool vmIntrinsics::is_disabled_by_flags(vmIntrinsics::ID id) {
case vmIntrinsics::_loadFence:
case vmIntrinsics::_storeFence:
case vmIntrinsics::_fullFence:
case vmIntrinsics::_compareAndSwapLong:
case vmIntrinsics::_weakCompareAndSwapLong:
case vmIntrinsics::_weakCompareAndSwapLongAcquire:
case vmIntrinsics::_weakCompareAndSwapLongRelease:
case vmIntrinsics::_compareAndSwapInt:
case vmIntrinsics::_weakCompareAndSwapInt:
case vmIntrinsics::_weakCompareAndSwapIntAcquire:
case vmIntrinsics::_weakCompareAndSwapIntRelease:
case vmIntrinsics::_compareAndSwapObject:
case vmIntrinsics::_weakCompareAndSwapObject:
case vmIntrinsics::_weakCompareAndSwapObjectAcquire:
case vmIntrinsics::_weakCompareAndSwapObjectRelease:
case vmIntrinsics::_compareAndExchangeIntVolatile:
case vmIntrinsics::_compareAndSetLong:
case vmIntrinsics::_weakCompareAndSetLong:
case vmIntrinsics::_weakCompareAndSetLongPlain:
case vmIntrinsics::_weakCompareAndSetLongAcquire:
case vmIntrinsics::_weakCompareAndSetLongRelease:
case vmIntrinsics::_compareAndSetInt:
case vmIntrinsics::_weakCompareAndSetInt:
case vmIntrinsics::_weakCompareAndSetIntPlain:
case vmIntrinsics::_weakCompareAndSetIntAcquire:
case vmIntrinsics::_weakCompareAndSetIntRelease:
case vmIntrinsics::_compareAndSetObject:
case vmIntrinsics::_weakCompareAndSetObject:
case vmIntrinsics::_weakCompareAndSetObjectPlain:
case vmIntrinsics::_weakCompareAndSetObjectAcquire:
case vmIntrinsics::_weakCompareAndSetObjectRelease:
case vmIntrinsics::_compareAndExchangeInt:
case vmIntrinsics::_compareAndExchangeIntAcquire:
case vmIntrinsics::_compareAndExchangeIntRelease:
case vmIntrinsics::_compareAndExchangeLongVolatile:
case vmIntrinsics::_compareAndExchangeLong:
case vmIntrinsics::_compareAndExchangeLongAcquire:
case vmIntrinsics::_compareAndExchangeLongRelease:
case vmIntrinsics::_compareAndExchangeObjectVolatile:
case vmIntrinsics::_compareAndExchangeObject:
case vmIntrinsics::_compareAndExchangeObjectAcquire:
case vmIntrinsics::_compareAndExchangeObjectRelease:
if (!InlineUnsafeOps) return true;

View File

@@ -1244,100 +1244,100 @@
do_intrinsic(_putIntUnaligned, jdk_internal_misc_Unsafe, putIntUnaligned_name, putInt_signature, F_R) \
do_intrinsic(_putLongUnaligned, jdk_internal_misc_Unsafe, putLongUnaligned_name, putLong_signature, F_R) \
\
do_signature(compareAndSwapObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z") \
do_signature(compareAndSetObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z") \
do_signature(compareAndExchangeObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;") \
do_signature(compareAndSwapLong_signature, "(Ljava/lang/Object;JJJ)Z") \
do_signature(compareAndSetLong_signature, "(Ljava/lang/Object;JJJ)Z") \
do_signature(compareAndExchangeLong_signature, "(Ljava/lang/Object;JJJ)J") \
do_signature(compareAndSwapInt_signature, "(Ljava/lang/Object;JII)Z") \
do_signature(compareAndSetInt_signature, "(Ljava/lang/Object;JII)Z") \
do_signature(compareAndExchangeInt_signature, "(Ljava/lang/Object;JII)I") \
do_signature(compareAndSwapByte_signature, "(Ljava/lang/Object;JBB)Z") \
do_signature(compareAndSetByte_signature, "(Ljava/lang/Object;JBB)Z") \
do_signature(compareAndExchangeByte_signature, "(Ljava/lang/Object;JBB)B") \
do_signature(compareAndSwapShort_signature, "(Ljava/lang/Object;JSS)Z") \
do_signature(compareAndSetShort_signature, "(Ljava/lang/Object;JSS)Z") \
do_signature(compareAndExchangeShort_signature, "(Ljava/lang/Object;JSS)S") \
\
do_name(compareAndSwapObject_name, "compareAndSwapObject") \
do_name(compareAndExchangeObjectVolatile_name, "compareAndExchangeObjectVolatile") \
do_name(compareAndSetObject_name, "compareAndSetObject") \
do_name(compareAndExchangeObject_name, "compareAndExchangeObject") \
do_name(compareAndExchangeObjectAcquire_name, "compareAndExchangeObjectAcquire") \
do_name(compareAndExchangeObjectRelease_name, "compareAndExchangeObjectRelease") \
do_name(compareAndSwapLong_name, "compareAndSwapLong") \
do_name(compareAndExchangeLongVolatile_name, "compareAndExchangeLongVolatile") \
do_name(compareAndSetLong_name, "compareAndSetLong") \
do_name(compareAndExchangeLong_name, "compareAndExchangeLong") \
do_name(compareAndExchangeLongAcquire_name, "compareAndExchangeLongAcquire") \
do_name(compareAndExchangeLongRelease_name, "compareAndExchangeLongRelease") \
do_name(compareAndSwapInt_name, "compareAndSwapInt") \
do_name(compareAndExchangeIntVolatile_name, "compareAndExchangeIntVolatile") \
do_name(compareAndSetInt_name, "compareAndSetInt") \
do_name(compareAndExchangeInt_name, "compareAndExchangeInt") \
do_name(compareAndExchangeIntAcquire_name, "compareAndExchangeIntAcquire") \
do_name(compareAndExchangeIntRelease_name, "compareAndExchangeIntRelease") \
do_name(compareAndSwapByte_name, "compareAndSwapByte") \
do_name(compareAndExchangeByteVolatile_name, "compareAndExchangeByteVolatile") \
do_name(compareAndSetByte_name, "compareAndSetByte") \
do_name(compareAndExchangeByte_name, "compareAndExchangeByte") \
do_name(compareAndExchangeByteAcquire_name, "compareAndExchangeByteAcquire") \
do_name(compareAndExchangeByteRelease_name, "compareAndExchangeByteRelease") \
do_name(compareAndSwapShort_name, "compareAndSwapShort") \
do_name(compareAndExchangeShortVolatile_name, "compareAndExchangeShortVolatile") \
do_name(compareAndSetShort_name, "compareAndSetShort") \
do_name(compareAndExchangeShort_name, "compareAndExchangeShort") \
do_name(compareAndExchangeShortAcquire_name, "compareAndExchangeShortAcquire") \
do_name(compareAndExchangeShortRelease_name, "compareAndExchangeShortRelease") \
\
do_name(weakCompareAndSwapObject_name, "weakCompareAndSwapObject") \
do_name(weakCompareAndSwapObjectAcquire_name, "weakCompareAndSwapObjectAcquire") \
do_name(weakCompareAndSwapObjectRelease_name, "weakCompareAndSwapObjectRelease") \
do_name(weakCompareAndSwapObjectVolatile_name, "weakCompareAndSwapObjectVolatile") \
do_name(weakCompareAndSwapLong_name, "weakCompareAndSwapLong") \
do_name(weakCompareAndSwapLongAcquire_name, "weakCompareAndSwapLongAcquire") \
do_name(weakCompareAndSwapLongRelease_name, "weakCompareAndSwapLongRelease") \
do_name(weakCompareAndSwapLongVolatile_name, "weakCompareAndSwapLongVolatile") \
do_name(weakCompareAndSwapInt_name, "weakCompareAndSwapInt") \
do_name(weakCompareAndSwapIntAcquire_name, "weakCompareAndSwapIntAcquire") \
do_name(weakCompareAndSwapIntRelease_name, "weakCompareAndSwapIntRelease") \
do_name(weakCompareAndSwapIntVolatile_name, "weakCompareAndSwapIntVolatile") \
do_name(weakCompareAndSwapByte_name, "weakCompareAndSwapByte") \
do_name(weakCompareAndSwapByteAcquire_name, "weakCompareAndSwapByteAcquire") \
do_name(weakCompareAndSwapByteRelease_name, "weakCompareAndSwapByteRelease") \
do_name(weakCompareAndSwapByteVolatile_name, "weakCompareAndSwapByteVolatile") \
do_name(weakCompareAndSwapShort_name, "weakCompareAndSwapShort") \
do_name(weakCompareAndSwapShortAcquire_name, "weakCompareAndSwapShortAcquire") \
do_name(weakCompareAndSwapShortRelease_name, "weakCompareAndSwapShortRelease") \
do_name(weakCompareAndSwapShortVolatile_name, "weakCompareAndSwapShortVolatile") \
do_name(weakCompareAndSetObjectPlain_name, "weakCompareAndSetObjectPlain") \
do_name(weakCompareAndSetObjectAcquire_name, "weakCompareAndSetObjectAcquire") \
do_name(weakCompareAndSetObjectRelease_name, "weakCompareAndSetObjectRelease") \
do_name(weakCompareAndSetObject_name, "weakCompareAndSetObject") \
do_name(weakCompareAndSetLongPlain_name, "weakCompareAndSetLongPlain") \
do_name(weakCompareAndSetLongAcquire_name, "weakCompareAndSetLongAcquire") \
do_name(weakCompareAndSetLongRelease_name, "weakCompareAndSetLongRelease") \
do_name(weakCompareAndSetLong_name, "weakCompareAndSetLong") \
do_name(weakCompareAndSetIntPlain_name, "weakCompareAndSetIntPlain") \
do_name(weakCompareAndSetIntAcquire_name, "weakCompareAndSetIntAcquire") \
do_name(weakCompareAndSetIntRelease_name, "weakCompareAndSetIntRelease") \
do_name(weakCompareAndSetInt_name, "weakCompareAndSetInt") \
do_name(weakCompareAndSetBytePlain_name, "weakCompareAndSetBytePlain") \
do_name(weakCompareAndSetByteAcquire_name, "weakCompareAndSetByteAcquire") \
do_name(weakCompareAndSetByteRelease_name, "weakCompareAndSetByteRelease") \
do_name(weakCompareAndSetByte_name, "weakCompareAndSetByte") \
do_name(weakCompareAndSetShortPlain_name, "weakCompareAndSetShortPlain") \
do_name(weakCompareAndSetShortAcquire_name, "weakCompareAndSetShortAcquire") \
do_name(weakCompareAndSetShortRelease_name, "weakCompareAndSetShortRelease") \
do_name(weakCompareAndSetShort_name, "weakCompareAndSetShort") \
\
do_intrinsic(_compareAndSwapObject, jdk_internal_misc_Unsafe, compareAndSwapObject_name, compareAndSwapObject_signature, F_RN) \
do_intrinsic(_compareAndExchangeObjectVolatile, jdk_internal_misc_Unsafe, compareAndExchangeObjectVolatile_name, compareAndExchangeObject_signature, F_RN) \
do_intrinsic(_compareAndSetObject, jdk_internal_misc_Unsafe, compareAndSetObject_name, compareAndSetObject_signature, F_RN) \
do_intrinsic(_compareAndExchangeObject, jdk_internal_misc_Unsafe, compareAndExchangeObject_name, compareAndExchangeObject_signature, F_RN) \
do_intrinsic(_compareAndExchangeObjectAcquire, jdk_internal_misc_Unsafe, compareAndExchangeObjectAcquire_name, compareAndExchangeObject_signature, F_R) \
do_intrinsic(_compareAndExchangeObjectRelease, jdk_internal_misc_Unsafe, compareAndExchangeObjectRelease_name, compareAndExchangeObject_signature, F_R) \
do_intrinsic(_compareAndSwapLong, jdk_internal_misc_Unsafe, compareAndSwapLong_name, compareAndSwapLong_signature, F_RN) \
do_intrinsic(_compareAndExchangeLongVolatile, jdk_internal_misc_Unsafe, compareAndExchangeLongVolatile_name, compareAndExchangeLong_signature, F_RN) \
do_intrinsic(_compareAndSetLong, jdk_internal_misc_Unsafe, compareAndSetLong_name, compareAndSetLong_signature, F_RN) \
do_intrinsic(_compareAndExchangeLong, jdk_internal_misc_Unsafe, compareAndExchangeLong_name, compareAndExchangeLong_signature, F_RN) \
do_intrinsic(_compareAndExchangeLongAcquire, jdk_internal_misc_Unsafe, compareAndExchangeLongAcquire_name, compareAndExchangeLong_signature, F_R) \
do_intrinsic(_compareAndExchangeLongRelease, jdk_internal_misc_Unsafe, compareAndExchangeLongRelease_name, compareAndExchangeLong_signature, F_R) \
do_intrinsic(_compareAndSwapInt, jdk_internal_misc_Unsafe, compareAndSwapInt_name, compareAndSwapInt_signature, F_RN) \
do_intrinsic(_compareAndExchangeIntVolatile, jdk_internal_misc_Unsafe, compareAndExchangeIntVolatile_name, compareAndExchangeInt_signature, F_RN) \
do_intrinsic(_compareAndSetInt, jdk_internal_misc_Unsafe, compareAndSetInt_name, compareAndSetInt_signature, F_RN) \
do_intrinsic(_compareAndExchangeInt, jdk_internal_misc_Unsafe, compareAndExchangeInt_name, compareAndExchangeInt_signature, F_RN) \
do_intrinsic(_compareAndExchangeIntAcquire, jdk_internal_misc_Unsafe, compareAndExchangeIntAcquire_name, compareAndExchangeInt_signature, F_R) \
do_intrinsic(_compareAndExchangeIntRelease, jdk_internal_misc_Unsafe, compareAndExchangeIntRelease_name, compareAndExchangeInt_signature, F_R) \
do_intrinsic(_compareAndSwapByte, jdk_internal_misc_Unsafe, compareAndSwapByte_name, compareAndSwapByte_signature, F_R) \
do_intrinsic(_compareAndExchangeByteVolatile, jdk_internal_misc_Unsafe, compareAndExchangeByteVolatile_name, compareAndExchangeByte_signature, F_R) \
do_intrinsic(_compareAndSetByte, jdk_internal_misc_Unsafe, compareAndSetByte_name, compareAndSetByte_signature, F_R) \
do_intrinsic(_compareAndExchangeByte, jdk_internal_misc_Unsafe, compareAndExchangeByte_name, compareAndExchangeByte_signature, F_R) \
do_intrinsic(_compareAndExchangeByteAcquire, jdk_internal_misc_Unsafe, compareAndExchangeByteAcquire_name, compareAndExchangeByte_signature, F_R) \
do_intrinsic(_compareAndExchangeByteRelease, jdk_internal_misc_Unsafe, compareAndExchangeByteRelease_name, compareAndExchangeByte_signature, F_R) \
do_intrinsic(_compareAndSwapShort, jdk_internal_misc_Unsafe, compareAndSwapShort_name, compareAndSwapShort_signature, F_R) \
do_intrinsic(_compareAndExchangeShortVolatile, jdk_internal_misc_Unsafe, compareAndExchangeShortVolatile_name, compareAndExchangeShort_signature, F_R) \
do_intrinsic(_compareAndSetShort, jdk_internal_misc_Unsafe, compareAndSetShort_name, compareAndSetShort_signature, F_R) \
do_intrinsic(_compareAndExchangeShort, jdk_internal_misc_Unsafe, compareAndExchangeShort_name, compareAndExchangeShort_signature, F_R) \
do_intrinsic(_compareAndExchangeShortAcquire, jdk_internal_misc_Unsafe, compareAndExchangeShortAcquire_name, compareAndExchangeShort_signature, F_R) \
do_intrinsic(_compareAndExchangeShortRelease, jdk_internal_misc_Unsafe, compareAndExchangeShortRelease_name, compareAndExchangeShort_signature, F_R) \
\
do_intrinsic(_weakCompareAndSwapObject, jdk_internal_misc_Unsafe, weakCompareAndSwapObject_name, compareAndSwapObject_signature, F_R) \
do_intrinsic(_weakCompareAndSwapObjectAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapObjectAcquire_name, compareAndSwapObject_signature, F_R) \
do_intrinsic(_weakCompareAndSwapObjectRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapObjectRelease_name, compareAndSwapObject_signature, F_R) \
do_intrinsic(_weakCompareAndSwapObjectVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapObjectVolatile_name, compareAndSwapObject_signature, F_R) \
do_intrinsic(_weakCompareAndSwapLong, jdk_internal_misc_Unsafe, weakCompareAndSwapLong_name, compareAndSwapLong_signature, F_R) \
do_intrinsic(_weakCompareAndSwapLongAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapLongAcquire_name, compareAndSwapLong_signature, F_R) \
do_intrinsic(_weakCompareAndSwapLongRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapLongRelease_name, compareAndSwapLong_signature, F_R) \
do_intrinsic(_weakCompareAndSwapLongVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapLongVolatile_name, compareAndSwapLong_signature, F_R) \
do_intrinsic(_weakCompareAndSwapInt, jdk_internal_misc_Unsafe, weakCompareAndSwapInt_name, compareAndSwapInt_signature, F_R) \
do_intrinsic(_weakCompareAndSwapIntAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapIntAcquire_name, compareAndSwapInt_signature, F_R) \
do_intrinsic(_weakCompareAndSwapIntRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapIntRelease_name, compareAndSwapInt_signature, F_R) \
do_intrinsic(_weakCompareAndSwapIntVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapIntVolatile_name, compareAndSwapInt_signature, F_R) \
do_intrinsic(_weakCompareAndSwapByte, jdk_internal_misc_Unsafe, weakCompareAndSwapByte_name, compareAndSwapByte_signature, F_R) \
do_intrinsic(_weakCompareAndSwapByteAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapByteAcquire_name, compareAndSwapByte_signature, F_R) \
do_intrinsic(_weakCompareAndSwapByteRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapByteRelease_name, compareAndSwapByte_signature, F_R) \
do_intrinsic(_weakCompareAndSwapByteVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapByteVolatile_name, compareAndSwapByte_signature, F_R) \
do_intrinsic(_weakCompareAndSwapShort, jdk_internal_misc_Unsafe, weakCompareAndSwapShort_name, compareAndSwapShort_signature, F_R) \
do_intrinsic(_weakCompareAndSwapShortAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapShortAcquire_name, compareAndSwapShort_signature, F_R) \
do_intrinsic(_weakCompareAndSwapShortRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapShortRelease_name, compareAndSwapShort_signature, F_R) \
do_intrinsic(_weakCompareAndSwapShortVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapShortVolatile_name, compareAndSwapShort_signature, F_R) \
do_intrinsic(_weakCompareAndSetObjectPlain, jdk_internal_misc_Unsafe, weakCompareAndSetObjectPlain_name, compareAndSetObject_signature, F_R) \
do_intrinsic(_weakCompareAndSetObjectAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetObjectAcquire_name, compareAndSetObject_signature, F_R) \
do_intrinsic(_weakCompareAndSetObjectRelease, jdk_internal_misc_Unsafe, weakCompareAndSetObjectRelease_name, compareAndSetObject_signature, F_R) \
do_intrinsic(_weakCompareAndSetObject, jdk_internal_misc_Unsafe, weakCompareAndSetObject_name, compareAndSetObject_signature, F_R) \
do_intrinsic(_weakCompareAndSetLongPlain, jdk_internal_misc_Unsafe, weakCompareAndSetLongPlain_name, compareAndSetLong_signature, F_R) \
do_intrinsic(_weakCompareAndSetLongAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetLongAcquire_name, compareAndSetLong_signature, F_R) \
do_intrinsic(_weakCompareAndSetLongRelease, jdk_internal_misc_Unsafe, weakCompareAndSetLongRelease_name, compareAndSetLong_signature, F_R) \
do_intrinsic(_weakCompareAndSetLong, jdk_internal_misc_Unsafe, weakCompareAndSetLong_name, compareAndSetLong_signature, F_R) \
do_intrinsic(_weakCompareAndSetIntPlain, jdk_internal_misc_Unsafe, weakCompareAndSetIntPlain_name, compareAndSetInt_signature, F_R) \
do_intrinsic(_weakCompareAndSetIntAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetIntAcquire_name, compareAndSetInt_signature, F_R) \
do_intrinsic(_weakCompareAndSetIntRelease, jdk_internal_misc_Unsafe, weakCompareAndSetIntRelease_name, compareAndSetInt_signature, F_R) \
do_intrinsic(_weakCompareAndSetInt, jdk_internal_misc_Unsafe, weakCompareAndSetInt_name, compareAndSetInt_signature, F_R) \
do_intrinsic(_weakCompareAndSetBytePlain, jdk_internal_misc_Unsafe, weakCompareAndSetBytePlain_name, compareAndSetByte_signature, F_R) \
do_intrinsic(_weakCompareAndSetByteAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetByteAcquire_name, compareAndSetByte_signature, F_R) \
do_intrinsic(_weakCompareAndSetByteRelease, jdk_internal_misc_Unsafe, weakCompareAndSetByteRelease_name, compareAndSetByte_signature, F_R) \
do_intrinsic(_weakCompareAndSetByte, jdk_internal_misc_Unsafe, weakCompareAndSetByte_name, compareAndSetByte_signature, F_R) \
do_intrinsic(_weakCompareAndSetShortPlain, jdk_internal_misc_Unsafe, weakCompareAndSetShortPlain_name, compareAndSetShort_signature, F_R) \
do_intrinsic(_weakCompareAndSetShortAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetShortAcquire_name, compareAndSetShort_signature, F_R) \
do_intrinsic(_weakCompareAndSetShortRelease, jdk_internal_misc_Unsafe, weakCompareAndSetShortRelease_name, compareAndSetShort_signature, F_R) \
do_intrinsic(_weakCompareAndSetShort, jdk_internal_misc_Unsafe, weakCompareAndSetShort_name, compareAndSetShort_signature, F_R) \
\
do_intrinsic(_getAndAddInt, jdk_internal_misc_Unsafe, getAndAddInt_name, getAndAddInt_signature, F_R) \
do_name( getAndAddInt_name, "getAndAddInt") \

View File

@@ -129,9 +129,9 @@ void RelocIterator::initialize(CompiledMethod* nm, address begin, address limit)
if (nm == NULL && begin != NULL) {
// allow nmethod to be deduced from beginning address
CodeBlob* cb = CodeCache::find_blob(begin);
nm = cb->as_compiled_method_or_null();
nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;
}
assert(nm != NULL, "must be able to deduce nmethod from other arguments");
guarantee(nm != NULL, "must be able to deduce nmethod from other arguments");
_code = nm;
_current = nm->relocation_begin() - 1;

View File

@@ -350,16 +350,14 @@ void OopMapSet::all_do(const frame *fr, const RegisterMap *reg_map,
omv = oms.current();
oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map);
guarantee(loc != NULL, "missing saved register");
oop *base_loc = fr->oopmapreg_to_location(omv.content_reg(), reg_map);
oop *derived_loc = loc;
oop val = *base_loc;
if (val == (oop)NULL || Universe::is_narrow_oop_base(val)) {
// Ignore NULL oops and decoded NULL narrow oops which
// equal to Universe::narrow_oop_base when a narrow oop
// implicit null check is used in compiled code.
// The narrow_oop_base could be NULL or be the address
// of the page below heap depending on compressed oops mode.
} else {
oop *base_loc = fr->oopmapreg_to_location(omv.content_reg(), reg_map);
// Ignore NULL oops and decoded NULL narrow oops which
// equal to Universe::narrow_oop_base when a narrow oop
// implicit null check is used in compiled code.
// The narrow_oop_base could be NULL or be the address
// of the page below heap depending on compressed oops mode.
if (base_loc != NULL && *base_loc != (oop)NULL && !Universe::is_narrow_oop_base(*base_loc)) {
derived_oop_fn(base_loc, derived_loc);
}
oms.next();

View File

@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "opto/arraycopynode.hpp"
#include "opto/graphKit.hpp"
#include "runtime/sharedRuntime.hpp"
ArrayCopyNode::ArrayCopyNode(Compile* C, bool alloc_tightly_coupled, bool has_negative_length_guard)
: CallNode(arraycopy_type(), NULL, TypeRawPtr::BOTTOM),
@@ -631,42 +632,76 @@ bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase) {
return CallNode::may_modify_arraycopy_helper(dest_t, t_oop, phase);
}
bool ArrayCopyNode::may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, ArrayCopyNode*& ac) {
if (n->Opcode() == Op_StoreCM ||
n->Opcode() == Op_StoreB) {
// Ignore card mark stores
n = n->in(MemNode::Memory);
}
if (n->is_Proj()) {
n = n->in(0);
if (n->is_Call() && n->as_Call()->may_modify(t_oop, phase)) {
if (n->isa_ArrayCopy() != NULL) {
ac = n->as_ArrayCopy();
}
return true;
}
bool ArrayCopyNode::may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, CallNode*& call) {
if (n != NULL &&
n->is_Call() &&
n->as_Call()->may_modify(t_oop, phase) &&
(n->as_Call()->is_ArrayCopy() || n->as_Call()->is_call_to_arraycopystub())) {
call = n->as_Call();
return true;
}
return false;
}
bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTransform *phase, ArrayCopyNode*& ac) {
Node* mem = mb->in(TypeFunc::Memory);
if (mem->is_MergeMem()) {
Node* n = mem->as_MergeMem()->memory_at(Compile::AliasIdxRaw);
if (may_modify_helper(t_oop, n, phase, ac)) {
return true;
} else if (n->is_Phi()) {
for (uint i = 1; i < n->req(); i++) {
if (n->in(i) != NULL) {
if (may_modify_helper(t_oop, n->in(i), phase, ac)) {
return true;
static Node* step_over_gc_barrier(Node* c) {
if (UseG1GC && !GraphKit::use_ReduceInitialCardMarks() &&
c != NULL && c->is_Region() && c->req() == 3) {
for (uint i = 1; i < c->req(); i++) {
if (c->in(i) != NULL && c->in(i)->is_Region() &&
c->in(i)->req() == 3) {
Node* r = c->in(i);
for (uint j = 1; j < r->req(); j++) {
if (r->in(j) != NULL && r->in(j)->is_Proj() &&
r->in(j)->in(0) != NULL &&
r->in(j)->in(0)->Opcode() == Op_CallLeaf &&
r->in(j)->in(0)->as_Call()->entry_point() == CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_post)) {
Node* call = r->in(j)->in(0);
c = c->in(i == 1 ? 2 : 1);
if (c != NULL) {
c = c->in(0);
if (c != NULL) {
c = c->in(0);
assert(call->in(0) == NULL ||
call->in(0)->in(0) == NULL ||
call->in(0)->in(0)->in(0) == NULL ||
call->in(0)->in(0)->in(0)->in(0) == NULL ||
call->in(0)->in(0)->in(0)->in(0)->in(0) == NULL ||
c == call->in(0)->in(0)->in(0)->in(0)->in(0), "bad barrier shape");
return c;
}
}
}
}
}
}
}
return c;
}
bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTransform *phase, ArrayCopyNode*& ac) {
Node* c = mb->in(0);
// step over g1 gc barrier if we're at a clone with ReduceInitialCardMarks off
c = step_over_gc_barrier(c);
CallNode* call = NULL;
if (c != NULL && c->is_Region()) {
for (uint i = 1; i < c->req(); i++) {
if (c->in(i) != NULL) {
Node* n = c->in(i)->in(0);
if (may_modify_helper(t_oop, n, phase, call)) {
ac = call->isa_ArrayCopy();
assert(c == mb->in(0), "only for clone");
return true;
}
}
}
} else if (may_modify_helper(t_oop, c->in(0), phase, call)) {
ac = call->isa_ArrayCopy();
assert(c == mb->in(0) || (ac != NULL && ac->is_clonebasic() && !GraphKit::use_ReduceInitialCardMarks()), "only for clone");
return true;
}
return false;
}
@@ -677,37 +712,77 @@ bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTra
// between offset_lo and offset_hi
// if must_modify is true, return true if the copy is guaranteed to
// write between offset_lo and offset_hi
bool ArrayCopyNode::modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify) {
bool ArrayCopyNode::modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify) const {
assert(_kind == ArrayCopy || _kind == CopyOf || _kind == CopyOfRange, "only for real array copies");
Node* dest = in(ArrayCopyNode::Dest);
Node* src_pos = in(ArrayCopyNode::SrcPos);
Node* dest_pos = in(ArrayCopyNode::DestPos);
Node* len = in(ArrayCopyNode::Length);
Node* dest = in(Dest);
Node* dest_pos = in(DestPos);
Node* len = in(Length);
const TypeInt *dest_pos_t = phase->type(dest_pos)->isa_int();
const TypeInt *len_t = phase->type(len)->isa_int();
const TypeAryPtr* ary_t = phase->type(dest)->isa_aryptr();
if (dest_pos_t != NULL && len_t != NULL && ary_t != NULL) {
BasicType ary_elem = ary_t->klass()->as_array_klass()->element_type()->basic_type();
uint header = arrayOopDesc::base_offset_in_bytes(ary_elem);
uint elemsize = type2aelembytes(ary_elem);
if (dest_pos_t == NULL || len_t == NULL || ary_t == NULL) {
return !must_modify;
}
jlong dest_pos_plus_len_lo = (((jlong)dest_pos_t->_lo) + len_t->_lo) * elemsize + header;
jlong dest_pos_plus_len_hi = (((jlong)dest_pos_t->_hi) + len_t->_hi) * elemsize + header;
jlong dest_pos_lo = ((jlong)dest_pos_t->_lo) * elemsize + header;
jlong dest_pos_hi = ((jlong)dest_pos_t->_hi) * elemsize + header;
BasicType ary_elem = ary_t->klass()->as_array_klass()->element_type()->basic_type();
uint header = arrayOopDesc::base_offset_in_bytes(ary_elem);
uint elemsize = type2aelembytes(ary_elem);
if (must_modify) {
if (offset_lo >= dest_pos_hi && offset_hi < dest_pos_plus_len_lo) {
return true;
}
} else {
if (offset_hi >= dest_pos_lo && offset_lo < dest_pos_plus_len_hi) {
return true;
}
jlong dest_pos_plus_len_lo = (((jlong)dest_pos_t->_lo) + len_t->_lo) * elemsize + header;
jlong dest_pos_plus_len_hi = (((jlong)dest_pos_t->_hi) + len_t->_hi) * elemsize + header;
jlong dest_pos_lo = ((jlong)dest_pos_t->_lo) * elemsize + header;
jlong dest_pos_hi = ((jlong)dest_pos_t->_hi) * elemsize + header;
if (must_modify) {
if (offset_lo >= dest_pos_hi && offset_hi < dest_pos_plus_len_lo) {
return true;
}
} else {
if (offset_hi >= dest_pos_lo && offset_lo < dest_pos_plus_len_hi) {
return true;
}
}
return false;
}
// We try to replace a load from the destination of an arraycopy with
// a load from the source so the arraycopy has a chance to be
// eliminated. It's only valid if the arraycopy doesn't change the
// element that would be loaded from the source array.
bool ArrayCopyNode::can_replace_dest_load_with_src_load(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase) const {
assert(_kind == ArrayCopy || _kind == CopyOf || _kind == CopyOfRange, "only for real array copies");
Node* src = in(Src);
Node* dest = in(Dest);
// Check whether, assuming source and destination are the same
// array, the arraycopy modifies the element from the source we
// would load.
if ((src != dest && in(SrcPos) == in(DestPos)) || !modifies(offset_lo, offset_hi, phase, false)) {
// if not the transformation is legal
return true;
}
AllocateNode* src_alloc = AllocateNode::Ideal_allocation(src, phase);
AllocateNode* dest_alloc = AllocateNode::Ideal_allocation(dest, phase);
// Check whether source and destination can be proved to be
// different arrays
const TypeOopPtr* t_src = phase->type(src)->isa_oopptr();
const TypeOopPtr* t_dest = phase->type(dest)->isa_oopptr();
if (t_src != NULL && t_dest != NULL &&
(t_src->is_known_instance() || t_dest->is_known_instance()) &&
t_src->instance_id() != t_dest->instance_id()) {
return true;
}
if (MemNode::detect_ptr_independence(src->uncast(), src_alloc, dest->uncast(), dest_alloc, phase)) {
return true;
}
return false;
}

View File

@@ -108,7 +108,7 @@ private:
BasicType copy_type, const Type* value_type, int count);
bool finish_transform(PhaseGVN *phase, bool can_reshape,
Node* ctl, Node *mem);
static bool may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, ArrayCopyNode*& ac);
static bool may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, CallNode*& call);
public:
@@ -167,7 +167,8 @@ public:
bool has_negative_length_guard() const { return _has_negative_length_guard; }
static bool may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTransform *phase, ArrayCopyNode*& ac);
bool modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify);
bool modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify) const;
bool can_replace_dest_load_with_src_load(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase) const;
#ifndef PRODUCT
virtual void dump_spec(outputStream *st) const;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -244,8 +244,8 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
if (!Matcher::match_rule_supported(Op_ReverseBytesL)) return false;
break;
/* CompareAndSwap, Object: */
case vmIntrinsics::_compareAndSwapObject:
/* CompareAndSet, Object: */
case vmIntrinsics::_compareAndSetObject:
#ifdef _LP64
if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapN)) return false;
if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
@@ -253,10 +253,10 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
if (!Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
#endif
break;
case vmIntrinsics::_weakCompareAndSwapObject:
case vmIntrinsics::_weakCompareAndSwapObjectAcquire:
case vmIntrinsics::_weakCompareAndSwapObjectRelease:
case vmIntrinsics::_weakCompareAndSwapObjectVolatile:
case vmIntrinsics::_weakCompareAndSetObjectPlain:
case vmIntrinsics::_weakCompareAndSetObjectAcquire:
case vmIntrinsics::_weakCompareAndSetObjectRelease:
case vmIntrinsics::_weakCompareAndSetObject:
#ifdef _LP64
if ( UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapN)) return false;
if (!UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
@@ -264,52 +264,52 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
#endif
break;
/* CompareAndSwap, Long: */
case vmIntrinsics::_compareAndSwapLong:
/* CompareAndSet, Long: */
case vmIntrinsics::_compareAndSetLong:
if (!Matcher::match_rule_supported(Op_CompareAndSwapL)) return false;
break;
case vmIntrinsics::_weakCompareAndSwapLong:
case vmIntrinsics::_weakCompareAndSwapLongAcquire:
case vmIntrinsics::_weakCompareAndSwapLongRelease:
case vmIntrinsics::_weakCompareAndSwapLongVolatile:
case vmIntrinsics::_weakCompareAndSetLongPlain:
case vmIntrinsics::_weakCompareAndSetLongAcquire:
case vmIntrinsics::_weakCompareAndSetLongRelease:
case vmIntrinsics::_weakCompareAndSetLong:
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
break;
/* CompareAndSwap, Int: */
case vmIntrinsics::_compareAndSwapInt:
/* CompareAndSet, Int: */
case vmIntrinsics::_compareAndSetInt:
if (!Matcher::match_rule_supported(Op_CompareAndSwapI)) return false;
break;
case vmIntrinsics::_weakCompareAndSwapInt:
case vmIntrinsics::_weakCompareAndSwapIntAcquire:
case vmIntrinsics::_weakCompareAndSwapIntRelease:
case vmIntrinsics::_weakCompareAndSwapIntVolatile:
case vmIntrinsics::_weakCompareAndSetIntPlain:
case vmIntrinsics::_weakCompareAndSetIntAcquire:
case vmIntrinsics::_weakCompareAndSetIntRelease:
case vmIntrinsics::_weakCompareAndSetInt:
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
break;
/* CompareAndSwap, Byte: */
case vmIntrinsics::_compareAndSwapByte:
/* CompareAndSet, Byte: */
case vmIntrinsics::_compareAndSetByte:
if (!Matcher::match_rule_supported(Op_CompareAndSwapB)) return false;
break;
case vmIntrinsics::_weakCompareAndSwapByte:
case vmIntrinsics::_weakCompareAndSwapByteAcquire:
case vmIntrinsics::_weakCompareAndSwapByteRelease:
case vmIntrinsics::_weakCompareAndSwapByteVolatile:
case vmIntrinsics::_weakCompareAndSetBytePlain:
case vmIntrinsics::_weakCompareAndSetByteAcquire:
case vmIntrinsics::_weakCompareAndSetByteRelease:
case vmIntrinsics::_weakCompareAndSetByte:
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapB)) return false;
break;
/* CompareAndSwap, Short: */
case vmIntrinsics::_compareAndSwapShort:
/* CompareAndSet, Short: */
case vmIntrinsics::_compareAndSetShort:
if (!Matcher::match_rule_supported(Op_CompareAndSwapS)) return false;
break;
case vmIntrinsics::_weakCompareAndSwapShort:
case vmIntrinsics::_weakCompareAndSwapShortAcquire:
case vmIntrinsics::_weakCompareAndSwapShortRelease:
case vmIntrinsics::_weakCompareAndSwapShortVolatile:
case vmIntrinsics::_weakCompareAndSetShortPlain:
case vmIntrinsics::_weakCompareAndSetShortAcquire:
case vmIntrinsics::_weakCompareAndSetShortRelease:
case vmIntrinsics::_weakCompareAndSetShort:
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapS)) return false;
break;
/* CompareAndExchange, Object: */
case vmIntrinsics::_compareAndExchangeObjectVolatile:
case vmIntrinsics::_compareAndExchangeObject:
case vmIntrinsics::_compareAndExchangeObjectAcquire:
case vmIntrinsics::_compareAndExchangeObjectRelease:
#ifdef _LP64
@@ -321,28 +321,28 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
break;
/* CompareAndExchange, Long: */
case vmIntrinsics::_compareAndExchangeLongVolatile:
case vmIntrinsics::_compareAndExchangeLong:
case vmIntrinsics::_compareAndExchangeLongAcquire:
case vmIntrinsics::_compareAndExchangeLongRelease:
if (!Matcher::match_rule_supported(Op_CompareAndExchangeL)) return false;
break;
/* CompareAndExchange, Int: */
case vmIntrinsics::_compareAndExchangeIntVolatile:
case vmIntrinsics::_compareAndExchangeInt:
case vmIntrinsics::_compareAndExchangeIntAcquire:
case vmIntrinsics::_compareAndExchangeIntRelease:
if (!Matcher::match_rule_supported(Op_CompareAndExchangeI)) return false;
break;
/* CompareAndExchange, Byte: */
case vmIntrinsics::_compareAndExchangeByteVolatile:
case vmIntrinsics::_compareAndExchangeByte:
case vmIntrinsics::_compareAndExchangeByteAcquire:
case vmIntrinsics::_compareAndExchangeByteRelease:
if (!Matcher::match_rule_supported(Op_CompareAndExchangeB)) return false;
break;
/* CompareAndExchange, Short: */
case vmIntrinsics::_compareAndExchangeShortVolatile:
case vmIntrinsics::_compareAndExchangeShort:
case vmIntrinsics::_compareAndExchangeShortAcquire:
case vmIntrinsics::_compareAndExchangeShortRelease:
if (!Matcher::match_rule_supported(Op_CompareAndExchangeS)) return false;

View File

@@ -649,46 +649,46 @@ bool LibraryCallKit::try_to_inline(int predicate) {
case vmIntrinsics::_putFloatOpaque: return inline_unsafe_access( is_store, T_FLOAT, Opaque, false);
case vmIntrinsics::_putDoubleOpaque: return inline_unsafe_access( is_store, T_DOUBLE, Opaque, false);
case vmIntrinsics::_compareAndSwapObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSwapByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSwapShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSwapInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSwapLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSetObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSetByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSetShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSetInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap, Volatile);
case vmIntrinsics::_compareAndSetLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap, Volatile);
case vmIntrinsics::_weakCompareAndSwapObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSwapObjectAcquire: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSwapObjectRelease: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSwapObjectVolatile: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSwapByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSwapByteAcquire: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSwapByteRelease: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSwapByteVolatile: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSwapShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSwapShortAcquire: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSwapShortRelease: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSwapShortVolatile: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSwapInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSwapIntAcquire: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSwapIntRelease: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSwapIntVolatile: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSwapLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSwapLongAcquire: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSwapLongRelease: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSwapLongVolatile: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSetObjectPlain: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSetObjectAcquire: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSetObjectRelease: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSetObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSetBytePlain: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSetByteAcquire: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSetByteRelease: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSetByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSetShortPlain: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSetShortAcquire: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSetShortRelease: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSetShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSetIntPlain: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSetIntAcquire: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSetIntRelease: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSetInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_weakCompareAndSetLongPlain: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Relaxed);
case vmIntrinsics::_weakCompareAndSetLongAcquire: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Acquire);
case vmIntrinsics::_weakCompareAndSetLongRelease: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Release);
case vmIntrinsics::_weakCompareAndSetLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Volatile);
case vmIntrinsics::_compareAndExchangeObjectVolatile: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeObjectAcquire: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Acquire);
case vmIntrinsics::_compareAndExchangeObjectRelease: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Release);
case vmIntrinsics::_compareAndExchangeByteVolatile: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeByteAcquire: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Acquire);
case vmIntrinsics::_compareAndExchangeByteRelease: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Release);
case vmIntrinsics::_compareAndExchangeShortVolatile: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeShortAcquire: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Acquire);
case vmIntrinsics::_compareAndExchangeShortRelease: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Release);
case vmIntrinsics::_compareAndExchangeIntVolatile: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeInt: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeIntAcquire: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Acquire);
case vmIntrinsics::_compareAndExchangeIntRelease: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Release);
case vmIntrinsics::_compareAndExchangeLongVolatile: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeLong: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Volatile);
case vmIntrinsics::_compareAndExchangeLongAcquire: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Acquire);
case vmIntrinsics::_compareAndExchangeLongRelease: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Release);
@@ -2587,23 +2587,26 @@ bool LibraryCallKit::inline_unsafe_access(bool is_store, const BasicType type, c
//
// LS_cmp_swap:
//
// boolean compareAndSwapObject(Object o, long offset, Object expected, Object x);
// boolean compareAndSwapInt( Object o, long offset, int expected, int x);
// boolean compareAndSwapLong( Object o, long offset, long expected, long x);
// boolean compareAndSetObject(Object o, long offset, Object expected, Object x);
// boolean compareAndSetInt( Object o, long offset, int expected, int x);
// boolean compareAndSetLong( Object o, long offset, long expected, long x);
//
// LS_cmp_swap_weak:
//
// boolean weakCompareAndSwapObject( Object o, long offset, Object expected, Object x);
// boolean weakCompareAndSwapObjectAcquire(Object o, long offset, Object expected, Object x);
// boolean weakCompareAndSwapObjectRelease(Object o, long offset, Object expected, Object x);
// boolean weakCompareAndSetObject( Object o, long offset, Object expected, Object x);
// boolean weakCompareAndSetObjectPlain( Object o, long offset, Object expected, Object x);
// boolean weakCompareAndSetObjectAcquire(Object o, long offset, Object expected, Object x);
// boolean weakCompareAndSetObjectRelease(Object o, long offset, Object expected, Object x);
//
// boolean weakCompareAndSwapInt( Object o, long offset, int expected, int x);
// boolean weakCompareAndSwapIntAcquire( Object o, long offset, int expected, int x);
// boolean weakCompareAndSwapIntRelease( Object o, long offset, int expected, int x);
// boolean weakCompareAndSetInt( Object o, long offset, int expected, int x);
// boolean weakCompareAndSetIntPlain( Object o, long offset, int expected, int x);
// boolean weakCompareAndSetIntAcquire( Object o, long offset, int expected, int x);
// boolean weakCompareAndSetIntRelease( Object o, long offset, int expected, int x);
//
// boolean weakCompareAndSwapLong( Object o, long offset, long expected, long x);
// boolean weakCompareAndSwapLongAcquire( Object o, long offset, long expected, long x);
// boolean weakCompareAndSwapLongRelease( Object o, long offset, long expected, long x);
// boolean weakCompareAndSetLong( Object o, long offset, long expected, long x);
// boolean weakCompareAndSetLongPlain( Object o, long offset, long expected, long x);
// boolean weakCompareAndSetLongAcquire( Object o, long offset, long expected, long x);
// boolean weakCompareAndSetLongRelease( Object o, long offset, long expected, long x);
//
// LS_cmp_exchange:
//
@@ -4965,7 +4968,7 @@ bool LibraryCallKit::inline_arraycopy() {
// See arraycopy_restore_alloc_state() comment
// if alloc == NULL we don't have to worry about a tightly coupled allocation so we can emit all needed guards
// if saved_jvms != NULL (then alloc != NULL) then we can handle guards and a tightly coupled allocation
// if saved_jvms == NULL and alloc != NULL, we cant emit any guards
// if saved_jvms == NULL and alloc != NULL, we can't emit any guards
bool can_emit_guards = (alloc == NULL || saved_jvms != NULL);
// The following tests must be performed

View File

@@ -1860,6 +1860,9 @@ void IdealLoopTree::dump_head( ) const {
if (_required_safept != NULL && _required_safept->size() > 0) {
tty->print(" req={"); _required_safept->dump_simple(); tty->print(" }");
}
if (Verbose) {
tty->print(" body={"); _body.dump_simple(); tty->print(" }");
}
tty->cr();
}

View File

@@ -913,7 +913,11 @@ Node *PhaseIdealLoop::split_if_with_blocks_pre( Node *n ) {
if (n->is_ConstraintCast()) {
Node* dom_cast = n->as_ConstraintCast()->dominating_cast(this);
if (dom_cast != NULL) {
// ConstraintCastNode::dominating_cast() uses node control input to determine domination.
// Node control inputs don't necessarily agree with loop control info (due to
// transformations happened in between), thus additional dominance check is needed
// to keep loop info valid.
if (dom_cast != NULL && is_dominator(get_ctrl(dom_cast), get_ctrl(n))) {
_igvn.replace_node(n, dom_cast);
return dom_cast;
}

View File

@@ -1047,7 +1047,9 @@ void PhaseMacroExpand::process_users_of_allocation(CallNode *alloc) {
// opportunities for allocation elimination
Node* src = ac->in(ArrayCopyNode::Src);
ac->replace_edge(src, top());
if (src->outcnt() == 0) {
// src can be top at this point if src and dest of the
// arraycopy were the same
if (src->outcnt() == 0 && !src->is_top()) {
_igvn.remove_dead_node(src);
}

View File

@@ -718,6 +718,15 @@ Node* PhaseMacroExpand::generate_arraycopy(ArrayCopyNode *ac, AllocateArrayNode*
_igvn.replace_node(_ioproj_fallthrough, *io);
_igvn.replace_node(_fallthroughcatchproj, *ctrl);
#ifdef ASSERT
const TypeOopPtr* dest_t = _igvn.type(dest)->is_oopptr();
if (dest_t->is_known_instance()) {
ArrayCopyNode* ac = NULL;
assert(ArrayCopyNode::may_modify(dest_t, (*ctrl)->in(0)->as_MemBar(), &_igvn, ac), "dependency on arraycopy lost");
assert(ac == NULL, "no arraycopy anymore");
}
#endif
return out_mem;
}
@@ -1139,8 +1148,25 @@ void PhaseMacroExpand::expand_arraycopy_node(ArrayCopyNode *ac) {
const TypeAryPtr* top_src = src_type->isa_aryptr();
const TypeAryPtr* top_dest = dest_type->isa_aryptr();
if (top_src == NULL || top_src->klass() == NULL ||
top_dest == NULL || top_dest->klass() == NULL) {
BasicType src_elem = T_CONFLICT;
BasicType dest_elem = T_CONFLICT;
if (top_dest != NULL && top_dest->klass() != NULL) {
dest_elem = top_dest->klass()->as_array_klass()->element_type()->basic_type();
}
if (top_src != NULL && top_src->klass() != NULL) {
src_elem = top_src->klass()->as_array_klass()->element_type()->basic_type();
}
if (src_elem == T_ARRAY) src_elem = T_OBJECT;
if (dest_elem == T_ARRAY) dest_elem = T_OBJECT;
if (ac->is_arraycopy_validated() &&
dest_elem != T_CONFLICT &&
src_elem == T_CONFLICT) {
src_elem = dest_elem;
}
if (src_elem == T_CONFLICT || dest_elem == T_CONFLICT) {
// Conservatively insert a memory barrier on all memory slices.
// Do not let writes into the source float below the arraycopy.
{
@@ -1169,13 +1195,11 @@ void PhaseMacroExpand::expand_arraycopy_node(ArrayCopyNode *ac) {
}
return;
}
assert(!ac->is_arraycopy_validated() || (src_elem == dest_elem && dest_elem != T_VOID), "validated but different basic types");
// (2) src and dest arrays must have elements of the same BasicType
// Figure out the size and type of the elements we will be copying.
BasicType src_elem = top_src->klass()->as_array_klass()->element_type()->basic_type();
BasicType dest_elem = top_dest->klass()->as_array_klass()->element_type()->basic_type();
if (src_elem == T_ARRAY) src_elem = T_OBJECT;
if (dest_elem == T_ARRAY) dest_elem = T_OBJECT;
if (src_elem != dest_elem || dest_elem == T_VOID) {
// The component types are not the same or are not recognized. Punt.
// (But, avoid the native method wrapper to JVM_ArrayCopy.)

View File

@@ -908,10 +908,11 @@ Node* LoadNode::can_see_arraycopy_value(Node* st, PhaseTransform* phase) const {
ld->set_req(0, ld_alloc->in(0));
}
} else {
Node* src = ac->in(ArrayCopyNode::Src);
Node* addp = in(MemNode::Address)->clone();
assert(addp->in(AddPNode::Base) == addp->in(AddPNode::Address), "should be");
addp->set_req(AddPNode::Base, ac->in(ArrayCopyNode::Src));
addp->set_req(AddPNode::Address, ac->in(ArrayCopyNode::Src));
addp->set_req(AddPNode::Base, src);
addp->set_req(AddPNode::Address, src);
const TypeAryPtr* ary_t = phase->type(in(MemNode::Address))->isa_aryptr();
BasicType ary_elem = ary_t->klass()->as_array_klass()->element_type()->basic_type();
@@ -928,6 +929,12 @@ Node* LoadNode::can_see_arraycopy_value(Node* st, PhaseTransform* phase) const {
addp->set_req(AddPNode::Offset, offset);
ld->set_req(MemNode::Address, phase->transform(addp));
const TypeX *ld_offs_t = phase->type(offset)->isa_intptr_t();
if (!ac->as_ArrayCopy()->can_replace_dest_load_with_src_load(ld_offs_t->_lo, ld_offs_t->_hi, phase)) {
return NULL;
}
if (in(0) != NULL) {
assert(ac->in(0) != NULL, "alloc must have control");
ld->set_req(0, ac->in(0));

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -378,7 +378,7 @@ UNSAFE_ENTRY(jobject, Unsafe_GetUncompressedObject(JNIEnv *env, jobject unsafe,
// On platforms which do not support atomic compare-and-swap of jlong (8 byte)
// values we have to use a lock-based scheme to enforce atomicity. This has to be
// applied to all Unsafe operations that set the value of a jlong field. Even so
// the compareAndSwapLong operation will not be atomic with respect to direct stores
// the compareAndSetLong operation will not be atomic with respect to direct stores
// to the field from Java code. It is important therefore that any Java code that
// utilizes these Unsafe jlong operations does not perform direct stores. To permit
// direct loads of the field from Java code we must also use Atomic::store within the
@@ -1013,7 +1013,7 @@ UNSAFE_ENTRY(jlong, Unsafe_CompareAndExchangeLong(JNIEnv *env, jobject unsafe, j
#endif
} UNSAFE_END
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject e_h, jobject x_h)) {
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject e_h, jobject x_h)) {
oop x = JNIHandles::resolve(x_h);
oop e = JNIHandles::resolve(e_h);
oop p = JNIHandles::resolve(obj);
@@ -1028,14 +1028,14 @@ UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapObject(JNIEnv *env, jobject unsafe,
return true;
} UNSAFE_END
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapInt(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jint e, jint x)) {
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetInt(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jint e, jint x)) {
oop p = JNIHandles::resolve(obj);
jint* addr = (jint *)index_oop_from_field_offset_long(p, offset);
return (jint)(Atomic::cmpxchg(x, addr, e)) == e;
} UNSAFE_END
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong e, jlong x)) {
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong e, jlong x)) {
Handle p(THREAD, JNIHandles::resolve(obj));
jlong* addr = (jlong*)index_oop_from_field_offset_long(p(), offset);
@@ -1194,12 +1194,12 @@ static JNINativeMethod jdk_internal_misc_Unsafe_methods[] = {
{CC "defineClass0", CC "(" DC_Args ")" CLS, FN_PTR(Unsafe_DefineClass0)},
{CC "allocateInstance", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_AllocateInstance)},
{CC "throwException", CC "(" THR ")V", FN_PTR(Unsafe_ThrowException)},
{CC "compareAndSwapObject", CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSwapObject)},
{CC "compareAndSwapInt", CC "(" OBJ "J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)},
{CC "compareAndSwapLong", CC "(" OBJ "J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)},
{CC "compareAndExchangeObjectVolatile", CC "(" OBJ "J" OBJ "" OBJ ")" OBJ, FN_PTR(Unsafe_CompareAndExchangeObject)},
{CC "compareAndExchangeIntVolatile", CC "(" OBJ "J""I""I"")I", FN_PTR(Unsafe_CompareAndExchangeInt)},
{CC "compareAndExchangeLongVolatile", CC "(" OBJ "J""J""J"")J", FN_PTR(Unsafe_CompareAndExchangeLong)},
{CC "compareAndSetObject",CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSetObject)},
{CC "compareAndSetInt", CC "(" OBJ "J""I""I"")Z", FN_PTR(Unsafe_CompareAndSetInt)},
{CC "compareAndSetLong", CC "(" OBJ "J""J""J"")Z", FN_PTR(Unsafe_CompareAndSetLong)},
{CC "compareAndExchangeObject", CC "(" OBJ "J" OBJ "" OBJ ")" OBJ, FN_PTR(Unsafe_CompareAndExchangeObject)},
{CC "compareAndExchangeInt", CC "(" OBJ "J""I""I"")I", FN_PTR(Unsafe_CompareAndExchangeInt)},
{CC "compareAndExchangeLong", CC "(" OBJ "J""J""J"")J", FN_PTR(Unsafe_CompareAndExchangeLong)},
{CC "park", CC "(ZJ)V", FN_PTR(Unsafe_Park)},
{CC "unpark", CC "(" OBJ ")V", FN_PTR(Unsafe_Unpark)},

View File

@@ -549,7 +549,7 @@ address SharedRuntime::get_poll_stub(address pc) {
CodeBlob *cb = CodeCache::find_blob(pc);
// Should be an nmethod
assert(cb && cb->is_compiled(), "safepoint polling: pc must refer to an nmethod");
guarantee(cb != NULL && cb->is_compiled(), "safepoint polling: pc must refer to an nmethod");
// Look up the relocation information
assert(((CompiledMethod*)cb)->is_at_poll_or_poll_return(pc),
@@ -1802,7 +1802,7 @@ bool SharedRuntime::should_fixup_call_destination(address destination, address e
if (destination != entry_point) {
CodeBlob* callee = CodeCache::find_blob(destination);
// callee == cb seems weird. It means calling interpreter thru stub.
if (callee == cb || callee->is_adapter_blob()) {
if (callee != NULL && (callee == cb || callee->is_adapter_blob())) {
// static call or optimized virtual
if (TraceCallFixup) {
tty->print("fixup callsite at " INTPTR_FORMAT " to compiled code for", p2i(caller_pc));
@@ -1851,7 +1851,7 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(Method* method, address cal
// ask me how I know this...
CodeBlob* cb = CodeCache::find_blob(caller_pc);
if (!cb->is_compiled() || entry_point == moop->get_c2i_entry()) {
if (cb == NULL || !cb->is_compiled() || entry_point == moop->get_c2i_entry()) {
return;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -66,7 +66,7 @@ bool SharkIntrinsics::is_intrinsic(ciMethod *target) {
return true;
// Unsafe
case vmIntrinsics::_compareAndSwapInt:
case vmIntrinsics::_compareAndSetInt:
return true;
default:
@@ -140,8 +140,8 @@ void SharkIntrinsics::do_intrinsic() {
break;
// Unsafe
case vmIntrinsics::_compareAndSwapInt:
do_Unsafe_compareAndSwapInt();
case vmIntrinsics::_compareAndSetInt:
do_Unsafe_compareAndSetInt();
break;
default:
@@ -241,7 +241,7 @@ void SharkIntrinsics::do_Thread_currentThread() {
true));
}
void SharkIntrinsics::do_Unsafe_compareAndSwapInt() {
void SharkIntrinsics::do_Unsafe_compareAndSetInt() {
// Pop the arguments
Value *x = state()->pop()->jint_value();
Value *e = state()->pop()->jint_value();

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -58,7 +58,7 @@ class SharkIntrinsics : public SharkTargetInvariants {
void do_Object_getClass();
void do_System_currentTimeMillis();
void do_Thread_currentThread();
void do_Unsafe_compareAndSwapInt();
void do_Unsafe_compareAndSetInt();
};
#endif // SHARE_VM_SHARK_SHARKINTRINSICS_HPP

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1095,8 +1095,11 @@ inline intptr_t bitfield(intptr_t x, int start_bit_no, int field_length) {
#undef min
#endif
#define max(a,b) Do_not_use_max_use_MAX2_instead
#define min(a,b) Do_not_use_min_use_MIN2_instead
// The following defines serve the purpose of preventing use of accidentally
// included min max macros from compiling, while continuing to allow innocent
// min and max identifiers in the code to compile as intended.
#define max max
#define min min
// It is necessary to use templates here. Having normal overloaded
// functions does not work because it is necessary to provide both 32-

View File

@@ -0,0 +1,106 @@
/*
* Copyright (c) 2017, Red Hat, Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @bug 8179678
* @summary ArrayCopy with same src and dst can cause incorrect execution or compiler crash
*
* @run main/othervm -XX:CompileCommand=compileonly,TestACSameSrcDst::test* TestACSameSrcDst
*
*/
public class TestACSameSrcDst {
static int test1(int[] src, int[] dst) {
System.arraycopy(src, 5, dst, 0, 10);
// this shouldn't be transformed to src[5] because the copy
// can modify src[5] if src and dst are the same.
return dst[0];
}
static int test2(int[] src) {
System.arraycopy(src, 0, src, 0, 10);
// same source and destination. If load from destination is
// transformed to load of source, the compiler performs that
// optimization in an infinite loop.
return src[0];
}
static int test3() {
int[] src = new int[15];
src[5] = 0x42;
System.arraycopy(src, 5, src, 0, 10);
// That load can't bypass the arraycopy
return src[0];
}
static int test4() {
int[] src = new int[15];
System.arraycopy(src, 0, src, 5, 10);
return src[0];
}
// The dst[0] load can't bypass the arraycopy. After ArrayCopyNode
// is expanded, C2 looks for a stub call on the control paths of
// the array copy subgraph to decide whether the load's memory
// input can bypass the arraycopy. This test verifies the case of
// a source array that's not declared as an array.
static int test5(Object src, int l, boolean flag) {
int[] dst = new int[10];
if (flag) {
dst[0] = 0x42;
System.arraycopy(src, 0, dst, 0, l);
return dst[0];
}
return 0;
}
public static void main(String[] args) {
int[] array = new int[15];
for (int i = 0; i < 20000; i++) {
int res;
for (int j = 0; j < array.length; j++) {
array[j] = j;
}
int expected = array[5];
res = test1(array, array);
if (res != expected) {
throw new RuntimeException("bad result: " + res + " != " + expected);
}
test2(array);
res = test3();
if (res != 0x42) {
throw new RuntimeException("bad result: " + res + " != " + 0x42);
}
test4();
for (int j = 0; j < array.length; j++) {
array[j] = j;
}
res = test5(array, 10, (i%2) == 0);
if (res != 0) {
throw new RuntimeException("bad result: " + res + " != " + 0);
}
}
}
}

View File

@@ -773,221 +773,221 @@ public class TestIntUnsafeCAS {
static void test_ci(int[] a) {
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), -1, -123);
unsafe.compareAndSetInt(a, byte_offset(i), -1, -123);
}
}
static void test_vi(int[] a, int b, int old) {
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), old, b);
unsafe.compareAndSetInt(a, byte_offset(i), old, b);
}
}
static void test_cp(int[] a, int[] b) {
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), -123, b[i]);
unsafe.compareAndSetInt(a, byte_offset(i), -123, b[i]);
}
}
static void test_2ci(int[] a, int[] b) {
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), 123, -123);
unsafe.compareAndSwapInt(b, byte_offset(i), 123, -103);
unsafe.compareAndSetInt(a, byte_offset(i), 123, -123);
unsafe.compareAndSetInt(b, byte_offset(i), 123, -103);
}
}
static void test_2vi(int[] a, int[] b, int c, int d) {
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), -123, c);
unsafe.compareAndSwapInt(b, byte_offset(i), -103, d);
unsafe.compareAndSetInt(a, byte_offset(i), -123, c);
unsafe.compareAndSetInt(b, byte_offset(i), -103, d);
}
}
static void test_ci_neg(int[] a, int old) {
for (int i = ARRLEN-1; i >= 0; i-=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), old, -123);
unsafe.compareAndSetInt(a, byte_offset(i), old, -123);
}
}
static void test_vi_neg(int[] a, int b, int old) {
for (int i = ARRLEN-1; i >= 0; i-=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), old, b);
unsafe.compareAndSetInt(a, byte_offset(i), old, b);
}
}
static void test_cp_neg(int[] a, int[] b) {
for (int i = ARRLEN-1; i >= 0; i-=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), -123, b[i]);
unsafe.compareAndSetInt(a, byte_offset(i), -123, b[i]);
}
}
static void test_2ci_neg(int[] a, int[] b) {
for (int i = ARRLEN-1; i >= 0; i-=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), 123, -123);
unsafe.compareAndSwapInt(b, byte_offset(i), 123, -103);
unsafe.compareAndSetInt(a, byte_offset(i), 123, -123);
unsafe.compareAndSetInt(b, byte_offset(i), 123, -103);
}
}
static void test_2vi_neg(int[] a, int[] b, int c, int d) {
for (int i = ARRLEN-1; i >= 0; i-=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), -123, c);
unsafe.compareAndSwapInt(b, byte_offset(i), -103, d);
unsafe.compareAndSetInt(a, byte_offset(i), -123, c);
unsafe.compareAndSetInt(b, byte_offset(i), -103, d);
}
}
static void test_ci_oppos(int[] a, int old) {
int limit = ARRLEN-1;
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(limit-i), old, -123);
unsafe.compareAndSetInt(a, byte_offset(limit-i), old, -123);
}
}
static void test_vi_oppos(int[] a, int b, int old) {
int limit = ARRLEN-1;
for (int i = limit; i >= 0; i-=1) {
unsafe.compareAndSwapInt(a, byte_offset(limit-i), old, b);
unsafe.compareAndSetInt(a, byte_offset(limit-i), old, b);
}
}
static void test_cp_oppos(int[] a, int[] b) {
int limit = ARRLEN-1;
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), -123, b[limit-i]);
unsafe.compareAndSetInt(a, byte_offset(i), -123, b[limit-i]);
}
}
static void test_2ci_oppos(int[] a, int[] b) {
int limit = ARRLEN-1;
for (int i = 0; i < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(limit-i), 123, -123);
unsafe.compareAndSwapInt(b, byte_offset(i), 123, -103);
unsafe.compareAndSetInt(a, byte_offset(limit-i), 123, -123);
unsafe.compareAndSetInt(b, byte_offset(i), 123, -103);
}
}
static void test_2vi_oppos(int[] a, int[] b, int c, int d) {
int limit = ARRLEN-1;
for (int i = limit; i >= 0; i-=1) {
unsafe.compareAndSwapInt(a, byte_offset(i), -123, c);
unsafe.compareAndSwapInt(b, byte_offset(limit-i), -103, d);
unsafe.compareAndSetInt(a, byte_offset(i), -123, c);
unsafe.compareAndSetInt(b, byte_offset(limit-i), -103, d);
}
}
static void test_ci_off(int[] a, int old) {
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), old, -123);
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), old, -123);
}
}
static void test_vi_off(int[] a, int b, int old) {
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), old, b);
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), old, b);
}
}
static void test_cp_off(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), -123, b[i+OFFSET]);
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), -123, b[i+OFFSET]);
}
}
static void test_2ci_off(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), 123, -123);
unsafe.compareAndSwapInt(b, byte_offset(i+OFFSET), 123, -103);
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), 123, -123);
unsafe.compareAndSetInt(b, byte_offset(i+OFFSET), 123, -103);
}
}
static void test_2vi_off(int[] a, int[] b, int c, int d) {
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), -123, c);
unsafe.compareAndSwapInt(b, byte_offset(i+OFFSET), -103, d);
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), -123, c);
unsafe.compareAndSetInt(b, byte_offset(i+OFFSET), -103, d);
}
}
static void test_ci_inv(int[] a, int k, int old) {
for (int i = 0; i < ARRLEN-k; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+k), old, -123);
unsafe.compareAndSetInt(a, byte_offset(i+k), old, -123);
}
}
static void test_vi_inv(int[] a, int b, int k, int old) {
for (int i = 0; i < ARRLEN-k; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+k), old, b);
unsafe.compareAndSetInt(a, byte_offset(i+k), old, b);
}
}
static void test_cp_inv(int[] a, int[] b, int k) {
for (int i = 0; i < ARRLEN-k; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+k), -123, b[i+k]);
unsafe.compareAndSetInt(a, byte_offset(i+k), -123, b[i+k]);
}
}
static void test_2ci_inv(int[] a, int[] b, int k) {
for (int i = 0; i < ARRLEN-k; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+k), 123, -123);
unsafe.compareAndSwapInt(b, byte_offset(i+k), 123, -103);
unsafe.compareAndSetInt(a, byte_offset(i+k), 123, -123);
unsafe.compareAndSetInt(b, byte_offset(i+k), 123, -103);
}
}
static void test_2vi_inv(int[] a, int[] b, int c, int d, int k) {
for (int i = 0; i < ARRLEN-k; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+k), -123, c);
unsafe.compareAndSwapInt(b, byte_offset(i+k), -103, d);
unsafe.compareAndSetInt(a, byte_offset(i+k), -123, c);
unsafe.compareAndSetInt(b, byte_offset(i+k), -103, d);
}
}
static void test_ci_scl(int[] a, int old) {
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), old, -123);
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), old, -123);
}
}
static void test_vi_scl(int[] a, int b, int old) {
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), old, b);
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), old, b);
}
}
static void test_cp_scl(int[] a, int[] b) {
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), -123, b[i*SCALE]);
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), -123, b[i*SCALE]);
}
}
static void test_2ci_scl(int[] a, int[] b) {
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), 123, -123);
unsafe.compareAndSwapInt(b, byte_offset(i*SCALE), 123, -103);
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), 123, -123);
unsafe.compareAndSetInt(b, byte_offset(i*SCALE), 123, -103);
}
}
static void test_2vi_scl(int[] a, int[] b, int c, int d) {
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), -123, c);
unsafe.compareAndSwapInt(b, byte_offset(i*SCALE), -103, d);
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), -123, c);
unsafe.compareAndSetInt(b, byte_offset(i*SCALE), -103, d);
}
}
static void test_cp_alndst(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+ALIGN_OFF), -1, b[i]);
unsafe.compareAndSetInt(a, byte_offset(i+ALIGN_OFF), -1, b[i]);
}
}
static void test_cp_alnsrc(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
int old = unsafe.getIntVolatile(a, byte_offset(i));
unsafe.compareAndSwapInt(a, byte_offset(i), old, b[i+ALIGN_OFF]);
unsafe.compareAndSetInt(a, byte_offset(i), old, b[i+ALIGN_OFF]);
}
}
static void test_2ci_aln(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+ALIGN_OFF), -1, -123);
unsafe.compareAndSetInt(a, byte_offset(i+ALIGN_OFF), -1, -123);
int old = unsafe.getIntVolatile(b, byte_offset(i));
unsafe.compareAndSwapInt(b, byte_offset(i), old, -103);
unsafe.compareAndSetInt(b, byte_offset(i), old, -103);
}
}
static void test_2vi_aln(int[] a, int[] b, int c, int d) {
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
int old = unsafe.getIntVolatile(a, byte_offset(i));
unsafe.compareAndSwapInt(a, byte_offset(i), old, c);
unsafe.compareAndSetInt(a, byte_offset(i), old, c);
old = unsafe.getIntVolatile(b, byte_offset(i+ALIGN_OFF));
unsafe.compareAndSwapInt(b, byte_offset(i+ALIGN_OFF), old, d);
unsafe.compareAndSetInt(b, byte_offset(i+ALIGN_OFF), old, d);
}
}
static void test_cp_unalndst(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+UNALIGN_OFF), -1, b[i]);
unsafe.compareAndSetInt(a, byte_offset(i+UNALIGN_OFF), -1, b[i]);
}
}
static void test_cp_unalnsrc(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
int old = unsafe.getIntVolatile(a, byte_offset(i));
unsafe.compareAndSwapInt(a, byte_offset(i), old, b[i+UNALIGN_OFF]);
unsafe.compareAndSetInt(a, byte_offset(i), old, b[i+UNALIGN_OFF]);
}
}
static void test_2ci_unaln(int[] a, int[] b) {
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
unsafe.compareAndSwapInt(a, byte_offset(i+UNALIGN_OFF), -1, -123);
unsafe.compareAndSetInt(a, byte_offset(i+UNALIGN_OFF), -1, -123);
int old = unsafe.getIntVolatile(b, byte_offset(i));
unsafe.compareAndSwapInt(b, byte_offset(i), old, -103);
unsafe.compareAndSetInt(b, byte_offset(i), old, -103);
}
}
static void test_2vi_unaln(int[] a, int[] b, int c, int d) {
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
int old = unsafe.getIntVolatile(a, byte_offset(i));
unsafe.compareAndSwapInt(a, byte_offset(i), old, c);
unsafe.compareAndSetInt(a, byte_offset(i), old, c);
old = unsafe.getIntVolatile(b, byte_offset(i+UNALIGN_OFF));
unsafe.compareAndSwapInt(b, byte_offset(i+UNALIGN_OFF), old, d);
unsafe.compareAndSetInt(b, byte_offset(i+UNALIGN_OFF), old, d);
}
}

View File

@@ -1,4 +1,5 @@
/*
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, Red Hat, Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -53,7 +54,7 @@ public class TestCAEAntiDep {
}
static int m(TestCAEAntiDep test, Object expected, Object x) {
C old = (C)UNSAFE.compareAndExchangeObjectVolatile(test, O_OFFSET, expected, x);
C old = (C)UNSAFE.compareAndExchangeObject(test, O_OFFSET, expected, x);
int res = old.f1;
old.f1 = 0x42;
return res;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -72,9 +72,8 @@ public class UnsafeTwoCASLong {
}
static void testAccess(Object base, long offset) {
UNSAFE.compareAndSwapLong(base, offset, 1L, 2L);
UNSAFE.compareAndSwapLong(base, offset, 2L, 1L);
UNSAFE.compareAndSetLong(base, offset, 1L, 2L);
UNSAFE.compareAndSetLong(base, offset, 2L, 1L);
}
}

View File

@@ -64,7 +64,7 @@ public class UnsafeAccess {
static Object helperUnsafeLoadStore(Object o, boolean isObjArray) {
if (isObjArray) {
Object o1 = U.getObject(o, off);
U.compareAndSwapObject(o, off, o1, new Object());
U.compareAndSetObject(o, off, o1, new Object());
}
return o;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -151,32 +151,32 @@ public class JdkInternalMiscUnsafeAccessTestBoolean {
// Compare
{
boolean r = UNSAFE.compareAndSwapBoolean(base, offset, true, false);
assertEquals(r, true, "success compareAndSwap boolean");
boolean r = UNSAFE.compareAndSetBoolean(base, offset, true, false);
assertEquals(r, true, "success compareAndSet boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, false, "success compareAndSwap boolean value");
assertEquals(x, false, "success compareAndSet boolean value");
}
{
boolean r = UNSAFE.compareAndSwapBoolean(base, offset, true, false);
assertEquals(r, false, "failing compareAndSwap boolean");
boolean r = UNSAFE.compareAndSetBoolean(base, offset, true, false);
assertEquals(r, false, "failing compareAndSet boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, false, "failing compareAndSwap boolean value");
assertEquals(x, false, "failing compareAndSet boolean value");
}
// Advanced compare
{
boolean r = UNSAFE.compareAndExchangeBooleanVolatile(base, offset, false, true);
assertEquals(r, false, "success compareAndExchangeVolatile boolean");
boolean r = UNSAFE.compareAndExchangeBoolean(base, offset, false, true);
assertEquals(r, false, "success compareAndExchange boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, true, "success compareAndExchangeVolatile boolean value");
assertEquals(x, true, "success compareAndExchange boolean value");
}
{
boolean r = UNSAFE.compareAndExchangeBooleanVolatile(base, offset, false, false);
assertEquals(r, true, "failing compareAndExchangeVolatile boolean");
boolean r = UNSAFE.compareAndExchangeBoolean(base, offset, false, false);
assertEquals(r, true, "failing compareAndExchange boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, true, "failing compareAndExchangeVolatile boolean value");
assertEquals(x, true, "failing compareAndExchange boolean value");
}
{
@@ -210,41 +210,41 @@ public class JdkInternalMiscUnsafeAccessTestBoolean {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapBoolean(base, offset, true, false);
success = UNSAFE.weakCompareAndSetBooleanPlain(base, offset, true, false);
}
assertEquals(success, true, "weakCompareAndSwap boolean");
assertEquals(success, true, "weakCompareAndSetPlain boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, false, "weakCompareAndSwap boolean value");
assertEquals(x, false, "weakCompareAndSetPlain boolean value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapBooleanAcquire(base, offset, false, true);
success = UNSAFE.weakCompareAndSetBooleanAcquire(base, offset, false, true);
}
assertEquals(success, true, "weakCompareAndSwapAcquire boolean");
assertEquals(success, true, "weakCompareAndSetAcquire boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, true, "weakCompareAndSwapAcquire boolean");
assertEquals(x, true, "weakCompareAndSetAcquire boolean");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapBooleanRelease(base, offset, true, false);
success = UNSAFE.weakCompareAndSetBooleanRelease(base, offset, true, false);
}
assertEquals(success, true, "weakCompareAndSwapRelease boolean");
assertEquals(success, true, "weakCompareAndSetRelease boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, false, "weakCompareAndSwapRelease boolean");
assertEquals(x, false, "weakCompareAndSetRelease boolean");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapBooleanVolatile(base, offset, false, true);
success = UNSAFE.weakCompareAndSetBoolean(base, offset, false, true);
}
assertEquals(success, true, "weakCompareAndSwapVolatile boolean");
assertEquals(success, true, "weakCompareAndSet boolean");
boolean x = UNSAFE.getBoolean(base, offset);
assertEquals(x, true, "weakCompareAndSwapVolatile boolean");
assertEquals(x, true, "weakCompareAndSet boolean");
}
UNSAFE.putBoolean(base, offset, false);
@@ -260,4 +260,3 @@ public class JdkInternalMiscUnsafeAccessTestBoolean {
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -180,32 +180,32 @@ public class JdkInternalMiscUnsafeAccessTestByte {
// Compare
{
boolean r = UNSAFE.compareAndSwapByte(base, offset, (byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSwap byte");
boolean r = UNSAFE.compareAndSetByte(base, offset, (byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSet byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x23, "success compareAndSwap byte value");
assertEquals(x, (byte)0x23, "success compareAndSet byte value");
}
{
boolean r = UNSAFE.compareAndSwapByte(base, offset, (byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSwap byte");
boolean r = UNSAFE.compareAndSetByte(base, offset, (byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSet byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x23, "failing compareAndSwap byte value");
assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
}
// Advanced compare
{
byte r = UNSAFE.compareAndExchangeByteVolatile(base, offset, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchangeVolatile byte");
byte r = UNSAFE.compareAndExchangeByte(base, offset, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x01, "success compareAndExchangeVolatile byte value");
assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
}
{
byte r = UNSAFE.compareAndExchangeByteVolatile(base, offset, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchangeVolatile byte");
byte r = UNSAFE.compareAndExchangeByte(base, offset, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x01, "failing compareAndExchangeVolatile byte value");
assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
}
{
@@ -239,41 +239,41 @@ public class JdkInternalMiscUnsafeAccessTestByte {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapByte(base, offset, (byte)0x01, (byte)0x23);
success = UNSAFE.weakCompareAndSetBytePlain(base, offset, (byte)0x01, (byte)0x23);
}
assertEquals(success, true, "weakCompareAndSwap byte");
assertEquals(success, true, "weakCompareAndSetPlain byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x23, "weakCompareAndSwap byte value");
assertEquals(x, (byte)0x23, "weakCompareAndSetPlain byte value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapByteAcquire(base, offset, (byte)0x23, (byte)0x01);
success = UNSAFE.weakCompareAndSetByteAcquire(base, offset, (byte)0x23, (byte)0x01);
}
assertEquals(success, true, "weakCompareAndSwapAcquire byte");
assertEquals(success, true, "weakCompareAndSetAcquire byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x01, "weakCompareAndSwapAcquire byte");
assertEquals(x, (byte)0x01, "weakCompareAndSetAcquire byte");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapByteRelease(base, offset, (byte)0x01, (byte)0x23);
success = UNSAFE.weakCompareAndSetByteRelease(base, offset, (byte)0x01, (byte)0x23);
}
assertEquals(success, true, "weakCompareAndSwapRelease byte");
assertEquals(success, true, "weakCompareAndSetRelease byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x23, "weakCompareAndSwapRelease byte");
assertEquals(x, (byte)0x23, "weakCompareAndSetRelease byte");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapByteVolatile(base, offset, (byte)0x23, (byte)0x01);
success = UNSAFE.weakCompareAndSetByte(base, offset, (byte)0x23, (byte)0x01);
}
assertEquals(success, true, "weakCompareAndSwapVolatile byte");
assertEquals(success, true, "weakCompareAndSet byte");
byte x = UNSAFE.getByte(base, offset);
assertEquals(x, (byte)0x01, "weakCompareAndSwapVolatile byte");
assertEquals(x, (byte)0x01, "weakCompareAndSet byte");
}
UNSAFE.putByte(base, offset, (byte)0x23);
@@ -306,4 +306,3 @@ public class JdkInternalMiscUnsafeAccessTestByte {
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestChar {
// Compare
{
boolean r = UNSAFE.compareAndSwapChar(base, offset, '\u0123', '\u4567');
assertEquals(r, true, "success compareAndSwap char");
boolean r = UNSAFE.compareAndSetChar(base, offset, '\u0123', '\u4567');
assertEquals(r, true, "success compareAndSet char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u4567', "success compareAndSwap char value");
assertEquals(x, '\u4567', "success compareAndSet char value");
}
{
boolean r = UNSAFE.compareAndSwapChar(base, offset, '\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSwap char");
boolean r = UNSAFE.compareAndSetChar(base, offset, '\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSet char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u4567', "failing compareAndSwap char value");
assertEquals(x, '\u4567', "failing compareAndSet char value");
}
// Advanced compare
{
char r = UNSAFE.compareAndExchangeCharVolatile(base, offset, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchangeVolatile char");
char r = UNSAFE.compareAndExchangeChar(base, offset, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchange char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u0123', "success compareAndExchangeVolatile char value");
assertEquals(x, '\u0123', "success compareAndExchange char value");
}
{
char r = UNSAFE.compareAndExchangeCharVolatile(base, offset, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchangeVolatile char");
char r = UNSAFE.compareAndExchangeChar(base, offset, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchange char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u0123', "failing compareAndExchangeVolatile char value");
assertEquals(x, '\u0123', "failing compareAndExchange char value");
}
{
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestChar {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapChar(base, offset, '\u0123', '\u4567');
success = UNSAFE.weakCompareAndSetCharPlain(base, offset, '\u0123', '\u4567');
}
assertEquals(success, true, "weakCompareAndSwap char");
assertEquals(success, true, "weakCompareAndSetPlain char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u4567', "weakCompareAndSwap char value");
assertEquals(x, '\u4567', "weakCompareAndSetPlain char value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapCharAcquire(base, offset, '\u4567', '\u0123');
success = UNSAFE.weakCompareAndSetCharAcquire(base, offset, '\u4567', '\u0123');
}
assertEquals(success, true, "weakCompareAndSwapAcquire char");
assertEquals(success, true, "weakCompareAndSetAcquire char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u0123', "weakCompareAndSwapAcquire char");
assertEquals(x, '\u0123', "weakCompareAndSetAcquire char");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapCharRelease(base, offset, '\u0123', '\u4567');
success = UNSAFE.weakCompareAndSetCharRelease(base, offset, '\u0123', '\u4567');
}
assertEquals(success, true, "weakCompareAndSwapRelease char");
assertEquals(success, true, "weakCompareAndSetRelease char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u4567', "weakCompareAndSwapRelease char");
assertEquals(x, '\u4567', "weakCompareAndSetRelease char");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapCharVolatile(base, offset, '\u4567', '\u0123');
success = UNSAFE.weakCompareAndSetChar(base, offset, '\u4567', '\u0123');
}
assertEquals(success, true, "weakCompareAndSwapVolatile char");
assertEquals(success, true, "weakCompareAndSet char");
char x = UNSAFE.getChar(base, offset);
assertEquals(x, '\u0123', "weakCompareAndSwapVolatile char");
assertEquals(x, '\u0123', "weakCompareAndSet char");
}
UNSAFE.putChar(base, offset, '\u4567');
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestChar {
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -180,32 +180,32 @@ public class JdkInternalMiscUnsafeAccessTestDouble {
// Compare
{
boolean r = UNSAFE.compareAndSwapDouble(base, offset, 1.0d, 2.0d);
assertEquals(r, true, "success compareAndSwap double");
boolean r = UNSAFE.compareAndSetDouble(base, offset, 1.0d, 2.0d);
assertEquals(r, true, "success compareAndSet double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 2.0d, "success compareAndSwap double value");
assertEquals(x, 2.0d, "success compareAndSet double value");
}
{
boolean r = UNSAFE.compareAndSwapDouble(base, offset, 1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSwap double");
boolean r = UNSAFE.compareAndSetDouble(base, offset, 1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSet double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 2.0d, "failing compareAndSwap double value");
assertEquals(x, 2.0d, "failing compareAndSet double value");
}
// Advanced compare
{
double r = UNSAFE.compareAndExchangeDoubleVolatile(base, offset, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchangeVolatile double");
double r = UNSAFE.compareAndExchangeDouble(base, offset, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchange double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 1.0d, "success compareAndExchangeVolatile double value");
assertEquals(x, 1.0d, "success compareAndExchange double value");
}
{
double r = UNSAFE.compareAndExchangeDoubleVolatile(base, offset, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchangeVolatile double");
double r = UNSAFE.compareAndExchangeDouble(base, offset, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchange double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 1.0d, "failing compareAndExchangeVolatile double value");
assertEquals(x, 1.0d, "failing compareAndExchange double value");
}
{
@@ -239,41 +239,41 @@ public class JdkInternalMiscUnsafeAccessTestDouble {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapDouble(base, offset, 1.0d, 2.0d);
success = UNSAFE.weakCompareAndSetDoublePlain(base, offset, 1.0d, 2.0d);
}
assertEquals(success, true, "weakCompareAndSwap double");
assertEquals(success, true, "weakCompareAndSetPlain double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 2.0d, "weakCompareAndSwap double value");
assertEquals(x, 2.0d, "weakCompareAndSetPlain double value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapDoubleAcquire(base, offset, 2.0d, 1.0d);
success = UNSAFE.weakCompareAndSetDoubleAcquire(base, offset, 2.0d, 1.0d);
}
assertEquals(success, true, "weakCompareAndSwapAcquire double");
assertEquals(success, true, "weakCompareAndSetAcquire double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 1.0d, "weakCompareAndSwapAcquire double");
assertEquals(x, 1.0d, "weakCompareAndSetAcquire double");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapDoubleRelease(base, offset, 1.0d, 2.0d);
success = UNSAFE.weakCompareAndSetDoubleRelease(base, offset, 1.0d, 2.0d);
}
assertEquals(success, true, "weakCompareAndSwapRelease double");
assertEquals(success, true, "weakCompareAndSetRelease double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 2.0d, "weakCompareAndSwapRelease double");
assertEquals(x, 2.0d, "weakCompareAndSetRelease double");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapDoubleVolatile(base, offset, 2.0d, 1.0d);
success = UNSAFE.weakCompareAndSetDouble(base, offset, 2.0d, 1.0d);
}
assertEquals(success, true, "weakCompareAndSwapVolatile double");
assertEquals(success, true, "weakCompareAndSet double");
double x = UNSAFE.getDouble(base, offset);
assertEquals(x, 1.0d, "weakCompareAndSwapVolatile double");
assertEquals(x, 1.0d, "weakCompareAndSet double");
}
UNSAFE.putDouble(base, offset, 2.0d);
@@ -306,4 +306,3 @@ public class JdkInternalMiscUnsafeAccessTestDouble {
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -180,32 +180,32 @@ public class JdkInternalMiscUnsafeAccessTestFloat {
// Compare
{
boolean r = UNSAFE.compareAndSwapFloat(base, offset, 1.0f, 2.0f);
assertEquals(r, true, "success compareAndSwap float");
boolean r = UNSAFE.compareAndSetFloat(base, offset, 1.0f, 2.0f);
assertEquals(r, true, "success compareAndSet float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 2.0f, "success compareAndSwap float value");
assertEquals(x, 2.0f, "success compareAndSet float value");
}
{
boolean r = UNSAFE.compareAndSwapFloat(base, offset, 1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSwap float");
boolean r = UNSAFE.compareAndSetFloat(base, offset, 1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSet float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 2.0f, "failing compareAndSwap float value");
assertEquals(x, 2.0f, "failing compareAndSet float value");
}
// Advanced compare
{
float r = UNSAFE.compareAndExchangeFloatVolatile(base, offset, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchangeVolatile float");
float r = UNSAFE.compareAndExchangeFloat(base, offset, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchange float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 1.0f, "success compareAndExchangeVolatile float value");
assertEquals(x, 1.0f, "success compareAndExchange float value");
}
{
float r = UNSAFE.compareAndExchangeFloatVolatile(base, offset, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchangeVolatile float");
float r = UNSAFE.compareAndExchangeFloat(base, offset, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchange float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 1.0f, "failing compareAndExchangeVolatile float value");
assertEquals(x, 1.0f, "failing compareAndExchange float value");
}
{
@@ -239,41 +239,41 @@ public class JdkInternalMiscUnsafeAccessTestFloat {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapFloat(base, offset, 1.0f, 2.0f);
success = UNSAFE.weakCompareAndSetFloatPlain(base, offset, 1.0f, 2.0f);
}
assertEquals(success, true, "weakCompareAndSwap float");
assertEquals(success, true, "weakCompareAndSetPlain float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 2.0f, "weakCompareAndSwap float value");
assertEquals(x, 2.0f, "weakCompareAndSetPlain float value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapFloatAcquire(base, offset, 2.0f, 1.0f);
success = UNSAFE.weakCompareAndSetFloatAcquire(base, offset, 2.0f, 1.0f);
}
assertEquals(success, true, "weakCompareAndSwapAcquire float");
assertEquals(success, true, "weakCompareAndSetAcquire float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 1.0f, "weakCompareAndSwapAcquire float");
assertEquals(x, 1.0f, "weakCompareAndSetAcquire float");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapFloatRelease(base, offset, 1.0f, 2.0f);
success = UNSAFE.weakCompareAndSetFloatRelease(base, offset, 1.0f, 2.0f);
}
assertEquals(success, true, "weakCompareAndSwapRelease float");
assertEquals(success, true, "weakCompareAndSetRelease float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 2.0f, "weakCompareAndSwapRelease float");
assertEquals(x, 2.0f, "weakCompareAndSetRelease float");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapFloatVolatile(base, offset, 2.0f, 1.0f);
success = UNSAFE.weakCompareAndSetFloat(base, offset, 2.0f, 1.0f);
}
assertEquals(success, true, "weakCompareAndSwapVolatile float");
assertEquals(success, true, "weakCompareAndSet float");
float x = UNSAFE.getFloat(base, offset);
assertEquals(x, 1.0f, "weakCompareAndSwapVolatile float");
assertEquals(x, 1.0f, "weakCompareAndSet float");
}
UNSAFE.putFloat(base, offset, 2.0f);
@@ -306,4 +306,3 @@ public class JdkInternalMiscUnsafeAccessTestFloat {
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestInt {
// Compare
{
boolean r = UNSAFE.compareAndSwapInt(base, offset, 0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSwap int");
boolean r = UNSAFE.compareAndSetInt(base, offset, 0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSet int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x89ABCDEF, "success compareAndSwap int value");
assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
}
{
boolean r = UNSAFE.compareAndSwapInt(base, offset, 0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSwap int");
boolean r = UNSAFE.compareAndSetInt(base, offset, 0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSet int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x89ABCDEF, "failing compareAndSwap int value");
assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
}
// Advanced compare
{
int r = UNSAFE.compareAndExchangeIntVolatile(base, offset, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeVolatile int");
int r = UNSAFE.compareAndExchangeInt(base, offset, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x01234567, "success compareAndExchangeVolatile int value");
assertEquals(x, 0x01234567, "success compareAndExchange int value");
}
{
int r = UNSAFE.compareAndExchangeIntVolatile(base, offset, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchangeVolatile int");
int r = UNSAFE.compareAndExchangeInt(base, offset, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchange int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x01234567, "failing compareAndExchangeVolatile int value");
assertEquals(x, 0x01234567, "failing compareAndExchange int value");
}
{
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestInt {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapInt(base, offset, 0x01234567, 0x89ABCDEF);
success = UNSAFE.weakCompareAndSetIntPlain(base, offset, 0x01234567, 0x89ABCDEF);
}
assertEquals(success, true, "weakCompareAndSwap int");
assertEquals(success, true, "weakCompareAndSetPlain int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x89ABCDEF, "weakCompareAndSwap int value");
assertEquals(x, 0x89ABCDEF, "weakCompareAndSetPlain int value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapIntAcquire(base, offset, 0x89ABCDEF, 0x01234567);
success = UNSAFE.weakCompareAndSetIntAcquire(base, offset, 0x89ABCDEF, 0x01234567);
}
assertEquals(success, true, "weakCompareAndSwapAcquire int");
assertEquals(success, true, "weakCompareAndSetAcquire int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x01234567, "weakCompareAndSwapAcquire int");
assertEquals(x, 0x01234567, "weakCompareAndSetAcquire int");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapIntRelease(base, offset, 0x01234567, 0x89ABCDEF);
success = UNSAFE.weakCompareAndSetIntRelease(base, offset, 0x01234567, 0x89ABCDEF);
}
assertEquals(success, true, "weakCompareAndSwapRelease int");
assertEquals(success, true, "weakCompareAndSetRelease int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x89ABCDEF, "weakCompareAndSwapRelease int");
assertEquals(x, 0x89ABCDEF, "weakCompareAndSetRelease int");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapIntVolatile(base, offset, 0x89ABCDEF, 0x01234567);
success = UNSAFE.weakCompareAndSetInt(base, offset, 0x89ABCDEF, 0x01234567);
}
assertEquals(success, true, "weakCompareAndSwapVolatile int");
assertEquals(success, true, "weakCompareAndSet int");
int x = UNSAFE.getInt(base, offset);
assertEquals(x, 0x01234567, "weakCompareAndSwapVolatile int");
assertEquals(x, 0x01234567, "weakCompareAndSet int");
}
UNSAFE.putInt(base, offset, 0x89ABCDEF);
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestInt {
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestLong {
// Compare
{
boolean r = UNSAFE.compareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSwap long");
boolean r = UNSAFE.compareAndSetLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSet long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSwap long value");
assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
}
{
boolean r = UNSAFE.compareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSwap long");
boolean r = UNSAFE.compareAndSetLong(base, offset, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSet long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSwap long value");
assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
}
// Advanced compare
{
long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeVolatile long");
long r = UNSAFE.compareAndExchangeLong(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeVolatile long value");
assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
}
{
long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeVolatile long");
long r = UNSAFE.compareAndExchangeLong(base, offset, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeVolatile long value");
assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
}
{
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestLong {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
success = UNSAFE.weakCompareAndSetLongPlain(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
}
assertEquals(success, true, "weakCompareAndSwap long");
assertEquals(success, true, "weakCompareAndSetPlain long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSwap long value");
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSetPlain long value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapLongAcquire(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
success = UNSAFE.weakCompareAndSetLongAcquire(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
}
assertEquals(success, true, "weakCompareAndSwapAcquire long");
assertEquals(success, true, "weakCompareAndSetAcquire long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSwapAcquire long");
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSetAcquire long");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapLongRelease(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
success = UNSAFE.weakCompareAndSetLongRelease(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
}
assertEquals(success, true, "weakCompareAndSwapRelease long");
assertEquals(success, true, "weakCompareAndSetRelease long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSwapRelease long");
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSetRelease long");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
success = UNSAFE.weakCompareAndSetLong(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
}
assertEquals(success, true, "weakCompareAndSwapVolatile long");
assertEquals(success, true, "weakCompareAndSet long");
long x = UNSAFE.getLong(base, offset);
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSwapVolatile long");
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSet long");
}
UNSAFE.putLong(base, offset, 0xCAFEBABECAFEBABEL);
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestLong {
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -151,32 +151,32 @@ public class JdkInternalMiscUnsafeAccessTestObject {
// Compare
{
boolean r = UNSAFE.compareAndSwapObject(base, offset, "foo", "bar");
assertEquals(r, true, "success compareAndSwap Object");
boolean r = UNSAFE.compareAndSetObject(base, offset, "foo", "bar");
assertEquals(r, true, "success compareAndSet Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "bar", "success compareAndSwap Object value");
assertEquals(x, "bar", "success compareAndSet Object value");
}
{
boolean r = UNSAFE.compareAndSwapObject(base, offset, "foo", "baz");
assertEquals(r, false, "failing compareAndSwap Object");
boolean r = UNSAFE.compareAndSetObject(base, offset, "foo", "baz");
assertEquals(r, false, "failing compareAndSet Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "bar", "failing compareAndSwap Object value");
assertEquals(x, "bar", "failing compareAndSet Object value");
}
// Advanced compare
{
Object r = UNSAFE.compareAndExchangeObjectVolatile(base, offset, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchangeVolatile Object");
Object r = UNSAFE.compareAndExchangeObject(base, offset, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchange Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "foo", "success compareAndExchangeVolatile Object value");
assertEquals(x, "foo", "success compareAndExchange Object value");
}
{
Object r = UNSAFE.compareAndExchangeObjectVolatile(base, offset, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchangeVolatile Object");
Object r = UNSAFE.compareAndExchangeObject(base, offset, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchange Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "foo", "failing compareAndExchangeVolatile Object value");
assertEquals(x, "foo", "failing compareAndExchange Object value");
}
{
@@ -210,41 +210,41 @@ public class JdkInternalMiscUnsafeAccessTestObject {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapObject(base, offset, "foo", "bar");
success = UNSAFE.weakCompareAndSetObjectPlain(base, offset, "foo", "bar");
}
assertEquals(success, true, "weakCompareAndSwap Object");
assertEquals(success, true, "weakCompareAndSetPlain Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "bar", "weakCompareAndSwap Object value");
assertEquals(x, "bar", "weakCompareAndSetPlain Object value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapObjectAcquire(base, offset, "bar", "foo");
success = UNSAFE.weakCompareAndSetObjectAcquire(base, offset, "bar", "foo");
}
assertEquals(success, true, "weakCompareAndSwapAcquire Object");
assertEquals(success, true, "weakCompareAndSetAcquire Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "foo", "weakCompareAndSwapAcquire Object");
assertEquals(x, "foo", "weakCompareAndSetAcquire Object");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapObjectRelease(base, offset, "foo", "bar");
success = UNSAFE.weakCompareAndSetObjectRelease(base, offset, "foo", "bar");
}
assertEquals(success, true, "weakCompareAndSwapRelease Object");
assertEquals(success, true, "weakCompareAndSetRelease Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "bar", "weakCompareAndSwapRelease Object");
assertEquals(x, "bar", "weakCompareAndSetRelease Object");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapObjectVolatile(base, offset, "bar", "foo");
success = UNSAFE.weakCompareAndSetObject(base, offset, "bar", "foo");
}
assertEquals(success, true, "weakCompareAndSwapVolatile Object");
assertEquals(success, true, "weakCompareAndSet Object");
Object x = UNSAFE.getObject(base, offset);
assertEquals(x, "foo", "weakCompareAndSwapVolatile Object");
assertEquals(x, "foo", "weakCompareAndSet Object");
}
UNSAFE.putObject(base, offset, "bar");
@@ -260,4 +260,3 @@ public class JdkInternalMiscUnsafeAccessTestObject {
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestShort {
// Compare
{
boolean r = UNSAFE.compareAndSwapShort(base, offset, (short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSwap short");
boolean r = UNSAFE.compareAndSetShort(base, offset, (short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSet short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x4567, "success compareAndSwap short value");
assertEquals(x, (short)0x4567, "success compareAndSet short value");
}
{
boolean r = UNSAFE.compareAndSwapShort(base, offset, (short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSwap short");
boolean r = UNSAFE.compareAndSetShort(base, offset, (short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSet short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x4567, "failing compareAndSwap short value");
assertEquals(x, (short)0x4567, "failing compareAndSet short value");
}
// Advanced compare
{
short r = UNSAFE.compareAndExchangeShortVolatile(base, offset, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchangeVolatile short");
short r = UNSAFE.compareAndExchangeShort(base, offset, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchange short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x0123, "success compareAndExchangeVolatile short value");
assertEquals(x, (short)0x0123, "success compareAndExchange short value");
}
{
short r = UNSAFE.compareAndExchangeShortVolatile(base, offset, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchangeVolatile short");
short r = UNSAFE.compareAndExchangeShort(base, offset, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x0123, "failing compareAndExchangeVolatile short value");
assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
}
{
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestShort {
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapShort(base, offset, (short)0x0123, (short)0x4567);
success = UNSAFE.weakCompareAndSetShortPlain(base, offset, (short)0x0123, (short)0x4567);
}
assertEquals(success, true, "weakCompareAndSwap short");
assertEquals(success, true, "weakCompareAndSetPlain short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x4567, "weakCompareAndSwap short value");
assertEquals(x, (short)0x4567, "weakCompareAndSetPlain short value");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapShortAcquire(base, offset, (short)0x4567, (short)0x0123);
success = UNSAFE.weakCompareAndSetShortAcquire(base, offset, (short)0x4567, (short)0x0123);
}
assertEquals(success, true, "weakCompareAndSwapAcquire short");
assertEquals(success, true, "weakCompareAndSetAcquire short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x0123, "weakCompareAndSwapAcquire short");
assertEquals(x, (short)0x0123, "weakCompareAndSetAcquire short");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapShortRelease(base, offset, (short)0x0123, (short)0x4567);
success = UNSAFE.weakCompareAndSetShortRelease(base, offset, (short)0x0123, (short)0x4567);
}
assertEquals(success, true, "weakCompareAndSwapRelease short");
assertEquals(success, true, "weakCompareAndSetRelease short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x4567, "weakCompareAndSwapRelease short");
assertEquals(x, (short)0x4567, "weakCompareAndSetRelease short");
}
{
boolean success = false;
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
success = UNSAFE.weakCompareAndSwapShortVolatile(base, offset, (short)0x4567, (short)0x0123);
success = UNSAFE.weakCompareAndSetShort(base, offset, (short)0x4567, (short)0x0123);
}
assertEquals(success, true, "weakCompareAndSwapVolatile short");
assertEquals(success, true, "weakCompareAndSet short");
short x = UNSAFE.getShort(base, offset);
assertEquals(x, (short)0x0123, "weakCompareAndSwapVolatile short");
assertEquals(x, (short)0x0123, "weakCompareAndSet short");
}
UNSAFE.putShort(base, offset, (short)0x4567);
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestShort {
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -138,4 +138,3 @@ public class SunMiscUnsafeAccessTestBoolean {
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -175,4 +175,3 @@ public class SunMiscUnsafeAccessTestByte {
}
}
}

Some files were not shown because too many files have changed in this diff Show More