--- a/.hgtags Thu Jun 21 21:14:08 2018 -0700
+++ b/.hgtags Fri Jun 22 07:49:27 2018 -0700
@@ -490,3 +490,4 @@
02934b0d661b82b7fe1052a04998d2091352e08d jdk-11+16
64e4b1686141e57a681936a8283983341484676e jdk-11+17
e1b3def126240d5433902f3cb0e91a4c27f6db50 jdk-11+18
+fb8b3f4672774e15654958295558a1af1b576919 jdk-11+19
--- a/bin/nashorn/runopt.sh Thu Jun 21 21:14:08 2018 -0700
+++ b/bin/nashorn/runopt.sh Fri Jun 22 07:49:27 2018 -0700
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2018, 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
@@ -75,7 +75,6 @@
#
# see above - already in place, copy the flags down here to disable
ENABLE_FLIGHT_RECORDER_FLAGS="\
- -XX:+UnlockCommercialFeatures \
-XX:+FlightRecorder \
-XX:FlightRecorderOptions=defaultrecording=true,disk=true,dumponexit=true,dumponexitpath=$JFR_FILENAME,stackdepth=1024"
--- a/make/conf/jib-profiles.js Thu Jun 21 21:14:08 2018 -0700
+++ b/make/conf/jib-profiles.js Fri Jun 22 07:49:27 2018 -0700
@@ -832,7 +832,7 @@
var devkit_platform_revisions = {
linux_x64: "gcc7.3.0-OEL6.4+1.0",
- macosx_x64: "Xcode6.3-MacOSX10.9+1.0",
+ macosx_x64: "Xcode9.4-MacOSX10.13+1.0",
solaris_x64: "SS12u4-Solaris11u1+1.0",
solaris_sparcv9: "SS12u4-Solaris11u1+1.1",
windows_x64: "VS2017-15.5.5+1.0",
--- a/make/lib/Lib-jdk.crypto.mscapi.gmk Thu Jun 21 21:14:08 2018 -0700
+++ b/make/lib/Lib-jdk.crypto.mscapi.gmk Fri Jun 22 07:49:27 2018 -0700
@@ -35,7 +35,7 @@
CFLAGS := $(CFLAGS_JDKLIB), \
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LIBS := crypt32.lib advapi32.lib, \
+ LIBS := crypt32.lib advapi32.lib ncrypt.lib, \
))
TARGETS += $(BUILD_LIBSUNMSCAPI)
--- a/make/nashorn/project.properties Thu Jun 21 21:14:08 2018 -0700
+++ b/make/nashorn/project.properties Fri Jun 22 07:49:27 2018 -0700
@@ -351,7 +351,7 @@
run.test.xmx=2G
run.test.xms=2G
-# uncomment this jfr.args to enable light recordings. the stack needs to be cranked up to 1024 frames,
+# uncomment this jfr.args to enable flight recordings. the stack needs to be cranked up to 1024 frames,
# or everything will as of the now drown in lambda forms and be cut off.
#
#jfr.args=-XX:StartFlightRecording=disk=true,dumponexit=true,dumponexitpath="test_suite.jfr",stackdepth=1024
--- a/src/hotspot/cpu/aarch64/aarch64.ad Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/aarch64.ad Fri Jun 22 07:49:27 2018 -0700
@@ -1193,21 +1193,28 @@
// MemBarRelease
// MemBarCPUOrder
// StoreX[mo_release] {CardMark}-optional
+ // MemBarCPUOrder
// MemBarVolatile
//
- // n.b. as an aside, the cpuorder membar is not itself subject to
+ // n.b. as an aside, a cpuorder membar is not itself subject to
// matching and translation by adlc rules. However, the rule
// predicates need to detect its presence in order to correctly
// select the desired adlc rules.
//
- // Inlined unsafe volatile gets manifest as a somewhat different
- // node sequence to a normal volatile get
+ // Inlined unsafe volatile gets manifest as a slightly different
+ // node sequence to a normal volatile get because of the
+ // introduction of some CPUOrder memory barriers to bracket the
+ // Load. However, but the same basic skeleton of a LoadX feeding a
+ // MemBarAcquire, possibly thorugh an optional DecodeN, is still
+ // present
//
// MemBarCPUOrder
// || \\
- // MemBarAcquire LoadX[mo_acquire]
- // ||
- // MemBarCPUOrder
+ // MemBarCPUOrder LoadX[mo_acquire]
+ // || |
+ // || {DecodeN} optional
+ // || /
+ // MemBarAcquire
//
// In this case the acquire membar does not directly depend on the
// load. However, we can be sure that the load is generated from an
@@ -1314,8 +1321,8 @@
MemBarNode *child_membar(const MemBarNode *n)
{
- ProjNode *ctl = n->proj_out(TypeFunc::Control);
- ProjNode *mem = n->proj_out(TypeFunc::Memory);
+ ProjNode *ctl = n->proj_out_or_null(TypeFunc::Control);
+ ProjNode *mem = n->proj_out_or_null(TypeFunc::Memory);
// MemBar needs to have both a Ctl and Mem projection
if (! ctl || ! mem)
@@ -1432,6 +1439,8 @@
// | \ /
// | MergeMem
// | /
+ // {MemBarCPUOrder} -- optional
+ // { || }
// MemBarVolatile
//
// where
@@ -1453,6 +1462,8 @@
// | MergeMem
// | /
// || /
+ // {MemBarCPUOrder} -- optional
+ // { || }
// MemBarVolatile
//
// i.e. the leading membar feeds Ctl to a CastP2X (which converts
@@ -1505,6 +1516,7 @@
// | /
// MergeMem
// |
+ // {MemBarCPUOrder}
// MemBarVolatile
//
// This is referred to as a *normal* subgraph. It can easily be
@@ -1567,7 +1579,7 @@
// object put and the corresponding conditional card mark. CMS
// employs a post-write GC barrier while G1 employs both a pre- and
// post-write GC barrier. Of course the extra nodes may be absent --
- // they are only inserted for object puts. This significantly
+ // they are only inserted for object puts/swaps. This significantly
// complicates the task of identifying whether a MemBarRelease,
// StoreX[mo_release] or MemBarVolatile forms part of a volatile put
// when using these GC configurations (see below). It adds similar
@@ -1575,8 +1587,8 @@
// CompareAndSwapX or MemBarAcquire forms part of a CAS.
//
// In both cases the post-write subtree includes an auxiliary
- // MemBarVolatile (StoreLoad barrier) separating the object put and
- // the read of the corresponding card. This poses two additional
+ // MemBarVolatile (StoreLoad barrier) separating the object put/swap
+ // and the read of the corresponding card. This poses two additional
// problems.
//
// Firstly, a card mark MemBarVolatile needs to be distinguished
@@ -1638,6 +1650,7 @@
// | . . . \ / Bot
// | MergeMem
// | |
+ // {MemBarCPUOrder}
// MemBarVolatile (trailing)
//
// The first MergeMem merges the AliasIdxBot Mem slice from the
@@ -1647,53 +1660,39 @@
// from the StoreCM into the trailing membar (n.b. the latter
// proceeds via a Phi associated with the If region).
//
- // The graph for a CAS varies slightly, the obvious difference being
+ // The graph for a CAS varies slightly, the difference being
// that the StoreN/P node is replaced by a CompareAndSwapP/N node
// and the trailing MemBarVolatile by a MemBarCPUOrder +
- // MemBarAcquire pair. The other important difference is that the
- // CompareAndSwap node's SCMemProj is not merged into the card mark
- // membar - it still feeds the trailing MergeMem. This also means
- // that the card mark membar receives its Mem feed directly from the
- // leading membar rather than via a MergeMem.
+ // MemBarAcquire pair.
//
// MemBarRelease
- // MemBarCPUOrder__(leading)_________________________
- // || \\ C \
- // MemBarVolatile (card mark) CompareAndSwapN/P CastP2X
- // C | || M | |
- // | LoadB | ______/|
- // | | | / |
- // | Cmp | / SCMemProj
- // | / | / |
- // If | / /
- // | \ | / /
- // IfFalse IfTrue | / /
- // \ / \ |/ prec /
- // \ / StoreCM /
- // \ / | /
- // Region . . . /
- // | \ /
- // | . . . \ / Bot
+ // MemBarCPUOrder_(leading)_______________
+ // C | M \ \\ C \
+ // | \ CompareAndSwapN/P CastP2X
+ // | \ |
+ // | \ SCMemProj
+ // | Bot \ /
+ // | MergeMem
+ // | /
+ // MemBarVolatile (card mark)
+ // C | || M |
+ // | LoadB |
+ // | | |
+ // | Cmp |\
+ // | / | \
+ // If | \
+ // | \ | \
+ // IfFalse IfTrue | \
+ // \ / \ | \
+ // \ / StoreCM |
+ // \ / | |
+ // Region . . . |
+ // | \ /
+ // | . . . \ / Bot
// | MergeMem
// | |
- // MemBarCPUOrder
- // MemBarAcquire (trailing)
- //
- // This has a slightly different memory subgraph to the one seen
- // previously but the core of it is the same as for the CAS normal
- // sungraph
- //
- // MemBarRelease
- // MemBarCPUOrder____
- // || \ . . .
- // MemBarVolatile CompareAndSwapX . . .
- // | \ |
- // . . . SCMemProj
- // | / . . .
- // MergeMem
- // |
- // MemBarCPUOrder
- // MemBarAcquire
+ // {MemBarCPUOrder}
+ // MemBarVolatile (trailing)
//
//
// G1 is quite a lot more complicated. The nodes inserted on behalf
@@ -1742,15 +1741,13 @@
// (post write subtree elided)
// . . .
// C \ M /
- // MemBarVolatile (trailing)
+ // \ /
+ // {MemBarCPUOrder}
+ // MemBarVolatile (trailing)
//
// n.b. the LoadB in this subgraph is not the card read -- it's a
// read of the SATB queue active flag.
//
- // Once again the CAS graph is a minor variant on the above with the
- // expected substitutions of CompareAndSawpX for StoreN/P and
- // MemBarCPUOrder + MemBarAcquire for trailing MemBarVolatile.
- //
// The G1 post-write subtree is also optional, this time when the
// new value being written is either null or can be identified as a
// newly allocated (young gen) object with no intervening control
@@ -1773,7 +1770,8 @@
// checking if card_val != young). n.b. although this test requires
// a pre-read of the card it can safely be done before the StoreLoad
// barrier. However that does not bypass the need to reread the card
- // after the barrier.
+ // after the barrier. A final, 4th If tests if the card is already
+ // marked.
//
// (pre-write subtree elided)
// . . . . . . . . . . . .
@@ -1826,6 +1824,7 @@
// | | | / Bot
// \ MergeMem
// \ /
+ // {MemBarCPUOrder}
// MemBarVolatile
//
// As with CMS the initial MergeMem merges the AliasIdxBot Mem slice
@@ -1845,26 +1844,29 @@
// otherwise it is 3.
//
// The CAS graph when using G1GC also includes a pre-write subgraph
- // and an optional post-write subgraph. Teh sam evarioations are
+ // and an optional post-write subgraph. The same variations are
// introduced as for CMS with conditional card marking i.e. the
- // StoreP/N is swapped for a CompareAndSwapP/N, the tariling
- // MemBarVolatile for a MemBarCPUOrder + MemBarAcquire pair and the
- // Mem feed from the CompareAndSwapP/N includes a precedence
- // dependency feed to the StoreCM and a feed via an SCMemProj to the
- // trailing membar. So, as before the configuration includes the
- // normal CAS graph as a subgraph of the memory flow.
- //
- // So, the upshot is that in all cases the volatile put graph will
- // include a *normal* memory subgraph betwen the leading membar and
- // its child membar, either a volatile put graph (including a
- // releasing StoreX) or a CAS graph (including a CompareAndSwapX).
- // When that child is not a card mark membar then it marks the end
- // of the volatile put or CAS subgraph. If the child is a card mark
- // membar then the normal subgraph will form part of a volatile put
- // subgraph if and only if the child feeds an AliasIdxBot Mem feed
- // to a trailing barrier via a MergeMem. That feed is either direct
- // (for CMS) or via 2 or 3 Phi nodes merging the leading barrier
- // memory flow (for G1).
+ // StoreP/N is swapped for a CompareAndSwapP/N with a following
+ // SCMemProj, the trailing MemBarVolatile for a MemBarCPUOrder +
+ // MemBarAcquire pair. There may be an extra If test introduced in
+ // the CAS case, when the boolean result of the CAS is tested by the
+ // caller. In that case an extra Region and AliasIdxBot Phi may be
+ // introduced before the MergeMem
+ //
+ // So, the upshot is that in all cases the subgraph will include a
+ // *normal* memory subgraph betwen the leading membar and its child
+ // membar: either a normal volatile put graph including a releasing
+ // StoreX and terminating with a trailing volatile membar or card
+ // mark volatile membar; or a normal CAS graph including a
+ // CompareAndSwapX + SCMemProj pair and terminating with a card mark
+ // volatile membar or a trailing cpu order and acquire membar
+ // pair. If the child membar is not a (volatile) card mark membar
+ // then it marks the end of the volatile put or CAS subgraph. If the
+ // child is a card mark membar then the normal subgraph will form
+ // part of a larger volatile put or CAS subgraph if and only if the
+ // child feeds an AliasIdxBot Mem feed to a trailing barrier via a
+ // MergeMem. That feed is either direct (for CMS) or via 2, 3 or 4
+ // Phi nodes merging the leading barrier memory flow (for G1).
//
// The predicates controlling generation of instructions for store
// and barrier nodes employ a few simple helper functions (described
@@ -1907,13 +1909,27 @@
}
}
+ // helper to determine the maximum number of Phi nodes we may need to
+ // traverse when searching from a card mark membar for the merge mem
+ // feeding a trailing membar or vice versa
+
+ int max_phis()
+ {
+ if (UseG1GC) {
+ return 4;
+ } else if (UseConcMarkSweepGC && UseCondCardMark) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
// leading_to_normal
//
- //graph traversal helper which detects the normal case Mem feed from
- // a release membar (or, optionally, its cpuorder child) to a
- // dependent volatile membar i.e. it ensures that one or other of
- // the following Mem flow subgraph is present.
+ // graph traversal helper which detects the normal case Mem feed
+ // from a release membar (or, optionally, its cpuorder child) to a
+ // dependent volatile or acquire membar i.e. it ensures that one of
+ // the following 3 Mem flow subgraphs is present.
//
// MemBarRelease
// MemBarCPUOrder {leading}
@@ -1922,19 +1938,27 @@
// | /
// MergeMem
// |
+ // {MemBarCPUOrder}
// MemBarVolatile {trailing or card mark}
//
// MemBarRelease
// MemBarCPUOrder {leading}
- // | \ . . .
- // | CompareAndSwapX . . .
- // |
- // . . . SCMemProj
- // \ |
- // | MergeMem
- // | /
- // MemBarCPUOrder
- // MemBarAcquire {trailing}
+ // | \ . . .
+ // | CompareAndSwapX . . .
+ // | /
+ // MergeMem
+ // |
+ // MemBarVolatile {card mark}
+ //
+ // MemBarRelease
+ // MemBarCPUOrder {leading}
+ // | \ . . .
+ // | CompareAndSwapX . . .
+ // | /
+ // MergeMem
+ // |
+ // MemBarCPUOrder
+ // MemBarAcquire {trailing}
//
// if the correct configuration is present returns the trailing
// membar otherwise NULL.
@@ -1991,45 +2015,36 @@
return NULL;
}
- // must have a merge if we also have st
- if (st && !mm) {
+ // must have a merge
+ if (!mm) {
return NULL;
}
- Node *y = NULL;
+ Node *feed = NULL;
if (cas) {
// look for an SCMemProj
for (DUIterator_Fast imax, i = cas->fast_outs(imax); i < imax; i++) {
x = cas->fast_out(i);
- if (x->is_Proj()) {
- y = x;
+ if (x->Opcode() == Op_SCMemProj) {
+ feed = x;
break;
}
}
- if (y == NULL) {
+ if (feed == NULL) {
return NULL;
}
- // the proj must feed a MergeMem
- for (DUIterator_Fast imax, i = y->fast_outs(imax); i < imax; i++) {
- x = y->fast_out(i);
- if (x->is_MergeMem()) {
- mm = x->as_MergeMem();
- break;
- }
+ } else {
+ feed = st;
+ }
+ // ensure the feed node feeds the existing mergemem;
+ for (DUIterator_Fast imax, i = feed->fast_outs(imax); i < imax; i++) {
+ x = feed->fast_out(i);
+ if (x == mm) {
+ break;
}
- if (mm == NULL)
- return NULL;
- } else {
- // ensure the store feeds the existing mergemem;
- for (DUIterator_Fast imax, i = st->fast_outs(imax); i < imax; i++) {
- if (st->fast_out(i) == mm) {
- y = st;
- break;
- }
- }
- if (y == NULL) {
- return NULL;
- }
+ }
+ if (x != mm) {
+ return NULL;
}
MemBarNode *mbar = NULL;
@@ -2037,15 +2052,28 @@
for (DUIterator_Fast imax, i = mm->fast_outs(imax); i < imax; i++) {
x = mm->fast_out(i);
if (x->is_MemBar()) {
- int opcode = x->Opcode();
- if (opcode == Op_MemBarVolatile && st) {
- mbar = x->as_MemBar();
- } else if (cas && opcode == Op_MemBarCPUOrder) {
+ if (x->Opcode() == Op_MemBarCPUOrder) {
+ // with a store any cpu order membar should precede a
+ // trailing volatile membar. with a cas it should precede a
+ // trailing acquire membar. in either case try to skip to
+ // that next membar
MemBarNode *y = x->as_MemBar();
y = child_membar(y);
- if (y != NULL && y->Opcode() == Op_MemBarAcquire) {
- mbar = y;
+ if (y != NULL) {
+ // skip to this new membar to do the check
+ x = y;
}
+
+ }
+ if (x->Opcode() == Op_MemBarVolatile) {
+ mbar = x->as_MemBar();
+ // for a volatile store this can be either a trailing membar
+ // or a card mark membar. for a cas it must be a card mark
+ // membar
+ assert(cas == NULL || is_card_mark_membar(mbar),
+ "in CAS graph volatile membar must be a card mark");
+ } else if (cas != NULL && x->Opcode() == Op_MemBarAcquire) {
+ mbar = x->as_MemBar();
}
break;
}
@@ -2059,28 +2087,36 @@
// graph traversal helper which detects the normal case Mem feed
// from either a card mark or a trailing membar to a preceding
// release membar (optionally its cpuorder child) i.e. it ensures
- // that one or other of the following Mem flow subgraphs is present.
+ // that one of the following 3 Mem flow subgraphs is present.
//
// MemBarRelease
- // MemBarCPUOrder {leading}
+ // {MemBarCPUOrder} {leading}
// | \ . . .
// | StoreN/P[mo_release] . . .
// | /
// MergeMem
// |
- // MemBarVolatile {card mark or trailing}
+ // {MemBarCPUOrder}
+ // MemBarVolatile {trailing or card mark}
//
// MemBarRelease
// MemBarCPUOrder {leading}
- // | \ . . .
- // | CompareAndSwapX . . .
- // |
- // . . . SCMemProj
- // \ |
- // | MergeMem
- // | /
- // MemBarCPUOrder
- // MemBarAcquire {trailing}
+ // | \ . . .
+ // | CompareAndSwapX . . .
+ // | /
+ // MergeMem
+ // |
+ // MemBarVolatile {card mark}
+ //
+ // MemBarRelease
+ // MemBarCPUOrder {leading}
+ // | \ . . .
+ // | CompareAndSwapX . . .
+ // | /
+ // MergeMem
+ // |
+ // MemBarCPUOrder
+ // MemBarAcquire {trailing}
//
// this predicate checks for the same flow as the previous predicate
// but starting from the bottom rather than the top.
@@ -2097,20 +2133,19 @@
assert((barrier->Opcode() == Op_MemBarVolatile ||
barrier->Opcode() == Op_MemBarAcquire),
"expecting a volatile or an acquire membar");
- Node *x;
- bool is_cas = barrier->Opcode() == Op_MemBarAcquire;
-
- // if we have an acquire membar then it must be fed via a CPUOrder
- // membar
-
- if (is_cas) {
- // skip to parent barrier which must be a cpuorder
- x = parent_membar(barrier);
- if (x->Opcode() != Op_MemBarCPUOrder)
- return NULL;
- } else {
- // start from the supplied barrier
+ bool barrier_is_acquire = barrier->Opcode() == Op_MemBarAcquire;
+
+ // if we have an intervening cpu order membar then start the
+ // search from it
+
+ Node *x = parent_membar(barrier);
+
+ if (x == NULL) {
+ // stick with the original barrier
x = (Node *)barrier;
+ } else if (x->Opcode() != Op_MemBarCPUOrder) {
+ // any other barrier means this is not the graph we want
+ return NULL;
}
// the Mem feed to the membar should be a merge
@@ -2120,30 +2155,8 @@
MergeMemNode *mm = x->as_MergeMem();
- if (is_cas) {
- // the merge should be fed from the CAS via an SCMemProj node
- x = NULL;
- for (uint idx = 1; idx < mm->req(); idx++) {
- if (mm->in(idx)->Opcode() == Op_SCMemProj) {
- x = mm->in(idx);
- break;
- }
- }
- if (x == NULL) {
- return NULL;
- }
- // check for a CAS feeding this proj
- x = x->in(0);
- int opcode = x->Opcode();
- if (!is_CAS(opcode)) {
- return NULL;
- }
- // the CAS should get its mem feed from the leading membar
- x = x->in(MemNode::Memory);
- } else {
- // the merge should get its Bottom mem feed from the leading membar
- x = mm->in(Compile::AliasIdxBot);
- }
+ // the merge should get its Bottom mem feed from the leading membar
+ x = mm->in(Compile::AliasIdxBot);
// ensure this is a non control projection
if (!x->is_Proj() || x->is_CFG()) {
@@ -2188,15 +2201,34 @@
if (st == NULL & cas == NULL) {
return NULL;
}
-
if (st == NULL) {
- // nothing more to check
- return leading;
+ // if we started from a volatile membar and found a CAS then the
+ // original membar ought to be for a card mark
+ assert((barrier_is_acquire || is_card_mark_membar(barrier)),
+ "unexpected volatile barrier (i.e. not card mark) in CAS graph");
+ // check that the CAS feeds the merge we used to get here via an
+ // intermediary SCMemProj
+ Node *scmemproj = NULL;
+ for (DUIterator_Fast imax, i = cas->fast_outs(imax); i < imax; i++) {
+ x = cas->fast_out(i);
+ if (x->Opcode() == Op_SCMemProj) {
+ scmemproj = x;
+ break;
+ }
+ }
+ if (scmemproj == NULL) {
+ return NULL;
+ }
+ for (DUIterator_Fast imax, i = scmemproj->fast_outs(imax); i < imax; i++) {
+ x = scmemproj->fast_out(i);
+ if (x == mm) {
+ return leading;
+ }
+ }
} else {
- // we should not have a store if we started from an acquire
- if (is_cas) {
- return NULL;
- }
+ // we should not have found a store if we started from an acquire
+ assert(!barrier_is_acquire,
+ "unexpected trailing acquire barrier in volatile store graph");
// the store should feed the merge we used to get here
for (DUIterator_Fast imax, i = st->fast_outs(imax); i < imax; i++) {
@@ -2227,8 +2259,9 @@
// Bot | /
// MergeMem
// |
- // |
- // MemBarVolatile {trailing}
+ // {MemBarCPUOrder} OR MemBarCPUOrder
+ // MemBarVolatile {trailing} MemBarAcquire {trailing}
+ //
//
// 2)
// MemBarRelease/CPUOrder (leading)
@@ -2246,8 +2279,8 @@
// Bot | /
// MergeMem
// |
- // MemBarVolatile {trailing}
- //
+ // {MemBarCPUOrder} OR MemBarCPUOrder
+ // MemBarVolatile {trailing} MemBarAcquire {trailing}
//
// 3)
// MemBarRelease/CPUOrder (leading)
@@ -2269,12 +2302,44 @@
// MergeMem
// |
// |
- // MemBarVolatile {trailing}
+ // {MemBarCPUOrder} OR MemBarCPUOrder
+ // MemBarVolatile {trailing} MemBarAcquire {trailing}
+ //
+ // 4)
+ // MemBarRelease/CPUOrder (leading)
+ // |
+ // |\
+ // | \
+ // | \
+ // | \
+ // |\ \
+ // | \ \
+ // | \ \ . . .
+ // | \ \ |
+ // |\ \ \ MemBarVolatile (card mark)
+ // | \ \ \ / |
+ // | \ \ \ / StoreCM . . .
+ // | \ \ Phi
+ // \ \ \ /
+ // \ \ Phi
+ // \ \ /
+ // \ Phi
+ // \ /
+ // Phi . . .
+ // Bot | /
+ // MergeMem
+ // |
+ // |
+ // MemBarCPUOrder
+ // MemBarAcquire {trailing}
//
// configuration 1 is only valid if UseConcMarkSweepGC &&
// UseCondCardMark
//
- // configurations 2 and 3 are only valid if UseG1GC.
+ // configuration 2, is only valid if UseConcMarkSweepGC &&
+ // UseCondCardMark or if UseG1GC
+ //
+ // configurations 3 and 4 are only valid if UseG1GC.
//
// if a valid configuration is present returns the trailing membar
// otherwise NULL.
@@ -2292,8 +2357,8 @@
Node *x;
MergeMemNode *mm = NULL;
- const int MAX_PHIS = 3; // max phis we will search through
- int phicount = 0; // current search count
+ const int MAX_PHIS = max_phis(); // max phis we will search through
+ int phicount = 0; // current search count
bool retry_feed = true;
while (retry_feed) {
@@ -2308,7 +2373,7 @@
}
if (mm) {
retry_feed = false;
- } else if (UseG1GC & phicount++ < MAX_PHIS) {
+ } else if (phicount++ < MAX_PHIS) {
// the barrier may feed indirectly via one or two Phi nodes
PhiNode *phi = NULL;
for (DUIterator_Fast imax, i = feed->fast_outs(imax); i < imax; i++) {
@@ -2334,12 +2399,24 @@
assert(mm->as_MergeMem()->in(Compile::AliasIdxBot) == feed, "expecting membar to feed AliasIdxBot slice to Merge");
MemBarNode *trailing = NULL;
- // be sure we have a trailing membar the merge
+ // be sure we have a trailing membar fed by the merge
for (DUIterator_Fast imax, i = mm->fast_outs(imax); i < imax; i++) {
x = mm->fast_out(i);
- if (x->is_MemBar() && x->Opcode() == Op_MemBarVolatile) {
- trailing = x->as_MemBar();
- break;
+ if (x->is_MemBar()) {
+ // if this is an intervening cpu order membar skip to the
+ // following membar
+ if (x->Opcode() == Op_MemBarCPUOrder) {
+ MemBarNode *y = x->as_MemBar();
+ y = child_membar(y);
+ if (y != NULL) {
+ x = y;
+ }
+ }
+ if (x->Opcode() == Op_MemBarVolatile ||
+ x->Opcode() == Op_MemBarAcquire) {
+ trailing = x->as_MemBar();
+ }
+ break;
}
}
@@ -2360,18 +2437,33 @@
// otherwise NULL
//
// n.b. the supplied membar is expected to be a trailing
- // MemBarVolatile i.e. the caller must ensure the input node has the
- // correct opcode
+ // MemBarVolatile or MemBarAcquire i.e. the caller must ensure the
+ // input node has the correct opcode
MemBarNode *trailing_to_card_mark(const MemBarNode *trailing)
{
- assert(trailing->Opcode() == Op_MemBarVolatile,
- "expecting a volatile membar");
+ assert(trailing->Opcode() == Op_MemBarVolatile ||
+ trailing->Opcode() == Op_MemBarAcquire,
+ "expecting a volatile or acquire membar");
assert(!is_card_mark_membar(trailing),
"not expecting a card mark membar");
+ Node *x = (Node *)trailing;
+
+ // look for a preceding cpu order membar
+ MemBarNode *y = parent_membar(x->as_MemBar());
+ if (y != NULL) {
+ // make sure it is a cpu order membar
+ if (y->Opcode() != Op_MemBarCPUOrder) {
+ // this is nto the graph we were looking for
+ return NULL;
+ }
+ // start the search from here
+ x = y;
+ }
+
// the Mem feed to the membar should be a merge
- Node *x = trailing->in(TypeFunc::Memory);
+ x = x->in(TypeFunc::Memory);
if (!x->is_MergeMem()) {
return NULL;
}
@@ -2382,20 +2474,20 @@
// with G1 we may possibly see a Phi or two before we see a Memory
// Proj from the card mark membar
- const int MAX_PHIS = 3; // max phis we will search through
- int phicount = 0; // current search count
+ const int MAX_PHIS = max_phis(); // max phis we will search through
+ int phicount = 0; // current search count
bool retry_feed = !x->is_Proj();
while (retry_feed) {
- if (UseG1GC && x->is_Phi() && phicount++ < MAX_PHIS) {
+ if (x->is_Phi() && phicount++ < MAX_PHIS) {
PhiNode *phi = x->as_Phi();
ProjNode *proj = NULL;
PhiNode *nextphi = NULL;
bool found_leading = false;
for (uint i = 1; i < phi->req(); i++) {
x = phi->in(i);
- if (x->is_Phi()) {
+ if (x->is_Phi() && x->adr_type() == TypePtr::BOTTOM) {
nextphi = x->as_Phi();
} else if (x->is_Proj()) {
int opcode = x->in(0)->Opcode();
@@ -2475,10 +2567,8 @@
return leading;
}
- // nothing more to do if this is an acquire
- if (trailing->Opcode() == Op_MemBarAcquire) {
- return NULL;
- }
+ // there is no normal path from trailing to leading membar. see if
+ // we can arrive via a card mark membar
MemBarNode *card_mark_membar = trailing_to_card_mark(trailing);
@@ -2506,15 +2596,6 @@
// with a bogus read dependency on it's preceding load. so in those
// cases we will find the load node at the PARMS offset of the
// acquire membar. n.b. there may be an intervening DecodeN node.
- //
- // a volatile load derived from an inlined unsafe field access
- // manifests as a cpuorder membar with Ctl and Mem projections
- // feeding both an acquire membar and a LoadX[mo_acquire]. The
- // acquire then feeds another cpuorder membar via Ctl and Mem
- // projections. The load has no output dependency on these trailing
- // membars because subsequent nodes inserted into the graph take
- // their control feed from the final membar cpuorder meaning they
- // are all ordered after the load.
Node *x = barrier->lookup(TypeFunc::Parms);
if (x) {
@@ -2537,61 +2618,7 @@
return (x->is_Load() && x->as_Load()->is_acquire());
}
- // now check for an unsafe volatile get
-
- // need to check for
- //
- // MemBarCPUOrder
- // || \\
- // MemBarAcquire* LoadX[mo_acquire]
- // ||
- // MemBarCPUOrder
- //
- // where * tags node we were passed
- // and || or \\ are Ctl+Mem feeds via intermediate Proj Nodes
-
- // check for a parent MemBarCPUOrder
- ProjNode *ctl;
- ProjNode *mem;
- MemBarNode *parent = parent_membar(barrier);
- if (!parent || parent->Opcode() != Op_MemBarCPUOrder)
- return false;
- ctl = parent->proj_out(TypeFunc::Control);
- mem = parent->proj_out(TypeFunc::Memory);
- if (!ctl || !mem) {
- return false;
- }
- // ensure the proj nodes both feed a LoadX[mo_acquire]
- LoadNode *ld = NULL;
- for (DUIterator_Fast imax, i = ctl->fast_outs(imax); i < imax; i++) {
- x = ctl->fast_out(i);
- // if we see a load we keep hold of it and stop searching
- if (x->is_Load()) {
- ld = x->as_Load();
- break;
- }
- }
- // it must be an acquiring load
- if (ld && ld->is_acquire()) {
-
- for (DUIterator_Fast imax, i = mem->fast_outs(imax); i < imax; i++) {
- x = mem->fast_out(i);
- // if we see the same load we drop it and stop searching
- if (x == ld) {
- ld = NULL;
- break;
- }
- }
- // we must have dropped the load
- if (ld == NULL) {
- // check for a child cpuorder membar
- MemBarNode *child = child_membar(barrier->as_MemBar());
- if (child && child->Opcode() == Op_MemBarCPUOrder)
- return true;
- }
- }
-
- // final option for unnecessary mebar is that it is a trailing node
+ // other option for unnecessary membar is that it is a trailing node
// belonging to a CAS
MemBarNode *leading = trailing_to_leading(barrier->as_MemBar());
@@ -2647,39 +2674,7 @@
return true;
}
- // now check for an unsafe volatile get
-
- // check if Ctl and Proj feed comes from a MemBarCPUOrder
- //
- // MemBarCPUOrder
- // || \\
- // MemBarAcquire* LoadX[mo_acquire]
- // ||
- // MemBarCPUOrder
-
- MemBarNode *membar;
-
- membar = parent_membar(ld);
-
- if (!membar || !membar->Opcode() == Op_MemBarCPUOrder) {
- return false;
- }
-
- // ensure that there is a CPUOrder->Acquire->CPUOrder membar chain
-
- membar = child_membar(membar);
-
- if (!membar || !membar->Opcode() == Op_MemBarAcquire) {
- return false;
- }
-
- membar = child_membar(membar);
-
- if (!membar || !membar->Opcode() == Op_MemBarCPUOrder) {
- return false;
- }
-
- return true;
+ return false;
}
bool unnecessary_release(const Node *n)
@@ -2739,7 +2734,7 @@
}
// ok, if it's not a card mark then we still need to check if it is
- // a trailing membar of a volatile put hgraph.
+ // a trailing membar of a volatile put graph.
return (trailing_to_leading(mbvol) != NULL);
}
@@ -2848,6 +2843,14 @@
assert(mbar != NULL, "CAS not embedded in normal graph!");
+ // if this is a card mark membar check we have a trailing acquire
+
+ if (is_card_mark_membar(mbar)) {
+ mbar = card_mark_to_trailing(mbar);
+ }
+
+ assert(mbar != NULL, "card mark membar for CAS not embedded in normal graph!");
+
assert(mbar->Opcode() == Op_MemBarAcquire, "trailing membar should be an acquire");
#endif // ASSERT
// so we can just return true here
--- a/src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -166,7 +166,6 @@
tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
} else {
eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
- incr_allocated_bytes(noreg, var_size_in_bytes, con_size_in_bytes, t1);
}
}
--- a/src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -722,7 +722,6 @@
__ ldrw(obj_size, Address(klass, Klass::layout_helper_offset()));
__ eden_allocate(obj, obj_size, 0, t1, slow_path);
- __ incr_allocated_bytes(rthread, obj_size, 0, rscratch1);
__ initialize_object(obj, klass, obj_size, 0, t1, t2, /* is_tlab_allocated */ false);
__ verify_oop(obj);
@@ -823,7 +822,6 @@
__ andr(arr_size, arr_size, ~MinObjAlignmentInBytesMask);
__ eden_allocate(obj, arr_size, 0, t1, slow_path); // preserves arr_size
- __ incr_allocated_bytes(rthread, arr_size, 0, rscratch1);
__ initialize_header(obj, klass, length, t1, t2);
__ ldrb(t1, Address(klass, in_bytes(Klass::layout_helper_offset()) + (Klass::_lh_header_size_shift / BitsPerByte)));
--- a/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -24,7 +24,9 @@
#include "precompiled.hpp"
#include "gc/shared/barrierSetAssembler.hpp"
+#include "gc/shared/collectedHeap.hpp"
#include "runtime/jniHandles.hpp"
+#include "runtime/thread.hpp"
#define __ masm->
@@ -121,3 +123,109 @@
__ andr(obj, obj, ~JNIHandles::weak_tag_mask);
__ ldr(obj, Address(obj, 0)); // *obj
}
+
+// Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes.
+void BarrierSetAssembler::tlab_allocate(MacroAssembler* masm, Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1,
+ Register t2,
+ Label& slow_case) {
+ assert_different_registers(obj, t2);
+ assert_different_registers(obj, var_size_in_bytes);
+ Register end = t2;
+
+ // verify_tlab();
+
+ __ ldr(obj, Address(rthread, JavaThread::tlab_top_offset()));
+ if (var_size_in_bytes == noreg) {
+ __ lea(end, Address(obj, con_size_in_bytes));
+ } else {
+ __ lea(end, Address(obj, var_size_in_bytes));
+ }
+ __ ldr(rscratch1, Address(rthread, JavaThread::tlab_end_offset()));
+ __ cmp(end, rscratch1);
+ __ br(Assembler::HI, slow_case);
+
+ // update the tlab top pointer
+ __ str(end, Address(rthread, JavaThread::tlab_top_offset()));
+
+ // recover var_size_in_bytes if necessary
+ if (var_size_in_bytes == end) {
+ __ sub(var_size_in_bytes, var_size_in_bytes, obj);
+ }
+ // verify_tlab();
+}
+
+// Defines obj, preserves var_size_in_bytes
+void BarrierSetAssembler::eden_allocate(MacroAssembler* masm, Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1,
+ Label& slow_case) {
+ assert_different_registers(obj, var_size_in_bytes, t1);
+ if (!Universe::heap()->supports_inline_contig_alloc()) {
+ __ b(slow_case);
+ } else {
+ Register end = t1;
+ Register heap_end = rscratch2;
+ Label retry;
+ __ bind(retry);
+ {
+ unsigned long offset;
+ __ adrp(rscratch1, ExternalAddress((address) Universe::heap()->end_addr()), offset);
+ __ ldr(heap_end, Address(rscratch1, offset));
+ }
+
+ ExternalAddress heap_top((address) Universe::heap()->top_addr());
+
+ // Get the current top of the heap
+ {
+ unsigned long offset;
+ __ adrp(rscratch1, heap_top, offset);
+ // Use add() here after ARDP, rather than lea().
+ // lea() does not generate anything if its offset is zero.
+ // However, relocs expect to find either an ADD or a load/store
+ // insn after an ADRP. add() always generates an ADD insn, even
+ // for add(Rn, Rn, 0).
+ __ add(rscratch1, rscratch1, offset);
+ __ ldaxr(obj, rscratch1);
+ }
+
+ // Adjust it my the size of our new object
+ if (var_size_in_bytes == noreg) {
+ __ lea(end, Address(obj, con_size_in_bytes));
+ } else {
+ __ lea(end, Address(obj, var_size_in_bytes));
+ }
+
+ // if end < obj then we wrapped around high memory
+ __ cmp(end, obj);
+ __ br(Assembler::LO, slow_case);
+
+ __ cmp(end, heap_end);
+ __ br(Assembler::HI, slow_case);
+
+ // If heap_top hasn't been changed by some other thread, update it.
+ __ stlxr(rscratch2, end, rscratch1);
+ __ cbnzw(rscratch2, retry);
+
+ incr_allocated_bytes(masm, var_size_in_bytes, con_size_in_bytes, t1);
+ }
+}
+
+void BarrierSetAssembler::incr_allocated_bytes(MacroAssembler* masm,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1) {
+ assert(t1->is_valid(), "need temp reg");
+
+ __ ldr(t1, Address(rthread, in_bytes(JavaThread::allocated_bytes_offset())));
+ if (var_size_in_bytes->is_valid()) {
+ __ add(t1, t1, var_size_in_bytes);
+ } else {
+ __ add(t1, t1, con_size_in_bytes);
+ }
+ __ str(t1, Address(rthread, in_bytes(JavaThread::allocated_bytes_offset())));
+}
+
--- a/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -30,6 +30,11 @@
#include "oops/access.hpp"
class BarrierSetAssembler: public CHeapObj<mtGC> {
+private:
+ void incr_allocated_bytes(MacroAssembler* masm,
+ Register var_size_in_bytes, int con_size_in_bytes,
+ Register t1 = noreg);
+
public:
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
Register addr, Register count, RegSet saved_regs) {}
@@ -46,6 +51,22 @@
virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
Register obj, Register tmp, Label& slowpath);
+ virtual void tlab_allocate(MacroAssembler* masm,
+ Register obj, // result: pointer to object after successful allocation
+ Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
+ int con_size_in_bytes, // object size in bytes if known at compile time
+ Register t1, // temp register
+ Register t2, // temp register
+ Label& slow_case // continuation point if fast allocation fails
+ );
+
+ void eden_allocate(MacroAssembler* masm,
+ Register obj, // result: pointer to object after successful allocation
+ Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
+ int con_size_in_bytes, // object size in bytes if known at compile time
+ Register t1, // temp register
+ Label& slow_case // continuation point if fast allocation fails
+ );
virtual void barrier_stubs_init() {}
};
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -2440,24 +2440,6 @@
#undef ATOMIC_XCHG
-void MacroAssembler::incr_allocated_bytes(Register thread,
- Register var_size_in_bytes,
- int con_size_in_bytes,
- Register t1) {
- if (!thread->is_valid()) {
- thread = rthread;
- }
- assert(t1->is_valid(), "need temp reg");
-
- ldr(t1, Address(thread, in_bytes(JavaThread::allocated_bytes_offset())));
- if (var_size_in_bytes->is_valid()) {
- add(t1, t1, var_size_in_bytes);
- } else {
- add(t1, t1, con_size_in_bytes);
- }
- str(t1, Address(thread, in_bytes(JavaThread::allocated_bytes_offset())));
-}
-
#ifndef PRODUCT
extern "C" void findpc(intptr_t x);
#endif
@@ -4085,30 +4067,18 @@
Register t1,
Register t2,
Label& slow_case) {
- assert_different_registers(obj, t2);
- assert_different_registers(obj, var_size_in_bytes);
- Register end = t2;
-
- // verify_tlab();
-
- ldr(obj, Address(rthread, JavaThread::tlab_top_offset()));
- if (var_size_in_bytes == noreg) {
- lea(end, Address(obj, con_size_in_bytes));
- } else {
- lea(end, Address(obj, var_size_in_bytes));
- }
- ldr(rscratch1, Address(rthread, JavaThread::tlab_end_offset()));
- cmp(end, rscratch1);
- br(Assembler::HI, slow_case);
-
- // update the tlab top pointer
- str(end, Address(rthread, JavaThread::tlab_top_offset()));
-
- // recover var_size_in_bytes if necessary
- if (var_size_in_bytes == end) {
- sub(var_size_in_bytes, var_size_in_bytes, obj);
- }
- // verify_tlab();
+ BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
+ bs->tlab_allocate(this, obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
+}
+
+// Defines obj, preserves var_size_in_bytes
+void MacroAssembler::eden_allocate(Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1,
+ Label& slow_case) {
+ BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
+ bs->eden_allocate(this, obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
}
// Zero words; len is in bytes
@@ -4173,61 +4143,6 @@
cbnz(len, loop);
}
-// Defines obj, preserves var_size_in_bytes
-void MacroAssembler::eden_allocate(Register obj,
- Register var_size_in_bytes,
- int con_size_in_bytes,
- Register t1,
- Label& slow_case) {
- assert_different_registers(obj, var_size_in_bytes, t1);
- if (!Universe::heap()->supports_inline_contig_alloc()) {
- b(slow_case);
- } else {
- Register end = t1;
- Register heap_end = rscratch2;
- Label retry;
- bind(retry);
- {
- unsigned long offset;
- adrp(rscratch1, ExternalAddress((address) Universe::heap()->end_addr()), offset);
- ldr(heap_end, Address(rscratch1, offset));
- }
-
- ExternalAddress heap_top((address) Universe::heap()->top_addr());
-
- // Get the current top of the heap
- {
- unsigned long offset;
- adrp(rscratch1, heap_top, offset);
- // Use add() here after ARDP, rather than lea().
- // lea() does not generate anything if its offset is zero.
- // However, relocs expect to find either an ADD or a load/store
- // insn after an ADRP. add() always generates an ADD insn, even
- // for add(Rn, Rn, 0).
- add(rscratch1, rscratch1, offset);
- ldaxr(obj, rscratch1);
- }
-
- // Adjust it my the size of our new object
- if (var_size_in_bytes == noreg) {
- lea(end, Address(obj, con_size_in_bytes));
- } else {
- lea(end, Address(obj, var_size_in_bytes));
- }
-
- // if end < obj then we wrapped around high memory
- cmp(end, obj);
- br(Assembler::LO, slow_case);
-
- cmp(end, heap_end);
- br(Assembler::HI, slow_case);
-
- // If heap_top hasn't been changed by some other thread, update it.
- stlxr(rscratch2, end, rscratch1);
- cbnzw(rscratch2, retry);
- }
-}
-
void MacroAssembler::verify_tlab() {
#ifdef ASSERT
if (UseTLAB && VerifyOops) {
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -866,10 +866,6 @@
void zero_memory(Register addr, Register len, Register t1);
void verify_tlab();
- void incr_allocated_bytes(Register thread,
- Register var_size_in_bytes, int con_size_in_bytes,
- Register t1 = noreg);
-
// interface method calling
void lookup_interface_method(Register recv_klass,
Register intf_klass,
--- a/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -3562,7 +3562,6 @@
// r3: instance size in bytes
if (allow_shared_alloc) {
__ eden_allocate(r0, r3, 0, r10, slow_case);
- __ incr_allocated_bytes(rthread, r3, 0, rscratch1);
}
}
--- a/src/hotspot/cpu/x86/assembler_x86.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/assembler_x86.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -1303,6 +1303,16 @@
emit_int8(0xC0 | encode);
}
+void Assembler::vaesdec(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
+ assert(VM_Version::supports_vaes(), "");
+ InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
+ int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8((unsigned char)0xDE);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
+
void Assembler::aesdeclast(XMMRegister dst, Address src) {
assert(VM_Version::supports_aes(), "");
InstructionMark im(this);
@@ -1320,6 +1330,15 @@
emit_int8((unsigned char)(0xC0 | encode));
}
+void Assembler::vaesdeclast(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
+ assert(VM_Version::supports_vaes(), "");
+ InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
+ int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8((unsigned char)0xDF);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
void Assembler::aesenc(XMMRegister dst, Address src) {
assert(VM_Version::supports_aes(), "");
InstructionMark im(this);
@@ -4391,6 +4410,15 @@
emit_int8(imm8);
}
+void Assembler::evalignq(XMMRegister dst, XMMRegister nds, XMMRegister src, uint8_t imm8) {
+ assert(VM_Version::supports_evex(), "");
+ InstructionAttr attributes(AVX_512bit, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
+ emit_int8(0x3);
+ emit_int8((unsigned char)(0xC0 | encode));
+ emit_int8(imm8);
+}
+
void Assembler::pblendw(XMMRegister dst, XMMRegister src, int imm8) {
assert(VM_Version::supports_sse4_1(), "");
InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
@@ -6708,7 +6736,29 @@
emit_int8(0x59);
emit_operand(dst, src);
}
-
+void Assembler::evbroadcasti64x2(XMMRegister dst, XMMRegister src, int vector_len) {
+ assert(vector_len != Assembler::AVX_128bit, "");
+ assert(VM_Version::supports_avx512dq(), "");
+ InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8(0x5A);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
+void Assembler::evbroadcasti64x2(XMMRegister dst, Address src, int vector_len) {
+ assert(vector_len != Assembler::AVX_128bit, "");
+ assert(VM_Version::supports_avx512dq(), "");
+ assert(dst != xnoreg, "sanity");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
+ attributes.set_address_attributes(/* tuple_type */ EVEX_T2, /* input_size_in_bits */ EVEX_64bit);
+ // swap src<->dst for encoding
+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8(0x5A);
+ emit_operand(dst, src);
+}
// scalar single/double precision replicate
--- a/src/hotspot/cpu/x86/assembler_x86.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/assembler_x86.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -926,7 +926,8 @@
void aesenc(XMMRegister dst, XMMRegister src);
void aesenclast(XMMRegister dst, Address src);
void aesenclast(XMMRegister dst, XMMRegister src);
-
+ void vaesdec(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
+ void vaesdeclast(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
void andl(Address dst, int32_t imm32);
void andl(Register dst, int32_t imm32);
@@ -1739,6 +1740,7 @@
void palignr(XMMRegister dst, XMMRegister src, int imm8);
void vpalignr(XMMRegister dst, XMMRegister src1, XMMRegister src2, int imm8, int vector_len);
+ void evalignq(XMMRegister dst, XMMRegister nds, XMMRegister src, uint8_t imm8);
void pblendw(XMMRegister dst, XMMRegister src, int imm8);
@@ -2102,6 +2104,9 @@
void evpbroadcastq(XMMRegister dst, XMMRegister src, int vector_len);
void evpbroadcastq(XMMRegister dst, Address src, int vector_len);
+ void evbroadcasti64x2(XMMRegister dst, XMMRegister src, int vector_len);
+ void evbroadcasti64x2(XMMRegister dst, Address src, int vector_len);
+
// scalar single/double precision replicate
void evpbroadcastss(XMMRegister dst, XMMRegister src, int vector_len);
void evpbroadcastss(XMMRegister dst, Address src, int vector_len);
--- a/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -139,10 +139,9 @@
// Defines obj, preserves var_size_in_bytes
void C1_MacroAssembler::try_allocate(Register obj, Register var_size_in_bytes, int con_size_in_bytes, Register t1, Register t2, Label& slow_case) {
if (UseTLAB) {
- tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
+ tlab_allocate(noreg, obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
} else {
- eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
- incr_allocated_bytes(noreg, var_size_in_bytes, con_size_in_bytes, t1);
+ eden_allocate(noreg, obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
}
}
--- a/src/hotspot/cpu/x86/c1_Runtime1_x86.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/c1_Runtime1_x86.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -1056,8 +1056,7 @@
// get the instance size (size is postive so movl is fine for 64bit)
__ movl(obj_size, Address(klass, Klass::layout_helper_offset()));
- __ eden_allocate(obj, obj_size, 0, t1, slow_path);
- __ incr_allocated_bytes(thread, obj_size, 0);
+ __ eden_allocate(thread, obj, obj_size, 0, t1, slow_path);
__ initialize_object(obj, klass, obj_size, 0, t1, t2, /* is_tlab_allocated */ false);
__ verify_oop(obj);
@@ -1155,12 +1154,10 @@
__ addptr(arr_size, MinObjAlignmentInBytesMask); // align up
__ andptr(arr_size, ~MinObjAlignmentInBytesMask);
- __ eden_allocate(obj, arr_size, 0, t1, slow_path); // preserves arr_size
-
// Using t2 for non 64-bit.
const Register thread = NOT_LP64(t2) LP64_ONLY(r15_thread);
NOT_LP64(__ get_thread(thread));
- __ incr_allocated_bytes(thread, arr_size, 0);
+ __ eden_allocate(thread, obj, arr_size, 0, t1, slow_path); // preserves arr_size
__ initialize_header(obj, klass, length, t1, t2);
__ movb(t1, Address(klass, in_bytes(Klass::layout_helper_offset()) + (Klass::_lh_header_size_shift / BitsPerByte)));
--- a/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -24,8 +24,10 @@
#include "precompiled.hpp"
#include "gc/shared/barrierSetAssembler.hpp"
+#include "gc/shared/collectedHeap.hpp"
#include "interpreter/interp_masm.hpp"
#include "runtime/jniHandles.hpp"
+#include "runtime/thread.hpp"
#define __ masm->
@@ -213,3 +215,110 @@
__ clear_jweak_tag(obj);
__ movptr(obj, Address(obj, 0));
}
+
+void BarrierSetAssembler::tlab_allocate(MacroAssembler* masm,
+ Register thread, Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1,
+ Register t2,
+ Label& slow_case) {
+ assert_different_registers(obj, t1, t2);
+ assert_different_registers(obj, var_size_in_bytes, t1);
+ Register end = t2;
+ if (!thread->is_valid()) {
+#ifdef _LP64
+ thread = r15_thread;
+#else
+ assert(t1->is_valid(), "need temp reg");
+ thread = t1;
+ __ get_thread(thread);
+#endif
+ }
+
+ __ verify_tlab();
+
+ __ movptr(obj, Address(thread, JavaThread::tlab_top_offset()));
+ if (var_size_in_bytes == noreg) {
+ __ lea(end, Address(obj, con_size_in_bytes));
+ } else {
+ __ lea(end, Address(obj, var_size_in_bytes, Address::times_1));
+ }
+ __ cmpptr(end, Address(thread, JavaThread::tlab_end_offset()));
+ __ jcc(Assembler::above, slow_case);
+
+ // update the tlab top pointer
+ __ movptr(Address(thread, JavaThread::tlab_top_offset()), end);
+
+ // recover var_size_in_bytes if necessary
+ if (var_size_in_bytes == end) {
+ __ subptr(var_size_in_bytes, obj);
+ }
+ __ verify_tlab();
+}
+
+// Defines obj, preserves var_size_in_bytes
+void BarrierSetAssembler::eden_allocate(MacroAssembler* masm,
+ Register thread, Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1,
+ Label& slow_case) {
+ assert(obj == rax, "obj must be in rax, for cmpxchg");
+ assert_different_registers(obj, var_size_in_bytes, t1);
+ if (!Universe::heap()->supports_inline_contig_alloc()) {
+ __ jmp(slow_case);
+ } else {
+ Register end = t1;
+ Label retry;
+ __ bind(retry);
+ ExternalAddress heap_top((address) Universe::heap()->top_addr());
+ __ movptr(obj, heap_top);
+ if (var_size_in_bytes == noreg) {
+ __ lea(end, Address(obj, con_size_in_bytes));
+ } else {
+ __ lea(end, Address(obj, var_size_in_bytes, Address::times_1));
+ }
+ // if end < obj then we wrapped around => object too long => slow case
+ __ cmpptr(end, obj);
+ __ jcc(Assembler::below, slow_case);
+ __ cmpptr(end, ExternalAddress((address) Universe::heap()->end_addr()));
+ __ jcc(Assembler::above, slow_case);
+ // Compare obj with the top addr, and if still equal, store the new top addr in
+ // end at the address of the top addr pointer. Sets ZF if was equal, and clears
+ // it otherwise. Use lock prefix for atomicity on MPs.
+ __ locked_cmpxchgptr(end, heap_top);
+ __ jcc(Assembler::notEqual, retry);
+ incr_allocated_bytes(masm, thread, var_size_in_bytes, con_size_in_bytes, thread->is_valid() ? noreg : t1);
+ }
+}
+
+void BarrierSetAssembler::incr_allocated_bytes(MacroAssembler* masm, Register thread,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1) {
+ if (!thread->is_valid()) {
+#ifdef _LP64
+ thread = r15_thread;
+#else
+ assert(t1->is_valid(), "need temp reg");
+ thread = t1;
+ __ get_thread(thread);
+#endif
+ }
+
+#ifdef _LP64
+ if (var_size_in_bytes->is_valid()) {
+ __ addq(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), var_size_in_bytes);
+ } else {
+ __ addq(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), con_size_in_bytes);
+ }
+#else
+ if (var_size_in_bytes->is_valid()) {
+ __ addl(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), var_size_in_bytes);
+ } else {
+ __ addl(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), con_size_in_bytes);
+ }
+ __ adcl(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())+4), 0);
+#endif
+}
--- a/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -32,7 +32,12 @@
class InterpreterMacroAssembler;
class BarrierSetAssembler: public CHeapObj<mtGC> {
-protected:
+private:
+ void incr_allocated_bytes(MacroAssembler* masm, Register thread,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1);
+
public:
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register src, Register dst, Register count) {}
@@ -60,6 +65,19 @@
virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
Register obj, Register tmp, Label& slowpath);
+ virtual void tlab_allocate(MacroAssembler* masm,
+ Register thread, Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1, Register t2,
+ Label& slow_case);
+ virtual void eden_allocate(MacroAssembler* masm,
+ Register thread, Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1,
+ Label& slow_case);
+
virtual void barrier_stubs_init() {}
};
--- a/src/hotspot/cpu/x86/macroAssembler_x86.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/macroAssembler_x86.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -2959,40 +2959,6 @@
#endif // !LP64 || C1 || !C2 || INCLUDE_JVMCI
-// Defines obj, preserves var_size_in_bytes
-void MacroAssembler::eden_allocate(Register obj,
- Register var_size_in_bytes,
- int con_size_in_bytes,
- Register t1,
- Label& slow_case) {
- assert(obj == rax, "obj must be in rax, for cmpxchg");
- assert_different_registers(obj, var_size_in_bytes, t1);
- if (!Universe::heap()->supports_inline_contig_alloc()) {
- jmp(slow_case);
- } else {
- Register end = t1;
- Label retry;
- bind(retry);
- ExternalAddress heap_top((address) Universe::heap()->top_addr());
- movptr(obj, heap_top);
- if (var_size_in_bytes == noreg) {
- lea(end, Address(obj, con_size_in_bytes));
- } else {
- lea(end, Address(obj, var_size_in_bytes, Address::times_1));
- }
- // if end < obj then we wrapped around => object too long => slow case
- cmpptr(end, obj);
- jcc(Assembler::below, slow_case);
- cmpptr(end, ExternalAddress((address) Universe::heap()->end_addr()));
- jcc(Assembler::above, slow_case);
- // Compare obj with the top addr, and if still equal, store the new top addr in
- // end at the address of the top addr pointer. Sets ZF if was equal, and clears
- // it otherwise. Use lock prefix for atomicity on MPs.
- locked_cmpxchgptr(end, heap_top);
- jcc(Assembler::notEqual, retry);
- }
-}
-
void MacroAssembler::enter() {
push(rbp);
mov(rbp, rsp);
@@ -5310,38 +5276,24 @@
}
// Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes.
-void MacroAssembler::tlab_allocate(Register obj,
+void MacroAssembler::tlab_allocate(Register thread, Register obj,
Register var_size_in_bytes,
int con_size_in_bytes,
Register t1,
Register t2,
Label& slow_case) {
- assert_different_registers(obj, t1, t2);
- assert_different_registers(obj, var_size_in_bytes, t1);
- Register end = t2;
- Register thread = NOT_LP64(t1) LP64_ONLY(r15_thread);
-
- verify_tlab();
-
- NOT_LP64(get_thread(thread));
-
- movptr(obj, Address(thread, JavaThread::tlab_top_offset()));
- if (var_size_in_bytes == noreg) {
- lea(end, Address(obj, con_size_in_bytes));
- } else {
- lea(end, Address(obj, var_size_in_bytes, Address::times_1));
- }
- cmpptr(end, Address(thread, JavaThread::tlab_end_offset()));
- jcc(Assembler::above, slow_case);
-
- // update the tlab top pointer
- movptr(Address(thread, JavaThread::tlab_top_offset()), end);
-
- // recover var_size_in_bytes if necessary
- if (var_size_in_bytes == end) {
- subptr(var_size_in_bytes, obj);
- }
- verify_tlab();
+ BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
+ bs->tlab_allocate(this, thread, obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
+}
+
+// Defines obj, preserves var_size_in_bytes
+void MacroAssembler::eden_allocate(Register thread, Register obj,
+ Register var_size_in_bytes,
+ int con_size_in_bytes,
+ Register t1,
+ Label& slow_case) {
+ BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
+ bs->eden_allocate(this, thread, obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
}
// Preserves the contents of address, destroys the contents length_in_bytes and temp.
@@ -5400,36 +5352,6 @@
bind(done);
}
-void MacroAssembler::incr_allocated_bytes(Register thread,
- Register var_size_in_bytes,
- int con_size_in_bytes,
- Register t1) {
- if (!thread->is_valid()) {
-#ifdef _LP64
- thread = r15_thread;
-#else
- assert(t1->is_valid(), "need temp reg");
- thread = t1;
- get_thread(thread);
-#endif
- }
-
-#ifdef _LP64
- if (var_size_in_bytes->is_valid()) {
- addq(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), var_size_in_bytes);
- } else {
- addq(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), con_size_in_bytes);
- }
-#else
- if (var_size_in_bytes->is_valid()) {
- addl(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), var_size_in_bytes);
- } else {
- addl(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())), con_size_in_bytes);
- }
- adcl(Address(thread, in_bytes(JavaThread::allocated_bytes_offset())+4), 0);
-#endif
-}
-
// Look up the method for a megamorphic invokeinterface call.
// The target method is determined by <intf_klass, itable_index>.
// The receiver klass is in recv_klass.
--- a/src/hotspot/cpu/x86/macroAssembler_x86.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/macroAssembler_x86.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -504,6 +504,7 @@
// allocation
void eden_allocate(
+ Register thread, // Current thread
Register obj, // result: pointer to object after successful allocation
Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
int con_size_in_bytes, // object size in bytes if known at compile time
@@ -511,6 +512,7 @@
Label& slow_case // continuation point if fast allocation fails
);
void tlab_allocate(
+ Register thread, // Current thread
Register obj, // result: pointer to object after successful allocation
Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
int con_size_in_bytes, // object size in bytes if known at compile time
@@ -520,10 +522,6 @@
);
void zero_memory(Register address, Register length_in_bytes, int offset_in_bytes, Register temp);
- void incr_allocated_bytes(Register thread,
- Register var_size_in_bytes, int con_size_in_bytes,
- Register t1 = noreg);
-
// interface method calling
void lookup_interface_method(Register recv_klass,
Register intf_klass,
--- a/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -4084,6 +4084,312 @@
return start;
}
+void roundDec(XMMRegister xmm_reg) {
+ __ vaesdec(xmm1, xmm1, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdec(xmm2, xmm2, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdec(xmm3, xmm3, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdec(xmm4, xmm4, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdec(xmm5, xmm5, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdec(xmm6, xmm6, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdec(xmm7, xmm7, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdec(xmm8, xmm8, xmm_reg, Assembler::AVX_512bit);
+}
+
+void roundDeclast(XMMRegister xmm_reg) {
+ __ vaesdeclast(xmm1, xmm1, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdeclast(xmm2, xmm2, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdeclast(xmm3, xmm3, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdeclast(xmm4, xmm4, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdeclast(xmm5, xmm5, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdeclast(xmm6, xmm6, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdeclast(xmm7, xmm7, xmm_reg, Assembler::AVX_512bit);
+ __ vaesdeclast(xmm8, xmm8, xmm_reg, Assembler::AVX_512bit);
+}
+
+ void ev_load_key(XMMRegister xmmdst, Register key, int offset, XMMRegister xmm_shuf_mask = NULL) {
+ __ movdqu(xmmdst, Address(key, offset));
+ if (xmm_shuf_mask != NULL) {
+ __ pshufb(xmmdst, xmm_shuf_mask);
+ } else {
+ __ pshufb(xmmdst, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+ }
+ __ evshufi64x2(xmmdst, xmmdst, xmmdst, 0x0, Assembler::AVX_512bit);
+
+ }
+
+address generate_cipherBlockChaining_decryptVectorAESCrypt() {
+ assert(VM_Version::supports_vaes(), "need AES instructions and misaligned SSE support");
+ __ align(CodeEntryAlignment);
+ StubCodeMark mark(this, "StubRoutines", "cipherBlockChaining_decryptAESCrypt");
+ address start = __ pc();
+
+ const Register from = c_rarg0; // source array address
+ const Register to = c_rarg1; // destination array address
+ const Register key = c_rarg2; // key array address
+ const Register rvec = c_rarg3; // r byte array initialized from initvector array address
+ // and left with the results of the last encryption block
+#ifndef _WIN64
+ const Register len_reg = c_rarg4; // src len (must be multiple of blocksize 16)
+#else
+ const Address len_mem(rbp, 6 * wordSize); // length is on stack on Win64
+ const Register len_reg = r11; // pick the volatile windows register
+#endif
+
+ Label Loop, Loop1, L_128, L_256, L_192, KEY_192, KEY_256, Loop2, Lcbc_dec_rem_loop,
+ Lcbc_dec_rem_last, Lcbc_dec_ret, Lcbc_dec_rem, Lcbc_exit;
+
+ __ enter();
+
+#ifdef _WIN64
+ // on win64, fill len_reg from stack position
+ __ movl(len_reg, len_mem);
+#else
+ __ push(len_reg); // Save
+#endif
+ __ push(rbx);
+ __ vzeroupper();
+
+ // Temporary variable declaration for swapping key bytes
+ const XMMRegister xmm_key_shuf_mask = xmm1;
+ __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+
+ // Calculate number of rounds from key size: 44 for 10-rounds, 52 for 12-rounds, 60 for 14-rounds
+ const Register rounds = rbx;
+ __ movl(rounds, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+
+ const XMMRegister IV = xmm0;
+ // Load IV and broadcast value to 512-bits
+ __ evbroadcasti64x2(IV, Address(rvec, 0), Assembler::AVX_512bit);
+
+ // Temporary variables for storing round keys
+ const XMMRegister RK0 = xmm30;
+ const XMMRegister RK1 = xmm9;
+ const XMMRegister RK2 = xmm18;
+ const XMMRegister RK3 = xmm19;
+ const XMMRegister RK4 = xmm20;
+ const XMMRegister RK5 = xmm21;
+ const XMMRegister RK6 = xmm22;
+ const XMMRegister RK7 = xmm23;
+ const XMMRegister RK8 = xmm24;
+ const XMMRegister RK9 = xmm25;
+ const XMMRegister RK10 = xmm26;
+
+ // Load and shuffle key
+ // the java expanded key ordering is rotated one position from what we want
+ // so we start from 1*16 here and hit 0*16 last
+ ev_load_key(RK1, key, 1 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK2, key, 2 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK3, key, 3 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK4, key, 4 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK5, key, 5 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK6, key, 6 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK7, key, 7 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK8, key, 8 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK9, key, 9 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK10, key, 10 * 16, xmm_key_shuf_mask);
+ ev_load_key(RK0, key, 0*16, xmm_key_shuf_mask);
+
+ // Variables for storing source cipher text
+ const XMMRegister S0 = xmm10;
+ const XMMRegister S1 = xmm11;
+ const XMMRegister S2 = xmm12;
+ const XMMRegister S3 = xmm13;
+ const XMMRegister S4 = xmm14;
+ const XMMRegister S5 = xmm15;
+ const XMMRegister S6 = xmm16;
+ const XMMRegister S7 = xmm17;
+
+ // Variables for storing decrypted text
+ const XMMRegister B0 = xmm1;
+ const XMMRegister B1 = xmm2;
+ const XMMRegister B2 = xmm3;
+ const XMMRegister B3 = xmm4;
+ const XMMRegister B4 = xmm5;
+ const XMMRegister B5 = xmm6;
+ const XMMRegister B6 = xmm7;
+ const XMMRegister B7 = xmm8;
+
+ __ cmpl(rounds, 44);
+ __ jcc(Assembler::greater, KEY_192);
+ __ jmp(Loop);
+
+ __ BIND(KEY_192);
+ const XMMRegister RK11 = xmm27;
+ const XMMRegister RK12 = xmm28;
+ ev_load_key(RK11, key, 11*16, xmm_key_shuf_mask);
+ ev_load_key(RK12, key, 12*16, xmm_key_shuf_mask);
+
+ __ cmpl(rounds, 52);
+ __ jcc(Assembler::greater, KEY_256);
+ __ jmp(Loop);
+
+ __ BIND(KEY_256);
+ const XMMRegister RK13 = xmm29;
+ const XMMRegister RK14 = xmm31;
+ ev_load_key(RK13, key, 13*16, xmm_key_shuf_mask);
+ ev_load_key(RK14, key, 14*16, xmm_key_shuf_mask);
+
+ __ BIND(Loop);
+ __ cmpl(len_reg, 512);
+ __ jcc(Assembler::below, Lcbc_dec_rem);
+ __ BIND(Loop1);
+ __ subl(len_reg, 512);
+ __ evmovdquq(S0, Address(from, 0 * 64), Assembler::AVX_512bit);
+ __ evmovdquq(S1, Address(from, 1 * 64), Assembler::AVX_512bit);
+ __ evmovdquq(S2, Address(from, 2 * 64), Assembler::AVX_512bit);
+ __ evmovdquq(S3, Address(from, 3 * 64), Assembler::AVX_512bit);
+ __ evmovdquq(S4, Address(from, 4 * 64), Assembler::AVX_512bit);
+ __ evmovdquq(S5, Address(from, 5 * 64), Assembler::AVX_512bit);
+ __ evmovdquq(S6, Address(from, 6 * 64), Assembler::AVX_512bit);
+ __ evmovdquq(S7, Address(from, 7 * 64), Assembler::AVX_512bit);
+ __ leaq(from, Address(from, 8 * 64));
+
+ __ evpxorq(B0, S0, RK1, Assembler::AVX_512bit);
+ __ evpxorq(B1, S1, RK1, Assembler::AVX_512bit);
+ __ evpxorq(B2, S2, RK1, Assembler::AVX_512bit);
+ __ evpxorq(B3, S3, RK1, Assembler::AVX_512bit);
+ __ evpxorq(B4, S4, RK1, Assembler::AVX_512bit);
+ __ evpxorq(B5, S5, RK1, Assembler::AVX_512bit);
+ __ evpxorq(B6, S6, RK1, Assembler::AVX_512bit);
+ __ evpxorq(B7, S7, RK1, Assembler::AVX_512bit);
+
+ __ evalignq(IV, S0, IV, 0x06);
+ __ evalignq(S0, S1, S0, 0x06);
+ __ evalignq(S1, S2, S1, 0x06);
+ __ evalignq(S2, S3, S2, 0x06);
+ __ evalignq(S3, S4, S3, 0x06);
+ __ evalignq(S4, S5, S4, 0x06);
+ __ evalignq(S5, S6, S5, 0x06);
+ __ evalignq(S6, S7, S6, 0x06);
+
+ roundDec(RK2);
+ roundDec(RK3);
+ roundDec(RK4);
+ roundDec(RK5);
+ roundDec(RK6);
+ roundDec(RK7);
+ roundDec(RK8);
+ roundDec(RK9);
+ roundDec(RK10);
+
+ __ cmpl(rounds, 44);
+ __ jcc(Assembler::belowEqual, L_128);
+ roundDec(RK11);
+ roundDec(RK12);
+
+ __ cmpl(rounds, 52);
+ __ jcc(Assembler::belowEqual, L_192);
+ roundDec(RK13);
+ roundDec(RK14);
+
+ __ BIND(L_256);
+ roundDeclast(RK0);
+ __ jmp(Loop2);
+
+ __ BIND(L_128);
+ roundDeclast(RK0);
+ __ jmp(Loop2);
+
+ __ BIND(L_192);
+ roundDeclast(RK0);
+
+ __ BIND(Loop2);
+ __ evpxorq(B0, B0, IV, Assembler::AVX_512bit);
+ __ evpxorq(B1, B1, S0, Assembler::AVX_512bit);
+ __ evpxorq(B2, B2, S1, Assembler::AVX_512bit);
+ __ evpxorq(B3, B3, S2, Assembler::AVX_512bit);
+ __ evpxorq(B4, B4, S3, Assembler::AVX_512bit);
+ __ evpxorq(B5, B5, S4, Assembler::AVX_512bit);
+ __ evpxorq(B6, B6, S5, Assembler::AVX_512bit);
+ __ evpxorq(B7, B7, S6, Assembler::AVX_512bit);
+ __ evmovdquq(IV, S7, Assembler::AVX_512bit);
+
+ __ evmovdquq(Address(to, 0 * 64), B0, Assembler::AVX_512bit);
+ __ evmovdquq(Address(to, 1 * 64), B1, Assembler::AVX_512bit);
+ __ evmovdquq(Address(to, 2 * 64), B2, Assembler::AVX_512bit);
+ __ evmovdquq(Address(to, 3 * 64), B3, Assembler::AVX_512bit);
+ __ evmovdquq(Address(to, 4 * 64), B4, Assembler::AVX_512bit);
+ __ evmovdquq(Address(to, 5 * 64), B5, Assembler::AVX_512bit);
+ __ evmovdquq(Address(to, 6 * 64), B6, Assembler::AVX_512bit);
+ __ evmovdquq(Address(to, 7 * 64), B7, Assembler::AVX_512bit);
+ __ leaq(to, Address(to, 8 * 64));
+ __ jmp(Loop);
+
+ __ BIND(Lcbc_dec_rem);
+ __ evshufi64x2(IV, IV, IV, 0x03, Assembler::AVX_512bit);
+
+ __ BIND(Lcbc_dec_rem_loop);
+ __ subl(len_reg, 16);
+ __ jcc(Assembler::carrySet, Lcbc_dec_ret);
+
+ __ movdqu(S0, Address(from, 0));
+ __ evpxorq(B0, S0, RK1, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK2, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK3, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK4, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK5, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK6, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK7, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK8, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK9, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK10, Assembler::AVX_512bit);
+ __ cmpl(rounds, 44);
+ __ jcc(Assembler::belowEqual, Lcbc_dec_rem_last);
+
+ __ vaesdec(B0, B0, RK11, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK12, Assembler::AVX_512bit);
+ __ cmpl(rounds, 52);
+ __ jcc(Assembler::belowEqual, Lcbc_dec_rem_last);
+
+ __ vaesdec(B0, B0, RK13, Assembler::AVX_512bit);
+ __ vaesdec(B0, B0, RK14, Assembler::AVX_512bit);
+
+ __ BIND(Lcbc_dec_rem_last);
+ __ vaesdeclast(B0, B0, RK0, Assembler::AVX_512bit);
+
+ __ evpxorq(B0, B0, IV, Assembler::AVX_512bit);
+ __ evmovdquq(IV, S0, Assembler::AVX_512bit);
+ __ movdqu(Address(to, 0), B0);
+ __ leaq(from, Address(from, 16));
+ __ leaq(to, Address(to, 16));
+ __ jmp(Lcbc_dec_rem_loop);
+
+ __ BIND(Lcbc_dec_ret);
+ __ movdqu(Address(rvec, 0), IV);
+
+ // Zero out the round keys
+ __ evpxorq(RK0, RK0, RK0, Assembler::AVX_512bit);
+ __ evpxorq(RK1, RK1, RK1, Assembler::AVX_512bit);
+ __ evpxorq(RK2, RK2, RK2, Assembler::AVX_512bit);
+ __ evpxorq(RK3, RK3, RK3, Assembler::AVX_512bit);
+ __ evpxorq(RK4, RK4, RK4, Assembler::AVX_512bit);
+ __ evpxorq(RK5, RK5, RK5, Assembler::AVX_512bit);
+ __ evpxorq(RK6, RK6, RK6, Assembler::AVX_512bit);
+ __ evpxorq(RK7, RK7, RK7, Assembler::AVX_512bit);
+ __ evpxorq(RK8, RK8, RK8, Assembler::AVX_512bit);
+ __ evpxorq(RK9, RK9, RK9, Assembler::AVX_512bit);
+ __ evpxorq(RK10, RK10, RK10, Assembler::AVX_512bit);
+ __ cmpl(rounds, 44);
+ __ jcc(Assembler::belowEqual, Lcbc_exit);
+ __ evpxorq(RK11, RK11, RK11, Assembler::AVX_512bit);
+ __ evpxorq(RK12, RK12, RK12, Assembler::AVX_512bit);
+ __ cmpl(rounds, 52);
+ __ jcc(Assembler::belowEqual, Lcbc_exit);
+ __ evpxorq(RK13, RK13, RK13, Assembler::AVX_512bit);
+ __ evpxorq(RK14, RK14, RK14, Assembler::AVX_512bit);
+
+ __ BIND(Lcbc_exit);
+ __ pop(rbx);
+#ifdef _WIN64
+ __ movl(rax, len_mem);
+#else
+ __ pop(rax); // return length
+#endif
+ __ leave(); // required for proper stackwalking of RuntimeStub frame
+ __ ret(0);
+ return start;
+}
+
// byte swap x86 long
address generate_ghash_long_swap_mask() {
__ align(CodeEntryAlignment);
@@ -5078,7 +5384,11 @@
StubRoutines::_aescrypt_encryptBlock = generate_aescrypt_encryptBlock();
StubRoutines::_aescrypt_decryptBlock = generate_aescrypt_decryptBlock();
StubRoutines::_cipherBlockChaining_encryptAESCrypt = generate_cipherBlockChaining_encryptAESCrypt();
- StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt_Parallel();
+ if (VM_Version::supports_vaes() && VM_Version::supports_avx512vl() && VM_Version::supports_avx512dq() ) {
+ StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptVectorAESCrypt();
+ } else {
+ StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt_Parallel();
+ }
}
if (UseAESCTRIntrinsics){
StubRoutines::x86::_counter_shuffle_mask_addr = generate_counter_shuffle_mask();
--- a/src/hotspot/cpu/x86/templateTable_x86.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/templateTable_x86.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -4013,7 +4013,7 @@
#endif // _LP64
if (UseTLAB) {
- __ tlab_allocate(rax, rdx, 0, rcx, rbx, slow_case);
+ __ tlab_allocate(thread, rax, rdx, 0, rcx, rbx, slow_case);
if (ZeroTLAB) {
// the fields have been already cleared
__ jmp(initialize_header);
@@ -4025,10 +4025,7 @@
// Allocation in the shared Eden, if allowed.
//
// rdx: instance size in bytes
- if (allow_shared_alloc) {
- __ eden_allocate(rax, rdx, 0, rbx, slow_case);
- __ incr_allocated_bytes(thread, rdx, 0);
- }
+ __ eden_allocate(thread, rax, rdx, 0, rbx, slow_case);
}
// If UseTLAB or allow_shared_alloc are true, the object is created above and
--- a/src/hotspot/cpu/x86/vm_version_x86.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/vm_version_x86.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -666,6 +666,7 @@
_features &= ~CPU_AVX512VL;
_features &= ~CPU_AVX512_VPOPCNTDQ;
_features &= ~CPU_VPCLMULQDQ;
+ _features &= ~CPU_VAES;
}
if (UseAVX < 2)
--- a/src/hotspot/cpu/x86/vm_version_x86.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/cpu/x86/vm_version_x86.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -335,6 +335,7 @@
#define CPU_VZEROUPPER ((uint64_t)UCONST64(0x1000000000)) // Vzeroupper instruction
#define CPU_AVX512_VPOPCNTDQ ((uint64_t)UCONST64(0x2000000000)) // Vector popcount
#define CPU_VPCLMULQDQ ((uint64_t)UCONST64(0x4000000000)) //Vector carryless multiplication
+#define CPU_VAES ((uint64_t)UCONST64(0x8000000000)) // Vector AES instructions
enum Extended_Family {
// AMD
@@ -545,6 +546,8 @@
result |= CPU_AVX512_VPOPCNTDQ;
if (_cpuid_info.sef_cpuid7_ecx.bits.vpclmulqdq != 0)
result |= CPU_VPCLMULQDQ;
+ if (_cpuid_info.sef_cpuid7_ecx.bits.vaes != 0)
+ result |= CPU_VAES;
}
}
if(_cpuid_info.sef_cpuid7_ebx.bits.bmi1 != 0)
@@ -823,6 +826,7 @@
static bool supports_vzeroupper() { return (_features & CPU_VZEROUPPER) != 0; }
static bool supports_vpopcntdq() { return (_features & CPU_AVX512_VPOPCNTDQ) != 0; }
static bool supports_vpclmulqdq() { return (_features & CPU_VPCLMULQDQ) != 0; }
+ static bool supports_vaes() { return (_features & CPU_VAES) != 0; }
// Intel features
static bool is_intel_family_core() { return is_intel() &&
--- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -66,7 +66,6 @@
_free_list_mspace(NULL),
_epoch_transition_mspace(NULL),
_lock(NULL),
- _type_manager(NULL),
_service_thread(NULL),
_chunkwriter(cw),
_checkpoint_epoch_state(JfrTraceIdEpoch::epoch()) {}
@@ -81,9 +80,7 @@
if (_lock != NULL) {
delete _lock;
}
- if (_type_manager) {
- delete _type_manager;
- }
+ JfrTypeManager::clear();
}
static const size_t unlimited_mspace_size = 0;
@@ -109,14 +106,12 @@
if (_epoch_transition_mspace == NULL) {
return false;
}
- assert(_type_manager == NULL, "invariant");
- _type_manager = new JfrTypeManager();
- if (_type_manager == NULL || !_type_manager->initialize()) {
+ assert(_lock == NULL, "invariant");
+ _lock = new Mutex(Monitor::leaf - 1, "Checkpoint mutex", Mutex::_allow_vm_block_flag, Monitor::_safepoint_check_never);
+ if (_lock == NULL) {
return false;
}
- assert(_lock == NULL, "invariant");
- _lock = new Mutex(Monitor::leaf - 1, "Checkpoint mutex", Mutex::_allow_vm_block_flag, Monitor::_safepoint_check_never);
- return _lock != NULL;
+ return JfrTypeManager::initialize();
}
bool JfrCheckpointManager::use_epoch_transition_mspace(const Thread* thread) const {
@@ -354,37 +349,32 @@
return discarder.processed();
}
-bool JfrCheckpointManager::register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* cs) {
- assert(cs != NULL, "invariant");
- return instance()._type_manager->register_serializer(id, require_safepoint, permit_cache, cs);
-}
-
size_t JfrCheckpointManager::write_types() {
JfrCheckpointWriter writer(false, true, Thread::current());
- _type_manager->write_types(writer);
+ JfrTypeManager::write_types(writer);
return writer.used_size();
}
size_t JfrCheckpointManager::write_safepoint_types() {
// this is also a "flushpoint"
JfrCheckpointWriter writer(true, true, Thread::current());
- _type_manager->write_safepoint_types(writer);
+ JfrTypeManager::write_safepoint_types(writer);
return writer.used_size();
}
void JfrCheckpointManager::write_type_set() {
- _type_manager->write_type_set();
+ JfrTypeManager::write_type_set();
}
void JfrCheckpointManager::write_type_set_for_unloaded_classes() {
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!");
- instance()._type_manager->write_type_set_for_unloaded_classes();
+ JfrTypeManager::write_type_set_for_unloaded_classes();
}
void JfrCheckpointManager::create_thread_checkpoint(JavaThread* jt) {
- instance()._type_manager->create_thread_checkpoint(jt);
+ JfrTypeManager::create_thread_checkpoint(jt);
}
void JfrCheckpointManager::write_thread_checkpoint(JavaThread* jt) {
- instance()._type_manager->write_thread_checkpoint(jt);
+ JfrTypeManager::write_thread_checkpoint(jt);
}
--- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -28,7 +28,6 @@
#include "jfr/recorder/storage/jfrBuffer.hpp"
#include "jfr/recorder/storage/jfrMemorySpace.hpp"
#include "jfr/recorder/storage/jfrMemorySpaceRetrieval.hpp"
-#include "jfr/utilities/jfrTypes.hpp"
class JfrCheckpointManager;
class JfrChunkWriter;
@@ -59,7 +58,6 @@
JfrCheckpointMspace* _free_list_mspace;
JfrCheckpointMspace* _epoch_transition_mspace;
Mutex* _lock;
- JfrTypeManager* _type_manager;
const Thread* _service_thread;
JfrChunkWriter& _chunkwriter;
bool _checkpoint_epoch_state;
@@ -91,8 +89,6 @@
bool initialize();
static void destroy();
- static bool register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* serializer);
-
public:
void register_service_thread(const Thread* t);
static void write_type_set_for_unloaded_classes();
--- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -63,12 +63,6 @@
#include "gc/z/zStat.hpp"
#endif
-// implementation for the static registration function exposed in the api
-bool JfrSerializer::register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* cs) {
- assert(cs != NULL, "invariant");
- return JfrCheckpointManager::register_serializer(id, require_safepoint, permit_cache, cs);
-}
-
class JfrCheckpointThreadCountClosure : public ThreadClosure {
private:
u4 _total_threads;
@@ -357,8 +351,6 @@
writer.write_key(counter->id());
writer.write(counter->name());
}
-#else
- writer.write_count(0);
#endif
}
@@ -369,7 +361,5 @@
writer.write_key(sampler->id());
writer.write(sampler->name());
}
-#else
- writer.write_count(0);
#endif
}
--- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -23,107 +23,131 @@
*/
#include "precompiled.hpp"
+#include "jfr/metadata/jfrSerializer.hpp"
#include "jfr/recorder/checkpoint/jfrCheckpointWriter.hpp"
#include "jfr/recorder/checkpoint/types/jfrType.hpp"
#include "jfr/recorder/checkpoint/types/jfrTypeManager.hpp"
+#include "jfr/utilities/jfrDoublyLinkedList.hpp"
#include "jfr/utilities/jfrIterator.hpp"
#include "runtime/safepoint.hpp"
#include "runtime/thread.inline.hpp"
#include "utilities/exceptions.hpp"
+#include "runtime/semaphore.hpp"
-JfrSerializerRegistration::JfrSerializerRegistration(JfrTypeId id, bool permit_cache, JfrSerializer* cs) :
- _next(NULL),
- _prev(NULL),
- _serializer(cs),
- _cache(),
- _id(id),
- _permit_cache(permit_cache) {}
+class JfrSerializerRegistration : public JfrCHeapObj {
+ private:
+ JfrSerializerRegistration* _next;
+ JfrSerializerRegistration* _prev;
+ JfrSerializer* _serializer;
+ mutable JfrCheckpointBlobHandle _cache;
+ JfrTypeId _id;
+ bool _permit_cache;
-JfrSerializerRegistration::~JfrSerializerRegistration() {
- delete _serializer;
-}
+ public:
+ JfrSerializerRegistration(JfrTypeId id, bool permit_cache, JfrSerializer* serializer) :
+ _next(NULL), _prev(NULL), _serializer(serializer), _cache(), _id(id), _permit_cache(permit_cache) {}
-JfrSerializerRegistration* JfrSerializerRegistration::next() const {
- return _next;
-}
+ ~JfrSerializerRegistration() {
+ delete _serializer;
+ }
-void JfrSerializerRegistration::set_next(JfrSerializerRegistration* next) {
- _next = next;
-}
+ JfrSerializerRegistration* next() const {
+ return _next;
+ }
-JfrSerializerRegistration* JfrSerializerRegistration::prev() const {
- return _prev;
-}
+ void set_next(JfrSerializerRegistration* next) {
+ _next = next;
+ }
+
+ JfrSerializerRegistration* prev() const {
+ return _prev;
+ }
-void JfrSerializerRegistration::set_prev(JfrSerializerRegistration* prev) {
- _prev = prev;
-}
+ void set_prev(JfrSerializerRegistration* prev) {
+ _prev = prev;
+ }
-JfrTypeId JfrSerializerRegistration::id() const {
- return _id;
-}
+ JfrTypeId id() const {
+ return _id;
+ }
-void JfrSerializerRegistration::invoke_serializer(JfrCheckpointWriter& writer) const {
+ void invoke(JfrCheckpointWriter& writer) const;
+};
+
+void JfrSerializerRegistration::invoke(JfrCheckpointWriter& writer) const {
if (_cache.valid()) {
writer.increment();
_cache->write(writer);
return;
}
const JfrCheckpointContext ctx = writer.context();
+ // serialize the type id before invoking callback
writer.write_type(_id);
+ const intptr_t start = writer.current_offset();
+ // invoke the serializer routine
_serializer->serialize(writer);
+ if (start == writer.current_offset() ) {
+ // the serializer implementation did nothing, rewind to restore
+ writer.set_context(ctx);
+ return;
+ }
if (_permit_cache) {
_cache = writer.copy(&ctx);
}
}
-JfrTypeManager::~JfrTypeManager() {
- Iterator iter(_types);
+class SerializerRegistrationGuard : public StackObj {
+ private:
+ static Semaphore _mutex_semaphore;
+ public:
+ SerializerRegistrationGuard() {
+ _mutex_semaphore.wait();
+ }
+ ~SerializerRegistrationGuard() {
+ _mutex_semaphore.signal();
+ }
+};
+
+Semaphore SerializerRegistrationGuard::_mutex_semaphore(1);
+
+typedef JfrDoublyLinkedList<JfrSerializerRegistration> List;
+typedef StopOnNullIterator<const List> Iterator;
+static List types;
+static List safepoint_types;
+
+void JfrTypeManager::clear() {
+ SerializerRegistrationGuard guard;
+ Iterator iter(types);
JfrSerializerRegistration* registration;
while (iter.has_next()) {
- registration = _types.remove(iter.next());
+ registration = types.remove(iter.next());
assert(registration != NULL, "invariant");
delete registration;
}
- Iterator sp_type_iter(_safepoint_types);
+ Iterator sp_type_iter(safepoint_types);
while (sp_type_iter.has_next()) {
- registration = _safepoint_types.remove(sp_type_iter.next());
+ registration = safepoint_types.remove(sp_type_iter.next());
assert(registration != NULL, "invariant");
delete registration;
}
}
-size_t JfrTypeManager::number_of_registered_types() const {
- size_t count = 0;
- const Iterator iter(_types);
+void JfrTypeManager::write_types(JfrCheckpointWriter& writer) {
+ const Iterator iter(types);
while (iter.has_next()) {
- ++count;
- iter.next();
- }
- const Iterator sp_type_iter(_safepoint_types);
- while (sp_type_iter.has_next()) {
- ++count;
- sp_type_iter.next();
- }
- return count;
-}
-
-void JfrTypeManager::write_types(JfrCheckpointWriter& writer) const {
- const Iterator iter(_types);
- while (iter.has_next()) {
- iter.next()->invoke_serializer(writer);
+ iter.next()->invoke(writer);
}
}
-void JfrTypeManager::write_safepoint_types(JfrCheckpointWriter& writer) const {
+void JfrTypeManager::write_safepoint_types(JfrCheckpointWriter& writer) {
assert(SafepointSynchronize::is_at_safepoint(), "invariant");
- const Iterator iter(_safepoint_types);
+ const Iterator iter(safepoint_types);
while (iter.has_next()) {
- iter.next()->invoke_serializer(writer);
+ iter.next()->invoke(writer);
}
}
-void JfrTypeManager::write_type_set() const {
+void JfrTypeManager::write_type_set() {
assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
// can safepoint here because of Module_lock
MutexLockerEx lock(Module_lock);
@@ -132,14 +156,14 @@
set.serialize(writer);
}
-void JfrTypeManager::write_type_set_for_unloaded_classes() const {
+void JfrTypeManager::write_type_set_for_unloaded_classes() {
assert(SafepointSynchronize::is_at_safepoint(), "invariant");
JfrCheckpointWriter writer(false, true, Thread::current());
ClassUnloadTypeSet class_unload_set;
class_unload_set.serialize(writer);
}
-void JfrTypeManager::create_thread_checkpoint(JavaThread* jt) const {
+void JfrTypeManager::create_thread_checkpoint(JavaThread* jt) {
assert(jt != NULL, "invariant");
JfrThreadConstant type_thread(jt);
JfrCheckpointWriter writer(false, true, jt);
@@ -150,7 +174,7 @@
assert(jt->jfr_thread_local()->has_thread_checkpoint(), "invariant");
}
-void JfrTypeManager::write_thread_checkpoint(JavaThread* jt) const {
+void JfrTypeManager::write_thread_checkpoint(JavaThread* jt) {
assert(jt != NULL, "JavaThread is NULL!");
ResourceMark rm(jt);
if (jt->jfr_thread_local()->has_thread_checkpoint()) {
@@ -165,71 +189,64 @@
}
#ifdef ASSERT
-static void assert_not_registered_twice(JfrTypeId id, JfrTypeManager::List& list) {
- const JfrTypeManager::Iterator iter(list);
+static void assert_not_registered_twice(JfrTypeId id, List& list) {
+ const Iterator iter(list);
while (iter.has_next()) {
assert(iter.next()->id() != id, "invariant");
}
}
#endif
-bool JfrTypeManager::register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* cs) {
- assert(cs != NULL, "invariant");
- JfrSerializerRegistration* const registration = new JfrSerializerRegistration(id, permit_cache, cs);
+static bool register_type(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* serializer) {
+ assert(serializer != NULL, "invariant");
+ JfrSerializerRegistration* const registration = new JfrSerializerRegistration(id, permit_cache, serializer);
if (registration == NULL) {
- delete cs;
+ delete serializer;
return false;
}
if (require_safepoint) {
- assert(!_safepoint_types.in_list(registration), "invariant");
- DEBUG_ONLY(assert_not_registered_twice(id, _safepoint_types);)
- _safepoint_types.prepend(registration);
- }
- else {
- assert(!_types.in_list(registration), "invariant");
- DEBUG_ONLY(assert_not_registered_twice(id, _types);)
- _types.prepend(registration);
+ assert(!safepoint_types.in_list(registration), "invariant");
+ DEBUG_ONLY(assert_not_registered_twice(id, safepoint_types);)
+ safepoint_types.prepend(registration);
+ } else {
+ assert(!types.in_list(registration), "invariant");
+ DEBUG_ONLY(assert_not_registered_twice(id, types);)
+ types.prepend(registration);
}
return true;
}
bool JfrTypeManager::initialize() {
+ SerializerRegistrationGuard guard;
+
// register non-safepointing type serialization
- for (size_t i = 0; i < 18; ++i) {
- switch (i) {
- case 0: register_serializer(TYPE_FLAGVALUEORIGIN, false, true, new FlagValueOriginConstant()); break;
- case 1: register_serializer(TYPE_INFLATECAUSE, false, true, new MonitorInflateCauseConstant()); break;
- case 2: register_serializer(TYPE_GCCAUSE, false, true, new GCCauseConstant()); break;
- case 3: register_serializer(TYPE_GCNAME, false, true, new GCNameConstant()); break;
- case 4: register_serializer(TYPE_GCWHEN, false, true, new GCWhenConstant()); break;
- case 5: register_serializer(TYPE_G1HEAPREGIONTYPE, false, true, new G1HeapRegionTypeConstant()); break;
- case 6: register_serializer(TYPE_GCTHRESHOLDUPDATER, false, true, new GCThresholdUpdaterConstant()); break;
- case 7: register_serializer(TYPE_METADATATYPE, false, true, new MetadataTypeConstant()); break;
- case 8: register_serializer(TYPE_METASPACEOBJECTTYPE, false, true, new MetaspaceObjectTypeConstant()); break;
- case 9: register_serializer(TYPE_G1YCTYPE, false, true, new G1YCTypeConstant()); break;
- case 10: register_serializer(TYPE_REFERENCETYPE, false, true, new ReferenceTypeConstant()); break;
- case 11: register_serializer(TYPE_NARROWOOPMODE, false, true, new NarrowOopModeConstant()); break;
- case 12: register_serializer(TYPE_COMPILERPHASETYPE, false, true, new CompilerPhaseTypeConstant()); break;
- case 13: register_serializer(TYPE_CODEBLOBTYPE, false, true, new CodeBlobTypeConstant()); break;
- case 14: register_serializer(TYPE_VMOPERATIONTYPE, false, true, new VMOperationTypeConstant()); break;
- case 15: register_serializer(TYPE_THREADSTATE, false, true, new ThreadStateConstant()); break;
- case 16: register_serializer(TYPE_ZSTATISTICSCOUNTERTYPE, false, true, new ZStatisticsCounterTypeConstant()); break;
- case 17: register_serializer(TYPE_ZSTATISTICSSAMPLERTYPE, false, true, new ZStatisticsSamplerTypeConstant()); break;
- default:
- guarantee(false, "invariant");
- }
- }
+ register_type(TYPE_FLAGVALUEORIGIN, false, true, new FlagValueOriginConstant());
+ register_type(TYPE_INFLATECAUSE, false, true, new MonitorInflateCauseConstant());
+ register_type(TYPE_GCCAUSE, false, true, new GCCauseConstant());
+ register_type(TYPE_GCNAME, false, true, new GCNameConstant());
+ register_type(TYPE_GCWHEN, false, true, new GCWhenConstant());
+ register_type(TYPE_G1HEAPREGIONTYPE, false, true, new G1HeapRegionTypeConstant());
+ register_type(TYPE_GCTHRESHOLDUPDATER, false, true, new GCThresholdUpdaterConstant());
+ register_type(TYPE_METADATATYPE, false, true, new MetadataTypeConstant());
+ register_type(TYPE_METASPACEOBJECTTYPE, false, true, new MetaspaceObjectTypeConstant());
+ register_type(TYPE_G1YCTYPE, false, true, new G1YCTypeConstant());
+ register_type(TYPE_REFERENCETYPE, false, true, new ReferenceTypeConstant());
+ register_type(TYPE_NARROWOOPMODE, false, true, new NarrowOopModeConstant());
+ register_type(TYPE_COMPILERPHASETYPE, false, true, new CompilerPhaseTypeConstant());
+ register_type(TYPE_CODEBLOBTYPE, false, true, new CodeBlobTypeConstant());
+ register_type(TYPE_VMOPERATIONTYPE, false, true, new VMOperationTypeConstant());
+ register_type(TYPE_THREADSTATE, false, true, new ThreadStateConstant());
+ register_type(TYPE_ZSTATISTICSCOUNTERTYPE, false, true, new ZStatisticsCounterTypeConstant());
+ register_type(TYPE_ZSTATISTICSSAMPLERTYPE, false, true, new ZStatisticsSamplerTypeConstant());
// register safepointing type serialization
- for (size_t i = 0; i < 2; ++i) {
- switch (i) {
- case 0: register_serializer(TYPE_THREADGROUP, true, false, new JfrThreadGroupConstant()); break;
- case 1: register_serializer(TYPE_THREAD, true, false, new JfrThreadConstantSet()); break;
- default:
- guarantee(false, "invariant");
- }
- }
+ register_type(TYPE_THREADGROUP, true, false, new JfrThreadGroupConstant());
+ register_type(TYPE_THREAD, true, false, new JfrThreadConstantSet());
return true;
}
-
+// implementation for the static registration function exposed in the JfrSerializer api
+bool JfrSerializer::register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* serializer) {
+ SerializerRegistrationGuard guard;
+ return register_type(id, require_safepoint, permit_cache, serializer);
+}
--- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -24,49 +24,21 @@
#ifndef SHARE_VM_JFR_CHECKPOINT_TYPES_JFRTYPEMANAGER_HPP
#define SHARE_VM_JFR_CHECKPOINT_TYPES_JFRTYPEMANAGER_HPP
-#include "jfr/metadata/jfrSerializer.hpp"
#include "jfr/utilities/jfrAllocation.hpp"
-#include "jfr/utilities/jfrDoublyLinkedList.hpp"
-#include "jfr/utilities/jfrIterator.hpp"
+
+class JavaThread;
+class JfrCheckpointWriter;
-class JfrSerializerRegistration : public JfrCHeapObj {
- private:
- JfrSerializerRegistration* _next;
- JfrSerializerRegistration* _prev;
- JfrSerializer* _serializer;
- mutable JfrCheckpointBlobHandle _cache;
- JfrTypeId _id;
- bool _permit_cache;
-
+class JfrTypeManager : public AllStatic {
public:
- JfrSerializerRegistration(JfrTypeId id, bool permit_cache, JfrSerializer* serializer);
- ~JfrSerializerRegistration();
- JfrSerializerRegistration* next() const;
- void set_next(JfrSerializerRegistration* next);
- JfrSerializerRegistration* prev() const;
- void set_prev(JfrSerializerRegistration* prev);
- void invoke_serializer(JfrCheckpointWriter& writer) const;
- JfrTypeId id() const;
+ static bool initialize();
+ static void clear();
+ static void write_types(JfrCheckpointWriter& writer);
+ static void write_safepoint_types(JfrCheckpointWriter& writer);
+ static void write_type_set();
+ static void write_type_set_for_unloaded_classes();
+ static void create_thread_checkpoint(JavaThread* jt);
+ static void write_thread_checkpoint(JavaThread* jt);
};
-class JfrTypeManager : public JfrCHeapObj {
- friend class JfrCheckpointManager;
- public:
- typedef JfrDoublyLinkedList<JfrSerializerRegistration> List;
- typedef StopOnNullIterator<const List> Iterator;
- private:
- List _types;
- List _safepoint_types;
-
- ~JfrTypeManager();
- bool initialize();
- size_t number_of_registered_types() const;
- void write_types(JfrCheckpointWriter& writer) const;
- void write_safepoint_types(JfrCheckpointWriter& writer) const;
- void write_type_set() const;
- void write_type_set_for_unloaded_classes() const;
- void create_thread_checkpoint(JavaThread* jt) const;
- void write_thread_checkpoint(JavaThread* jt) const;
- bool register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* serializer);
-};
#endif // SHARE_VM_JFR_CHECKPOINT_TYPES_JFRTYPEMANAGER_HPP
--- a/src/hotspot/share/jfr/recorder/storage/jfrBuffer.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/storage/jfrBuffer.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -25,7 +25,6 @@
#ifndef SHARE_VM_JFR_RECORDER_STORAGE_JFRBUFFER_HPP
#define SHARE_VM_JFR_RECORDER_STORAGE_JFRBUFFER_HPP
-#include "jni.h"
#include "memory/allocation.hpp"
//
@@ -34,7 +33,7 @@
// u1* _pos <-- next store position
// u1* _top <-- next unflushed position
//
-// const void* _identity <<-- acquired by
+// const void* _identity <-- acquired by
//
// Must be the owner before attempting stores.
// Use acquire() and/or try_acquire() for exclusive access
--- a/src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -151,7 +151,7 @@
StringPoolWriteOp(JfrChunkWriter& writer, Thread* thread) : _writer(writer), _thread(thread), _strings_processed(0) {}
bool write(Type* buffer, const u1* data, size_t size) {
buffer->acquire(_thread); // blocking
- const u4 nof_strings_used = (const u4)buffer->string_count();
+ const uint64_t nof_strings_used = buffer->string_count();
assert(nof_strings_used > 0, "invariant");
buffer->set_string_top(buffer->string_top() + nof_strings_used);
// "size processed" for string pool buffers is the number of processed string elements
@@ -208,10 +208,10 @@
return true;
}
buffer->set_top(current_top + unflushed_size);
- const u4 nof_strings_used = buffer->string_count();
+ const uint64_t nof_strings_used = buffer->string_count();
buffer->set_string_top(buffer->string_top() + nof_strings_used);
// "size processed" for string pool buffers is the number of string elements
- _processed += nof_strings_used;
+ _processed += (size_t)nof_strings_used;
buffer->release();
return true;
}
--- a/src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -24,13 +24,11 @@
#include "precompiled.hpp"
#include "jfr/recorder/stringpool/jfrStringPoolBuffer.hpp"
-#include "runtime/atomic.hpp"
-#include "runtime/orderAccess.hpp"
-#include "runtime/thread.inline.hpp"
JfrStringPoolBuffer::JfrStringPoolBuffer() : JfrBuffer(), _string_count_pos(0), _string_count_top(0) {}
void JfrStringPoolBuffer::reinitialize() {
+ assert(acquired_by_self() || retired(), "invariant");
concurrent_top();
set_pos((start()));
set_string_pos(0);
@@ -39,35 +37,31 @@
}
uint64_t JfrStringPoolBuffer::string_pos() const {
- return OrderAccess::load_acquire(&_string_count_pos);
+ assert(acquired_by_self() || retired(), "invariant");
+ return _string_count_pos;
}
uint64_t JfrStringPoolBuffer::string_top() const {
- return OrderAccess::load_acquire(&_string_count_top);
+ assert(acquired_by_self() || retired(), "invariant");
+ return _string_count_top;
}
uint64_t JfrStringPoolBuffer::string_count() const {
+ assert(acquired_by_self() || retired(), "invariant");
return string_pos() - string_top();
}
void JfrStringPoolBuffer::set_string_pos(uint64_t value) {
- Atomic::store(value, &_string_count_pos);
+ assert(acquired_by_self() || retired(), "invariant");
+ _string_count_pos = value;
}
void JfrStringPoolBuffer::increment(uint64_t value) {
-#if !(defined(ARM) || defined(IA32))
- Atomic::add(value, &_string_count_pos);
-#else
- // TODO: This should be fixed in Atomic::add handling for 32-bit platforms,
- // see JDK-8203283. We workaround the absence of support right here.
- uint64_t cur, val;
- do {
- cur = Atomic::load(&_string_count_top);
- val = cur + value;
- } while (Atomic::cmpxchg(val, &_string_count_pos, cur) != cur);
-#endif
+ assert(acquired_by_self() || retired(), "invariant");
+ ++_string_count_pos;
}
void JfrStringPoolBuffer::set_string_top(uint64_t value) {
- Atomic::store(value, &_string_count_top);
+ assert(acquired_by_self() || retired(), "invariant");
+ _string_count_top = value;
}
--- a/src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -26,7 +26,6 @@
#define SHARE_VM_JFR_RECORDER_STRINGPOOL_JFRSTRINGPOOLBUFFER_HPP
#include "jfr/recorder/storage/jfrBuffer.hpp"
-#include "utilities/globalDefinitions.hpp"
class JfrStringPoolBuffer : public JfrBuffer {
private:
--- a/src/hotspot/share/jfr/utilities/jfrAllocation.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/jfr/utilities/jfrAllocation.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -53,8 +53,8 @@
static void add(size_t alloc_size) {
if (!JfrRecorder::is_created()) {
- const jlong total_allocated = atomic_add_jlong(alloc_size, &_allocated_bytes);
- const jlong current_live_set = atomic_add_jlong(alloc_size, &_live_set_bytes);
+ const jlong total_allocated = atomic_add_jlong((jlong)alloc_size, &_allocated_bytes);
+ const jlong current_live_set = atomic_add_jlong((jlong)alloc_size, &_live_set_bytes);
log_trace(jfr, system)("Allocation: [" SIZE_FORMAT "] bytes", alloc_size);
log_trace(jfr, system)("Total alloc [" JLONG_FORMAT "] bytes", total_allocated);
log_trace(jfr, system)("Liveset: [" JLONG_FORMAT "] bytes", current_live_set);
@@ -63,11 +63,11 @@
static void subtract(size_t dealloc_size) {
if (!JfrRecorder::is_created()) {
- const size_t total_deallocated = atomic_add_jlong(dealloc_size, &_deallocated_bytes);
- const size_t current_live_set = atomic_add_jlong(dealloc_size * -1, &_live_set_bytes);
+ const jlong total_deallocated = atomic_add_jlong((jlong)dealloc_size, &_deallocated_bytes);
+ const jlong current_live_set = atomic_add_jlong(((jlong)dealloc_size * -1), &_live_set_bytes);
log_trace(jfr, system)("Deallocation: [" SIZE_FORMAT "] bytes", dealloc_size);
- log_trace(jfr, system)("Total dealloc [" SIZE_FORMAT "] bytes", total_deallocated);
- log_trace(jfr, system)("Liveset: [" SIZE_FORMAT "] bytes", current_live_set);
+ log_trace(jfr, system)("Total dealloc [" JLONG_FORMAT "] bytes", total_deallocated);
+ log_trace(jfr, system)("Liveset: [" JLONG_FORMAT "] bytes", current_live_set);
}
}
--- a/src/hotspot/share/runtime/arguments.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/runtime/arguments.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -488,7 +488,7 @@
*
* Recommended approach for removing options:
*
- * To remove options commonly used by customers (e.g. product, commercial -XX options), use
+ * To remove options commonly used by customers (e.g. product -XX options), use
* the 3-step model adding major release numbers to the deprecate, obsolete and expire columns.
*
* To remove internal options (e.g. diagnostic, experimental, develop options), use
@@ -540,6 +540,7 @@
{ "PrintSafepointStatisticsCount",JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
{ "AggressiveOpts", JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
{ "AllowNonVirtualCalls", JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
+ { "UnlinkSymbolsALot", JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
// --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in:
{ "DefaultMaxRAMFraction", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() },
--- a/src/hotspot/share/runtime/flags/jvmFlag.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/runtime/flags/jvmFlag.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -326,10 +326,6 @@
return (_flags & KIND_READ_WRITE) != 0;
}
-bool JVMFlag::is_commercial() const {
- return (_flags & KIND_COMMERCIAL) != 0;
-}
-
/**
* Returns if this flag is a constant in the binary. Right now this is
* true for notproduct and develop flags in product builds.
@@ -642,7 +638,6 @@
{ KIND_MANAGEABLE, "manageable" },
{ KIND_DIAGNOSTIC, "diagnostic" },
{ KIND_EXPERIMENTAL, "experimental" },
- { KIND_COMMERCIAL, "commercial" },
{ KIND_NOT_PRODUCT, "notproduct" },
{ KIND_DEVELOP, "develop" },
{ KIND_LP64_PRODUCT, "lp64_product" },
@@ -911,7 +906,7 @@
if (!(current->is_unlocked() || current->is_unlocker())) {
if (!allow_locked) {
// disable use of locked flags, e.g. diagnostic, experimental,
- // commercial... until they are explicitly unlocked
+ // etc. until they are explicitly unlocked
return NULL;
}
}
--- a/src/hotspot/share/runtime/flags/jvmFlag.hpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/runtime/flags/jvmFlag.hpp Fri Jun 22 07:49:27 2018 -0700
@@ -60,11 +60,10 @@
KIND_C2 = 1 << 13,
KIND_ARCH = 1 << 14,
KIND_LP64_PRODUCT = 1 << 15,
- KIND_COMMERCIAL = 1 << 16,
- KIND_JVMCI = 1 << 17,
+ KIND_JVMCI = 1 << 16,
// set this bit if the flag was set on the command line
- ORIG_COMMAND_LINE = 1 << 18,
+ ORIG_COMMAND_LINE = 1 << 17,
KIND_MASK = ~(VALUE_ORIGIN_MASK | ORIG_COMMAND_LINE)
};
@@ -101,9 +100,7 @@
DIAGNOSTIC_FLAG_BUT_LOCKED,
EXPERIMENTAL_FLAG_BUT_LOCKED,
DEVELOPER_FLAG_BUT_PRODUCT_BUILD,
- NOTPRODUCT_FLAG_BUT_PRODUCT_BUILD,
- COMMERCIAL_FLAG_BUT_DISABLED,
- COMMERCIAL_FLAG_BUT_LOCKED
+ NOTPRODUCT_FLAG_BUT_PRODUCT_BUILD
};
const char* _type;
@@ -187,7 +184,6 @@
bool is_notproduct() const;
bool is_develop() const;
bool is_read_write() const;
- bool is_commercial() const;
bool is_constant_in_binary() const;
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -242,7 +242,6 @@
// Generate code to call emit_constraint_xxx function
#define EMIT_CONSTRAINT_PRODUCT_FLAG(type, name, value, doc) ); emit_constraint_##type(#name,&name
-#define EMIT_CONSTRAINT_COMMERCIAL_FLAG(type, name, value, doc) ); emit_constraint_##type(#name,&name
#define EMIT_CONSTRAINT_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_constraint_##type(#name,&name
#define EMIT_CONSTRAINT_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_constraint_##type(#name,&name
#define EMIT_CONSTRAINT_MANAGEABLE_FLAG(type, name, value, doc) ); emit_constraint_##type(#name,&name
--- a/src/hotspot/share/runtime/flags/jvmFlagRangeList.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/runtime/flags/jvmFlagRangeList.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -293,7 +293,6 @@
// Generate code to call emit_range_xxx function
#define EMIT_RANGE_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name
-#define EMIT_RANGE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name
#define EMIT_RANGE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name
#define EMIT_RANGE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name
#define EMIT_RANGE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name
--- a/src/hotspot/share/runtime/flags/jvmFlagWriteableList.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/hotspot/share/runtime/flags/jvmFlagWriteableList.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -94,7 +94,6 @@
// Generate code to call emit_writeable_xxx function
#define EMIT_WRITEABLE_PRODUCT_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
-#define EMIT_WRITEABLE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
#define EMIT_WRITEABLE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
#define EMIT_WRITEABLE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
#define EMIT_WRITEABLE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
--- a/src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, 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
@@ -301,8 +301,13 @@
public static AsynchronousFileChannel open(Path file, OpenOption... options)
throws IOException
{
- Set<OpenOption> set = new HashSet<>(options.length);
- Collections.addAll(set, options);
+ Set<OpenOption> set;
+ if (options.length == 0) {
+ set = Collections.emptySet();
+ } else {
+ set = new HashSet<>();
+ Collections.addAll(set, options);
+ }
return open(file, set, null, NO_ATTRIBUTES);
}
--- a/src/java.base/share/classes/java/nio/channels/FileChannel.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/nio/channels/FileChannel.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, 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
@@ -335,8 +335,13 @@
public static FileChannel open(Path path, OpenOption... options)
throws IOException
{
- Set<OpenOption> set = new HashSet<>(options.length);
- Collections.addAll(set, options);
+ Set<OpenOption> set;
+ if (options.length == 0) {
+ set = Collections.emptySet();
+ } else {
+ set = new HashSet<>();
+ Collections.addAll(set, options);
+ }
return open(path, set, NO_ATTRIBUTES);
}
--- a/src/java.base/share/classes/java/nio/file/Files.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/nio/file/Files.java Fri Jun 22 07:49:27 2018 -0700
@@ -410,8 +410,13 @@
public static SeekableByteChannel newByteChannel(Path path, OpenOption... options)
throws IOException
{
- Set<OpenOption> set = new HashSet<>(options.length);
- Collections.addAll(set, options);
+ Set<OpenOption> set;
+ if (options.length == 0) {
+ set = Collections.emptySet();
+ } else {
+ set = new HashSet<>();
+ Collections.addAll(set, options);
+ }
return newByteChannel(path, set);
}
@@ -599,6 +604,9 @@
// -- Creation and deletion --
+ private static final Set<OpenOption> DEFAULT_CREATE_OPTIONS =
+ Set.of(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
+
/**
* Creates a new and empty file, failing if the file already exists. The
* check for the existence of the file and the creation of the new file if
@@ -635,9 +643,7 @@
public static Path createFile(Path path, FileAttribute<?>... attrs)
throws IOException
{
- EnumSet<StandardOpenOption> options =
- EnumSet.<StandardOpenOption>of(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
- newByteChannel(path, options, attrs).close();
+ newByteChannel(path, DEFAULT_CREATE_OPTIONS, attrs).close();
return path;
}
--- a/src/java.base/share/classes/java/nio/file/spi/FileSystemProvider.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/nio/file/spi/FileSystemProvider.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, 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
@@ -384,6 +384,10 @@
return Channels.newInputStream(Files.newByteChannel(path, options));
}
+ private static final Set<OpenOption> DEFAULT_OPEN_OPTIONS =
+ Set.of(StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING,
+ StandardOpenOption.WRITE);
+
/**
* Opens or creates a file, returning an output stream that may be used to
* write bytes to the file. This method works in exactly the manner
@@ -419,18 +423,18 @@
throws IOException
{
int len = options.length;
- Set<OpenOption> opts = new HashSet<>(len + 3);
+ Set<OpenOption> opts ;
if (len == 0) {
- opts.add(StandardOpenOption.CREATE);
- opts.add(StandardOpenOption.TRUNCATE_EXISTING);
+ opts = DEFAULT_OPEN_OPTIONS;
} else {
+ opts = new HashSet<>();
for (OpenOption opt: options) {
if (opt == StandardOpenOption.READ)
throw new IllegalArgumentException("READ not allowed");
opts.add(opt);
}
+ opts.add(StandardOpenOption.WRITE);
}
- opts.add(StandardOpenOption.WRITE);
return Channels.newOutputStream(newByteChannel(path, opts));
}
--- a/src/java.base/share/classes/java/util/Collection.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/util/Collection.java Fri Jun 22 07:49:27 2018 -0700
@@ -25,6 +25,7 @@
package java.util;
+import java.util.function.IntFunction;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
@@ -276,8 +277,12 @@
* allocate a new array even if this collection is backed by an array).
* The caller is thus free to modify the returned array.
*
- * <p>This method acts as bridge between array-based and collection-based
- * APIs.
+ * @apiNote
+ * This method acts as a bridge between array-based and collection-based APIs.
+ * It returns an array whose runtime type is {@code Object[]}.
+ * Use {@link #toArray(Object[]) toArray(T[])} to reuse an existing
+ * array, or use {@link #toArray(IntFunction)} to control the runtime type
+ * of the array.
*
* @return an array, whose {@linkplain Class#getComponentType runtime component
* type} is {@code Object}, containing all of the elements in this collection
@@ -302,19 +307,27 @@
* are returned by its iterator, this method must return the elements in
* the same order.
*
- * <p>Like the {@link #toArray()} method, this method acts as bridge between
- * array-based and collection-based APIs. Further, this method allows
- * precise control over the runtime type of the output array, and may,
- * under certain circumstances, be used to save allocation costs.
+ * @apiNote
+ * This method acts as a bridge between array-based and collection-based APIs.
+ * It allows an existing array to be reused under certain circumstances.
+ * Use {@link #toArray()} to create an array whose runtime type is {@code Object[]},
+ * or use {@link #toArray(IntFunction)} to control the runtime type of
+ * the array.
*
* <p>Suppose {@code x} is a collection known to contain only strings.
- * The following code can be used to dump the collection into a newly
- * allocated array of {@code String}:
+ * The following code can be used to dump the collection into a previously
+ * allocated {@code String} array:
*
* <pre>
- * String[] y = x.toArray(new String[0]);</pre>
+ * String[] y = new String[SIZE];
+ * ...
+ * y = x.toArray(y);</pre>
*
- * Note that {@code toArray(new Object[0])} is identical in function to
+ * <p>The return value is reassigned to the variable {@code y}, because a
+ * new array will be allocated and returned if the collection {@code x} has
+ * too many elements to fit into the existing array {@code y}.
+ *
+ * <p>Note that {@code toArray(new Object[0])} is identical in function to
* {@code toArray()}.
*
* @param <T> the component type of the array to contain the collection
@@ -329,6 +342,45 @@
*/
<T> T[] toArray(T[] a);
+ /**
+ * Returns an array containing all of the elements in this collection,
+ * using the provided {@code generator} function to allocate the returned array.
+ *
+ * <p>If this collection makes any guarantees as to what order its elements
+ * are returned by its iterator, this method must return the elements in
+ * the same order.
+ *
+ * @apiNote
+ * This method acts as a bridge between array-based and collection-based APIs.
+ * It allows creation of an array of a particular runtime type. Use
+ * {@link #toArray()} to create an array whose runtime type is {@code Object[]},
+ * or use {@link #toArray(Object[]) toArray(T[])} to reuse an existing array.
+ *
+ * <p>Suppose {@code x} is a collection known to contain only strings.
+ * The following code can be used to dump the collection into a newly
+ * allocated array of {@code String}:
+ *
+ * <pre>
+ * String[] y = x.toArray(String[]::new);</pre>
+ *
+ * @implSpec
+ * The default implementation calls the generator function with zero
+ * and then passes the resulting array to {@link #toArray(Object[]) toArray(T[])}.
+ *
+ * @param <T> the component type of the array to contain the collection
+ * @param generator a function which produces a new array of the desired
+ * type and the provided length
+ * @return an array containing all of the elements in this collection
+ * @throws ArrayStoreException if the runtime type of any element in this
+ * collection is not assignable to the {@linkplain Class#getComponentType
+ * runtime component type} of the generated array
+ * @throws NullPointerException if the generator function is null
+ * @since 11
+ */
+ default <T> T[] toArray(IntFunction<T[]> generator) {
+ return toArray(generator.apply(0));
+ }
+
// Modification Operations
/**
--- a/src/java.base/share/classes/java/util/Collections.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/util/Collections.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,6 +33,7 @@
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
+import java.util.function.IntFunction;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
import java.util.stream.IntStream;
@@ -1028,12 +1029,13 @@
this.c = c;
}
- public int size() {return c.size();}
- public boolean isEmpty() {return c.isEmpty();}
- public boolean contains(Object o) {return c.contains(o);}
- public Object[] toArray() {return c.toArray();}
- public <T> T[] toArray(T[] a) {return c.toArray(a);}
- public String toString() {return c.toString();}
+ public int size() {return c.size();}
+ public boolean isEmpty() {return c.isEmpty();}
+ public boolean contains(Object o) {return c.contains(o);}
+ public Object[] toArray() {return c.toArray();}
+ public <T> T[] toArray(T[] a) {return c.toArray(a);}
+ public <T> T[] toArray(IntFunction<T[]> f) {return c.toArray(f);}
+ public String toString() {return c.toString();}
public Iterator<E> iterator() {
return new Iterator<E>() {
@@ -2020,6 +2022,9 @@
public <T> T[] toArray(T[] a) {
synchronized (mutex) {return c.toArray(a);}
}
+ public <T> T[] toArray(IntFunction<T[]> f) {
+ synchronized (mutex) {return c.toArray(f);}
+ }
public Iterator<E> iterator() {
return c.iterator(); // Must be manually synched by user!
@@ -3049,14 +3054,15 @@
this.type = Objects.requireNonNull(type, "type");
}
- public int size() { return c.size(); }
- public boolean isEmpty() { return c.isEmpty(); }
- public boolean contains(Object o) { return c.contains(o); }
- public Object[] toArray() { return c.toArray(); }
- public <T> T[] toArray(T[] a) { return c.toArray(a); }
- public String toString() { return c.toString(); }
- public boolean remove(Object o) { return c.remove(o); }
- public void clear() { c.clear(); }
+ public int size() { return c.size(); }
+ public boolean isEmpty() { return c.isEmpty(); }
+ public boolean contains(Object o) { return c.contains(o); }
+ public Object[] toArray() { return c.toArray(); }
+ public <T> T[] toArray(T[] a) { return c.toArray(a); }
+ public <T> T[] toArray(IntFunction<T[]> f) { return c.toArray(f); }
+ public String toString() { return c.toString(); }
+ public boolean remove(Object o) { return c.remove(o); }
+ public void clear() { c.clear(); }
public boolean containsAll(Collection<?> coll) {
return c.containsAll(coll);
@@ -5559,25 +5565,26 @@
implements Queue<E>, Serializable {
private static final long serialVersionUID = 1802017725587941708L;
private final Deque<E> q;
- AsLIFOQueue(Deque<E> q) { this.q = q; }
- public boolean add(E e) { q.addFirst(e); return true; }
- public boolean offer(E e) { return q.offerFirst(e); }
- public E poll() { return q.pollFirst(); }
- public E remove() { return q.removeFirst(); }
- public E peek() { return q.peekFirst(); }
- public E element() { return q.getFirst(); }
- public void clear() { q.clear(); }
- public int size() { return q.size(); }
- public boolean isEmpty() { return q.isEmpty(); }
- public boolean contains(Object o) { return q.contains(o); }
- public boolean remove(Object o) { return q.remove(o); }
- public Iterator<E> iterator() { return q.iterator(); }
- public Object[] toArray() { return q.toArray(); }
- public <T> T[] toArray(T[] a) { return q.toArray(a); }
- public String toString() { return q.toString(); }
- public boolean containsAll(Collection<?> c) {return q.containsAll(c);}
- public boolean removeAll(Collection<?> c) {return q.removeAll(c);}
- public boolean retainAll(Collection<?> c) {return q.retainAll(c);}
+ AsLIFOQueue(Deque<E> q) { this.q = q; }
+ public boolean add(E e) { q.addFirst(e); return true; }
+ public boolean offer(E e) { return q.offerFirst(e); }
+ public E poll() { return q.pollFirst(); }
+ public E remove() { return q.removeFirst(); }
+ public E peek() { return q.peekFirst(); }
+ public E element() { return q.getFirst(); }
+ public void clear() { q.clear(); }
+ public int size() { return q.size(); }
+ public boolean isEmpty() { return q.isEmpty(); }
+ public boolean contains(Object o) { return q.contains(o); }
+ public boolean remove(Object o) { return q.remove(o); }
+ public Iterator<E> iterator() { return q.iterator(); }
+ public Object[] toArray() { return q.toArray(); }
+ public <T> T[] toArray(T[] a) { return q.toArray(a); }
+ public <T> T[] toArray(IntFunction<T[]> f) { return q.toArray(f); }
+ public String toString() { return q.toString(); }
+ public boolean containsAll(Collection<?> c) { return q.containsAll(c); }
+ public boolean removeAll(Collection<?> c) { return q.removeAll(c); }
+ public boolean retainAll(Collection<?> c) { return q.retainAll(c); }
// We use inherited addAll; forwarding addAll would be wrong
// Override default methods in Collection
--- a/src/java.base/share/classes/java/util/ImmutableCollections.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/util/ImmutableCollections.java Fri Jun 22 07:49:27 2018 -0700
@@ -83,6 +83,16 @@
// ---------- List Implementations ----------
+ // make a copy, short-circuiting based on implementation class
+ @SuppressWarnings("unchecked")
+ static <E> List<E> listCopy(Collection<? extends E> coll) {
+ if (coll instanceof AbstractImmutableList && coll.getClass() != SubList.class) {
+ return (List<E>)coll;
+ } else {
+ return (List<E>)List.of(coll.toArray());
+ }
+ }
+
@SuppressWarnings("unchecked")
static <E> List<E> emptyList() {
return (List<E>) ListN.EMPTY_LIST;
--- a/src/java.base/share/classes/java/util/List.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/java/util/List.java Fri Jun 22 07:49:27 2018 -0700
@@ -1057,12 +1057,7 @@
* @throws NullPointerException if coll is null, or if it contains any nulls
* @since 10
*/
- @SuppressWarnings("unchecked")
static <E> List<E> copyOf(Collection<? extends E> coll) {
- if (coll instanceof ImmutableCollections.AbstractImmutableList) {
- return (List<E>)coll;
- } else {
- return (List<E>)List.of(coll.toArray());
- }
+ return ImmutableCollections.listCopy(coll);
}
}
--- a/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java Fri Jun 22 07:49:27 2018 -0700
@@ -136,7 +136,7 @@
/**
* Initialize the module system, returning the boot layer.
*
- * @see java.lang.System#initPhase2()
+ * @see java.lang.System#initPhase2(boolean, boolean)
*/
public static ModuleLayer boot() throws Exception {
@@ -213,11 +213,13 @@
Counters.add("jdk.module.boot.2.defineBaseTime", t2);
- // Step 2a: If --validate-modules is specified then the VM needs to
- // start with only system modules, all other options are ignored.
+ // Step 2a: Scan all modules when --validate-modules specified
if (getAndRemoveProperty("jdk.module.validation") != null) {
- return createBootLayerForValidation();
+ int errors = ModulePathValidator.scanAllModules(System.out);
+ if (errors > 0) {
+ fail("Validation of module path failed");
+ }
}
@@ -420,26 +422,6 @@
}
/**
- * Create a boot module layer for validation that resolves all
- * system modules.
- */
- private static ModuleLayer createBootLayerForValidation() {
- Set<String> allSystem = ModuleFinder.ofSystem().findAll()
- .stream()
- .map(ModuleReference::descriptor)
- .map(ModuleDescriptor::name)
- .collect(Collectors.toSet());
-
- Configuration cf = SharedSecrets.getJavaLangModuleAccess()
- .resolveAndBind(ModuleFinder.ofSystem(),
- allSystem,
- null);
-
- Function<String, ClassLoader> clf = ModuleLoaderMap.mappingFunction(cf);
- return ModuleLayer.empty().defineModules(cf, clf);
- }
-
- /**
* Load/register the modules to the built-in class loaders.
*/
private static void loadModules(Configuration cf,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/jdk/internal/module/ModulePathValidator.java Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package jdk.internal.module;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.lang.module.FindException;
+import java.lang.module.ModuleDescriptor;
+import java.lang.module.ModuleFinder;
+import java.lang.module.ModuleReference;
+import java.net.URI;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Stream;
+
+/**
+ * A validator to check for errors and conflicts between modules.
+ */
+
+class ModulePathValidator {
+ private static final String MODULE_INFO = "module-info.class";
+ private static final String INDENT = " ";
+
+ private final Map<String, ModuleReference> nameToModule;
+ private final Map<String, ModuleReference> packageToModule;
+ private final PrintStream out;
+
+ private int errorCount;
+
+ private ModulePathValidator(PrintStream out) {
+ this.nameToModule = new HashMap<>();
+ this.packageToModule = new HashMap<>();
+ this.out = out;
+ }
+
+ /**
+ * Scans and the validates all modules on the module path. The module path
+ * comprises the upgrade module path, system modules, and the application
+ * module path.
+ *
+ * @param out the print stream for output messages
+ * @return the number of errors found
+ */
+ static int scanAllModules(PrintStream out) {
+ ModulePathValidator validator = new ModulePathValidator(out);
+
+ // upgrade module path
+ String value = System.getProperty("jdk.module.upgrade.path");
+ if (value != null) {
+ Stream.of(value.split(File.pathSeparator))
+ .map(Path::of)
+ .forEach(validator::scan);
+ }
+
+ // system modules
+ ModuleFinder.ofSystem().findAll().stream()
+ .sorted(Comparator.comparing(ModuleReference::descriptor))
+ .forEach(validator::process);
+
+ // application module path
+ value = System.getProperty("jdk.module.path");
+ if (value != null) {
+ Stream.of(value.split(File.pathSeparator))
+ .map(Path::of)
+ .forEach(validator::scan);
+ }
+
+ return validator.errorCount;
+ }
+
+ /**
+ * Prints the module location and name.
+ */
+ private void printModule(ModuleReference mref) {
+ mref.location()
+ .filter(uri -> !isJrt(uri))
+ .ifPresent(uri -> out.print(uri + " "));
+ ModuleDescriptor descriptor = mref.descriptor();
+ out.print(descriptor.name());
+ if (descriptor.isAutomatic())
+ out.print(" automatic");
+ out.println();
+ }
+
+ /**
+ * Prints the module location and name, checks if the module is
+ * shadowed by a previously seen module, and finally checks for
+ * package conflicts with previously seen modules.
+ */
+ private void process(ModuleReference mref) {
+ String name = mref.descriptor().name();
+ ModuleReference previous = nameToModule.putIfAbsent(name, mref);
+ if (previous != null) {
+ printModule(mref);
+ out.print(INDENT + "shadowed by ");
+ printModule(previous);
+ } else {
+ boolean first = true;
+
+ // check for package conflicts when not shadowed
+ for (String pkg : mref.descriptor().packages()) {
+ previous = packageToModule.putIfAbsent(pkg, mref);
+ if (previous != null) {
+ if (first) {
+ printModule(mref);
+ first = false;
+ errorCount++;
+ }
+ String mn = previous.descriptor().name();
+ out.println(INDENT + "contains " + pkg
+ + " conflicts with module " + mn);
+ }
+ }
+ }
+ }
+
+ /**
+ * Scan an element on a module path. The element is a directory
+ * of modules, an exploded module, or a JAR file.
+ */
+ private void scan(Path entry) {
+ BasicFileAttributes attrs;
+ try {
+ attrs = Files.readAttributes(entry, BasicFileAttributes.class);
+ } catch (NoSuchFileException ignore) {
+ return;
+ } catch (IOException ioe) {
+ out.println(entry + " " + ioe);
+ errorCount++;
+ return;
+ }
+
+ String fn = entry.getFileName().toString();
+ if (attrs.isRegularFile() && fn.endsWith(".jar")) {
+ // JAR file, explicit or automatic module
+ scanModule(entry).ifPresent(this::process);
+ } else if (attrs.isDirectory()) {
+ Path mi = entry.resolve(MODULE_INFO);
+ if (Files.exists(mi)) {
+ // exploded module
+ scanModule(entry).ifPresent(this::process);
+ } else {
+ // directory of modules
+ scanDirectory(entry);
+ }
+ }
+ }
+
+ /**
+ * Scan the JAR files and exploded modules in a directory.
+ */
+ private void scanDirectory(Path dir) {
+ try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
+ Map<String, Path> moduleToEntry = new HashMap<>();
+
+ for (Path entry : stream) {
+ BasicFileAttributes attrs;
+ try {
+ attrs = Files.readAttributes(entry, BasicFileAttributes.class);
+ } catch (IOException ioe) {
+ out.println(entry + " " + ioe);
+ errorCount++;
+ continue;
+ }
+
+ ModuleReference mref = null;
+
+ String fn = entry.getFileName().toString();
+ if (attrs.isRegularFile() && fn.endsWith(".jar")) {
+ mref = scanModule(entry).orElse(null);
+ } else if (attrs.isDirectory()) {
+ Path mi = entry.resolve(MODULE_INFO);
+ if (Files.exists(mi)) {
+ mref = scanModule(entry).orElse(null);
+ }
+ }
+
+ if (mref != null) {
+ String name = mref.descriptor().name();
+ Path previous = moduleToEntry.putIfAbsent(name, entry);
+ if (previous != null) {
+ // same name as other module in the directory
+ printModule(mref);
+ out.println(INDENT + "contains same module as "
+ + previous.getFileName());
+ errorCount++;
+ } else {
+ process(mref);
+ }
+ }
+ }
+ } catch (IOException ioe) {
+ out.println(dir + " " + ioe);
+ errorCount++;
+ }
+ }
+
+ /**
+ * Scan a JAR file or exploded module.
+ */
+ private Optional<ModuleReference> scanModule(Path entry) {
+ ModuleFinder finder = ModuleFinder.of(entry);
+ try {
+ return finder.findAll().stream().findFirst();
+ } catch (FindException e) {
+ out.println(entry);
+ out.println(INDENT + e.getMessage());
+ Throwable cause = e.getCause();
+ if (cause != null) {
+ out.println(INDENT + cause);
+ }
+ errorCount++;
+ return Optional.empty();
+ }
+ }
+
+ /**
+ * Returns true if the given URI is a jrt URI
+ */
+ private static boolean isJrt(URI uri) {
+ return (uri != null && uri.getScheme().equalsIgnoreCase("jrt"));
+ }
+}
--- a/src/java.base/share/classes/sun/launcher/LauncherHelper.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/sun/launcher/LauncherHelper.java Fri Jun 22 07:49:27 2018 -0700
@@ -44,7 +44,6 @@
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.lang.module.Configuration;
-import java.lang.module.FindException;
import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleDescriptor.Requires;
import java.lang.module.ModuleDescriptor.Exports;
@@ -62,21 +61,16 @@
import java.nio.charset.Charset;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
-import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.attribute.BasicFileAttributes;
import java.text.Normalizer;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Locale.Category;
-import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.ResourceBundle;
@@ -1212,197 +1206,4 @@
return (uri != null && uri.getScheme().equalsIgnoreCase("jrt"));
}
- /**
- * Called by the launcher to validate the modules on the upgrade and
- * application module paths.
- *
- * @return {@code true} if no errors are found
- */
- private static boolean validateModules() {
- initOutput(System.out);
-
- ModuleValidator validator = new ModuleValidator();
-
- // upgrade module path
- String value = System.getProperty("jdk.module.upgrade.path");
- if (value != null) {
- Stream.of(value.split(File.pathSeparator))
- .map(Paths::get)
- .forEach(validator::scan);
- }
-
- // system modules
- ModuleFinder.ofSystem().findAll().stream()
- .sorted(Comparator.comparing(ModuleReference::descriptor))
- .forEach(validator::process);
-
- // application module path
- value = System.getProperty("jdk.module.path");
- if (value != null) {
- Stream.of(value.split(File.pathSeparator))
- .map(Paths::get)
- .forEach(validator::scan);
- }
-
- return !validator.foundErrors();
- }
-
- /**
- * A simple validator to check for errors and conflicts between modules.
- */
- static class ModuleValidator {
- private static final String MODULE_INFO = "module-info.class";
-
- private Map<String, ModuleReference> nameToModule = new HashMap<>();
- private Map<String, ModuleReference> packageToModule = new HashMap<>();
- private boolean errorFound;
-
- /**
- * Returns true if at least one error was found
- */
- boolean foundErrors() {
- return errorFound;
- }
-
- /**
- * Prints the module location and name.
- */
- private void printModule(ModuleReference mref) {
- mref.location()
- .filter(uri -> !isJrt(uri))
- .ifPresent(uri -> ostream.print(uri + " "));
- ModuleDescriptor descriptor = mref.descriptor();
- ostream.print(descriptor.name());
- if (descriptor.isAutomatic())
- ostream.print(" automatic");
- ostream.println();
- }
-
- /**
- * Prints the module location and name, checks if the module is
- * shadowed by a previously seen module, and finally checks for
- * package conflicts with previously seen modules.
- */
- void process(ModuleReference mref) {
- printModule(mref);
-
- String name = mref.descriptor().name();
- ModuleReference previous = nameToModule.putIfAbsent(name, mref);
- if (previous != null) {
- ostream.print(INDENT + "shadowed by ");
- printModule(previous);
- } else {
- // check for package conflicts when not shadowed
- for (String pkg : mref.descriptor().packages()) {
- previous = packageToModule.putIfAbsent(pkg, mref);
- if (previous != null) {
- String mn = previous.descriptor().name();
- ostream.println(INDENT + "contains " + pkg
- + " conflicts with module " + mn);
- errorFound = true;
- }
- }
- }
- }
-
- /**
- * Scan an element on a module path. The element is a directory
- * of modules, an exploded module, or a JAR file.
- */
- void scan(Path entry) {
- BasicFileAttributes attrs;
- try {
- attrs = Files.readAttributes(entry, BasicFileAttributes.class);
- } catch (NoSuchFileException ignore) {
- return;
- } catch (IOException ioe) {
- ostream.println(entry + " " + ioe);
- errorFound = true;
- return;
- }
-
- String fn = entry.getFileName().toString();
- if (attrs.isRegularFile() && fn.endsWith(".jar")) {
- // JAR file, explicit or automatic module
- scanModule(entry).ifPresent(this::process);
- } else if (attrs.isDirectory()) {
- Path mi = entry.resolve(MODULE_INFO);
- if (Files.exists(mi)) {
- // exploded module
- scanModule(entry).ifPresent(this::process);
- } else {
- // directory of modules
- scanDirectory(entry);
- }
- }
- }
-
- /**
- * Scan the JAR files and exploded modules in a directory.
- */
- private void scanDirectory(Path dir) {
- try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
- Map<String, Path> moduleToEntry = new HashMap<>();
-
- for (Path entry : stream) {
- BasicFileAttributes attrs;
- try {
- attrs = Files.readAttributes(entry, BasicFileAttributes.class);
- } catch (IOException ioe) {
- ostream.println(entry + " " + ioe);
- errorFound = true;
- continue;
- }
-
- ModuleReference mref = null;
-
- String fn = entry.getFileName().toString();
- if (attrs.isRegularFile() && fn.endsWith(".jar")) {
- mref = scanModule(entry).orElse(null);
- } else if (attrs.isDirectory()) {
- Path mi = entry.resolve(MODULE_INFO);
- if (Files.exists(mi)) {
- mref = scanModule(entry).orElse(null);
- }
- }
-
- if (mref != null) {
- String name = mref.descriptor().name();
- Path previous = moduleToEntry.putIfAbsent(name, entry);
- if (previous != null) {
- // same name as other module in the directory
- printModule(mref);
- ostream.println(INDENT + "contains same module as "
- + previous.getFileName());
- errorFound = true;
- } else {
- process(mref);
- }
- }
- }
- } catch (IOException ioe) {
- ostream.println(dir + " " + ioe);
- errorFound = true;
- }
- }
-
- /**
- * Scan a JAR file or exploded module.
- */
- private Optional<ModuleReference> scanModule(Path entry) {
- ModuleFinder finder = ModuleFinder.of(entry);
- try {
- return finder.findAll().stream().findFirst();
- } catch (FindException e) {
- ostream.println(entry);
- ostream.println(INDENT + e.getMessage());
- Throwable cause = e.getCause();
- if (cause != null) {
- ostream.println(INDENT + cause);
- }
- errorFound = true;
- return Optional.empty();
- }
- }
- }
}
--- a/src/java.base/share/classes/sun/security/rsa/RSAPSSSignature.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/classes/sun/security/rsa/RSAPSSSignature.java Fri Jun 22 07:49:27 2018 -0700
@@ -132,7 +132,7 @@
}
this.pubKey = (RSAPublicKey) isValid((RSAKey)publicKey);
this.privKey = null;
-
+ resetDigest();
}
// initialize for signing. See JCA doc
@@ -153,6 +153,7 @@
this.pubKey = null;
this.random =
(random == null? JCAUtil.getSecureRandom() : random);
+ resetDigest();
}
/**
--- a/src/java.base/share/native/libjli/java.c Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/share/native/libjli/java.c Fri Jun 22 07:49:27 2018 -0700
@@ -441,14 +441,6 @@
LEAVE();
}
- // validate modules on the module path, then exit
- if (validateModules) {
- jboolean okay = ValidateModules(env);
- CHECK_EXCEPTION_LEAVE(1);
- if (!okay) ret = 1;
- LEAVE();
- }
-
if (printVersion || showVersion) {
PrintJavaVersion(env, showVersion);
CHECK_EXCEPTION_LEAVE(0);
@@ -457,6 +449,11 @@
}
}
+ // modules have been validated at startup so exit
+ if (validateModules) {
+ LEAVE();
+ }
+
/* If the user specified neither a class name nor a JAR file */
if (printXUsage || printUsage || what == 0 || mode == LM_UNKNOWN) {
PrintUsage(env, printXUsage);
@@ -1955,20 +1952,6 @@
(*env)->CallStaticVoidMethod(env, cls, describeModuleID, joptString);
}
-/**
- * Validate modules
- */
-static jboolean
-ValidateModules(JNIEnv *env)
-{
- jmethodID validateModulesID;
- jclass cls = GetLauncherHelperClass(env);
- NULL_CHECK_RETURN_VALUE(cls, JNI_FALSE);
- validateModulesID = (*env)->GetStaticMethodID(env, cls, "validateModules", "()Z");
- NULL_CHECK_RETURN_VALUE(cls, JNI_FALSE);
- return (*env)->CallStaticBooleanMethod(env, cls, validateModulesID);
-}
-
/*
* Prints default usage or the Xusage message, see sun.launcher.LauncherHelper.java
*/
--- a/src/java.base/windows/native/libjava/FileDescriptor_md.c Thu Jun 21 21:14:08 2018 -0700
+++ b/src/java.base/windows/native/libjava/FileDescriptor_md.c Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -87,7 +87,7 @@
JNIEXPORT void JNICALL
Java_java_io_FileCleanable_cleanupClose0(JNIEnv *env, jclass fdClass, jint unused, jlong handle) {
if (handle != -1) {
- if (CloseHandle((HANDLE)handle) == -1) {
+ if (!CloseHandle((HANDLE)handle)) {
JNU_ThrowIOExceptionWithLastError(env, "close failed");
}
}
--- a/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/RSASignature.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/RSASignature.java Fri Jun 22 07:49:27 2018 -0700
@@ -29,6 +29,9 @@
import java.security.*;
import java.security.spec.AlgorithmParameterSpec;
import java.math.BigInteger;
+import java.security.spec.MGF1ParameterSpec;
+import java.security.spec.PSSParameterSpec;
+import java.util.Locale;
import sun.security.rsa.RSAKeyFactory;
@@ -45,6 +48,7 @@
* . "SHA512withRSA"
* . "MD5withRSA"
* . "MD2withRSA"
+ * . "RSASSA-PSS"
*
* NOTE: RSA keys must be at least 512 bits long.
*
@@ -59,19 +63,19 @@
abstract class RSASignature extends java.security.SignatureSpi
{
// message digest implementation we use
- private final MessageDigest messageDigest;
+ protected MessageDigest messageDigest;
// message digest name
private String messageDigestAlgorithm;
// flag indicating whether the digest has been reset
- private boolean needsReset;
+ protected boolean needsReset;
// the signing key
- private Key privateKey = null;
+ protected Key privateKey = null;
// the verification key
- private Key publicKey = null;
+ protected Key publicKey = null;
/**
* Constructs a new RSASignature. Used by Raw subclass.
@@ -222,6 +226,254 @@
}
}
+ public static final class PSS extends RSASignature {
+
+ private PSSParameterSpec pssParams = null;
+
+ // Workaround: Cannot import raw public key to CNG. This signature
+ // will be used for verification if key is not from MSCAPI.
+ private Signature fallbackSignature;
+
+ @Override
+ protected void engineInitSign(PrivateKey key) throws InvalidKeyException {
+ super.engineInitSign(key);
+ fallbackSignature = null;
+ }
+
+ @Override
+ protected void engineInitVerify(PublicKey key) throws InvalidKeyException {
+ // This signature accepts only RSAPublicKey
+ if ((key instanceof java.security.interfaces.RSAPublicKey) == false) {
+ throw new InvalidKeyException("Key type not supported");
+ }
+
+ this.privateKey = null;
+
+ if (key instanceof sun.security.mscapi.RSAPublicKey) {
+ fallbackSignature = null;
+ publicKey = (sun.security.mscapi.RSAPublicKey) key;
+ } else {
+ if (fallbackSignature == null) {
+ try {
+ fallbackSignature = Signature.getInstance(
+ "RSASSA-PSS", "SunRsaSign");
+ } catch (NoSuchAlgorithmException | NoSuchProviderException e) {
+ throw new InvalidKeyException("Invalid key", e);
+ }
+ }
+ fallbackSignature.initVerify(key);
+ if (pssParams != null) {
+ try {
+ fallbackSignature.setParameter(pssParams);
+ } catch (InvalidAlgorithmParameterException e) {
+ throw new InvalidKeyException("Invalid params", e);
+ }
+ }
+ publicKey = null;
+ }
+ resetDigest();
+ }
+
+ @Override
+ protected void engineUpdate(byte b) throws SignatureException {
+ ensureInit();
+ if (fallbackSignature != null) {
+ fallbackSignature.update(b);
+ } else {
+ messageDigest.update(b);
+ }
+ needsReset = true;
+ }
+
+ @Override
+ protected void engineUpdate(byte[] b, int off, int len) throws SignatureException {
+ ensureInit();
+ if (fallbackSignature != null) {
+ fallbackSignature.update(b, off, len);
+ } else {
+ messageDigest.update(b, off, len);
+ }
+ needsReset = true;
+ }
+
+ @Override
+ protected void engineUpdate(ByteBuffer input) {
+ try {
+ ensureInit();
+ } catch (SignatureException se) {
+ // hack for working around API bug
+ throw new RuntimeException(se.getMessage());
+ }
+ if (fallbackSignature != null) {
+ try {
+ fallbackSignature.update(input);
+ } catch (SignatureException se) {
+ // hack for working around API bug
+ throw new RuntimeException(se.getMessage());
+ }
+ } else {
+ messageDigest.update(input);
+ }
+ needsReset = true;
+ }
+
+ @Override
+ protected byte[] engineSign() throws SignatureException {
+ ensureInit();
+ byte[] hash = getDigestValue();
+ return signPssHash(hash, hash.length,
+ pssParams.getSaltLength(),
+ ((MGF1ParameterSpec)
+ pssParams.getMGFParameters()).getDigestAlgorithm(),
+ privateKey.getHCryptProvider(), privateKey.getHCryptKey());
+ }
+
+ @Override
+ protected boolean engineVerify(byte[] sigBytes) throws SignatureException {
+ ensureInit();
+ if (fallbackSignature != null) {
+ needsReset = false;
+ return fallbackSignature.verify(sigBytes);
+ } else {
+ byte[] hash = getDigestValue();
+ return verifyPssSignedHash(
+ hash, hash.length,
+ sigBytes, sigBytes.length,
+ pssParams.getSaltLength(),
+ ((MGF1ParameterSpec)
+ pssParams.getMGFParameters()).getDigestAlgorithm(),
+ publicKey.getHCryptProvider(),
+ publicKey.getHCryptKey()
+ );
+ }
+ }
+
+ @Override
+ protected void engineSetParameter(AlgorithmParameterSpec params)
+ throws InvalidAlgorithmParameterException {
+ if (needsReset) {
+ throw new ProviderException
+ ("Cannot set parameters during operations");
+ }
+ this.pssParams = validateSigParams(params);
+ if (fallbackSignature != null) {
+ fallbackSignature.setParameter(params);
+ }
+ }
+
+ @Override
+ protected AlgorithmParameters engineGetParameters() {
+ if (this.pssParams == null) {
+ throw new ProviderException("Missing required PSS parameters");
+ }
+ try {
+ AlgorithmParameters ap =
+ AlgorithmParameters.getInstance("RSASSA-PSS");
+ ap.init(this.pssParams);
+ return ap;
+ } catch (GeneralSecurityException gse) {
+ throw new ProviderException(gse.getMessage());
+ }
+ }
+
+ private void ensureInit() throws SignatureException {
+ if (this.privateKey == null && this.publicKey == null
+ && fallbackSignature == null) {
+ throw new SignatureException("Missing key");
+ }
+ if (this.pssParams == null) {
+ // Parameters are required for signature verification
+ throw new SignatureException
+ ("Parameters required for RSASSA-PSS signatures");
+ }
+ if (fallbackSignature == null && messageDigest == null) {
+ // This could happen if initVerify(softKey), setParameter(),
+ // and initSign() were called. No messageDigest. Create it.
+ try {
+ messageDigest = MessageDigest
+ .getInstance(pssParams.getDigestAlgorithm());
+ } catch (NoSuchAlgorithmException e) {
+ throw new SignatureException(e);
+ }
+ }
+ }
+
+ /**
+ * Validate the specified Signature PSS parameters.
+ */
+ private PSSParameterSpec validateSigParams(AlgorithmParameterSpec p)
+ throws InvalidAlgorithmParameterException {
+
+ if (p == null) {
+ throw new InvalidAlgorithmParameterException
+ ("Parameters cannot be null");
+ }
+
+ if (!(p instanceof PSSParameterSpec)) {
+ throw new InvalidAlgorithmParameterException
+ ("parameters must be type PSSParameterSpec");
+ }
+
+ // no need to validate again if same as current signature parameters
+ PSSParameterSpec params = (PSSParameterSpec) p;
+ if (params == this.pssParams) return params;
+
+ // now sanity check the parameter values
+ if (!(params.getMGFAlgorithm().equalsIgnoreCase("MGF1"))) {
+ throw new InvalidAlgorithmParameterException("Only supports MGF1");
+
+ }
+
+ if (params.getTrailerField() != PSSParameterSpec.TRAILER_FIELD_BC) {
+ throw new InvalidAlgorithmParameterException
+ ("Only supports TrailerFieldBC(1)");
+ }
+
+ AlgorithmParameterSpec algSpec = params.getMGFParameters();
+ if (!(algSpec instanceof MGF1ParameterSpec)) {
+ throw new InvalidAlgorithmParameterException
+ ("Only support MGF1ParameterSpec");
+ }
+
+ MGF1ParameterSpec mgfSpec = (MGF1ParameterSpec)algSpec;
+
+ String msgHashAlg = params.getDigestAlgorithm()
+ .toLowerCase(Locale.ROOT).replaceAll("-", "");
+ if (msgHashAlg.equals("sha")) {
+ msgHashAlg = "sha1";
+ }
+ String mgf1HashAlg = mgfSpec.getDigestAlgorithm()
+ .toLowerCase(Locale.ROOT).replaceAll("-", "");
+ if (mgf1HashAlg.equals("sha")) {
+ mgf1HashAlg = "sha1";
+ }
+
+ if (!mgf1HashAlg.equals(msgHashAlg)) {
+ throw new InvalidAlgorithmParameterException
+ ("MGF1 hash must be the same as message hash");
+ }
+
+ return params;
+ }
+
+ /**
+ * Sign hash using CNG API with HCRYPTKEY. Used by RSASSA-PSS.
+ */
+ private native static byte[] signPssHash(byte[] hash,
+ int hashSize, int saltLength, String hashAlgorithm,
+ long hCryptProv, long nCryptKey)
+ throws SignatureException;
+
+ /**
+ * Verify a signed hash using CNG API with HCRYPTKEY. Used by RSASSA-PSS.
+ * This method is not used now. See {@link #fallbackSignature}.
+ */
+ private native static boolean verifyPssSignedHash(byte[] hash, int hashSize,
+ byte[] signature, int signatureSize,
+ int saltLength, String hashAlgorithm,
+ long hCryptProv, long hKey) throws SignatureException;
+ }
+
// initialize for signing. See JCA doc
@Override
protected void engineInitVerify(PublicKey key)
@@ -298,7 +550,9 @@
*/
protected void resetDigest() {
if (needsReset) {
- messageDigest.reset();
+ if (messageDigest != null) {
+ messageDigest.reset();
+ }
needsReset = false;
}
}
--- a/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/SunMSCAPI.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/SunMSCAPI.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, 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
@@ -105,6 +105,8 @@
return new RSASignature.MD5();
} else if (algo.equals("MD2withRSA")) {
return new RSASignature.MD2();
+ } else if (algo.equals("RSASSA-PSS")) {
+ return new RSASignature.PSS();
}
} else if (type.equals("KeyPairGenerator")) {
if (algo.equals("RSA")) {
@@ -178,6 +180,10 @@
new String[] { "1.2.840.113549.1.1.13", "OID.1.2.840.113549.1.1.13" },
attrs));
putService(new ProviderService(p, "Signature",
+ "RSASSA-PSS", "sun.security.mscapi.RSASignature$PSS",
+ new String[] { "1.2.840.113549.1.1.10", "OID.1.2.840.113549.1.1.10" },
+ attrs));
+ putService(new ProviderService(p, "Signature",
"MD5withRSA", "sun.security.mscapi.RSASignature$MD5",
null, attrs));
putService(new ProviderService(p, "Signature",
--- a/src/jdk.crypto.mscapi/windows/native/libsunmscapi/security.cpp Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.crypto.mscapi/windows/native/libsunmscapi/security.cpp Fri Jun 22 07:49:27 2018 -0700
@@ -57,6 +57,18 @@
#define SIGNATURE_EXCEPTION "java/security/SignatureException"
#define OUT_OF_MEMORY_ERROR "java/lang/OutOfMemoryError"
+#define SS_CHECK(Status) \
+ if (Status != ERROR_SUCCESS) { \
+ ThrowException(env, SIGNATURE_EXCEPTION, Status); \
+ __leave; \
+ }
+
+//#define PP(fmt, ...) \
+// fprintf(stdout, "SSPI (%ld): ", __LINE__); \
+// fprintf(stdout, fmt, ##__VA_ARGS__); \
+// fprintf(stdout, "\n"); \
+// fflush(stdout)
+
extern "C" {
/*
@@ -64,6 +76,18 @@
*/
DEF_STATIC_JNI_OnLoad
+//void dump(LPSTR title, PBYTE data, DWORD len)
+//{
+// printf("==== %s ====\n", title);
+// for (DWORD i = 0; i < len; i++) {
+// if (i != 0 && i % 16 == 0) {
+// printf("\n");
+// }
+// printf("%02X ", *(data + i) & 0xff);
+// }
+// printf("\n");
+//}
+
/*
* Throws an arbitrary Java exception with the given message.
*/
@@ -146,6 +170,37 @@
return algId;
}
+/*
+ * Maps the name of a hash algorithm to a CNG Algorithm Identifier.
+ */
+LPCWSTR MapHashIdentifier(JNIEnv *env, jstring jHashAlgorithm) {
+
+ const char* pszHashAlgorithm = NULL;
+ LPCWSTR id = NULL;
+
+ if ((pszHashAlgorithm = env->GetStringUTFChars(jHashAlgorithm, NULL))
+ == NULL) {
+ return id;
+ }
+
+ if ((strcmp("SHA", pszHashAlgorithm) == 0) ||
+ (strcmp("SHA1", pszHashAlgorithm) == 0) ||
+ (strcmp("SHA-1", pszHashAlgorithm) == 0)) {
+
+ id = BCRYPT_SHA1_ALGORITHM;
+ } else if (strcmp("SHA-256", pszHashAlgorithm) == 0) {
+ id = BCRYPT_SHA256_ALGORITHM;
+ } else if (strcmp("SHA-384", pszHashAlgorithm) == 0) {
+ id = BCRYPT_SHA384_ALGORITHM;
+ } else if (strcmp("SHA-512", pszHashAlgorithm) == 0) {
+ id = BCRYPT_SHA512_ALGORITHM;
+ }
+
+ if (pszHashAlgorithm)
+ env->ReleaseStringUTFChars(jHashAlgorithm, pszHashAlgorithm);
+
+ return id;
+}
/*
* Returns a certificate chain context given a certificate context and key
@@ -561,7 +616,6 @@
::CryptReleaseContext((HCRYPTPROV) hCryptProv, NULL);
}
-
/*
* Class: sun_security_mscapi_RSASignature
* Method: signHash
@@ -693,6 +747,94 @@
}
/*
+ * Class: sun_security_mscapi_RSASignature_PSS
+ * Method: signPssHash
+ * Signature: ([BIILjava/lang/String;JJ)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_RSASignature_00024PSS_signPssHash
+ (JNIEnv *env, jclass clazz, jbyteArray jHash,
+ jint jHashSize, jint saltLen, jstring jHashAlgorithm, jlong hCryptProv,
+ jlong hCryptKey)
+{
+ jbyteArray jSignedHash = NULL;
+
+ jbyte* pHashBuffer = NULL;
+ jbyte* pSignedHashBuffer = NULL;
+ NCRYPT_KEY_HANDLE hk = NULL;
+
+ __try
+ {
+ SS_CHECK(::NCryptTranslateHandle(
+ NULL,
+ &hk,
+ hCryptProv,
+ hCryptKey,
+ NULL,
+ 0));
+
+ // Copy hash from Java to native buffer
+ pHashBuffer = new (env) jbyte[jHashSize];
+ if (pHashBuffer == NULL) {
+ __leave;
+ }
+ env->GetByteArrayRegion(jHash, 0, jHashSize, pHashBuffer);
+
+ BCRYPT_PSS_PADDING_INFO pssInfo;
+ pssInfo.pszAlgId = MapHashIdentifier(env, jHashAlgorithm);
+ pssInfo.cbSalt = saltLen;
+
+ if (pssInfo.pszAlgId == NULL) {
+ ThrowExceptionWithMessage(env, SIGNATURE_EXCEPTION,
+ "Unrecognised hash algorithm");
+ __leave;
+ }
+
+ DWORD dwBufLen = 0;
+ SS_CHECK(::NCryptSignHash(
+ hk,
+ &pssInfo,
+ (BYTE*)pHashBuffer, jHashSize,
+ NULL, 0, &dwBufLen,
+ BCRYPT_PAD_PSS
+ ));
+
+ pSignedHashBuffer = new (env) jbyte[dwBufLen];
+ if (pSignedHashBuffer == NULL) {
+ __leave;
+ }
+
+ SS_CHECK(::NCryptSignHash(
+ hk,
+ &pssInfo,
+ (BYTE*)pHashBuffer, jHashSize,
+ (BYTE*)pSignedHashBuffer, dwBufLen, &dwBufLen,
+ BCRYPT_PAD_PSS
+ ));
+
+ // Create new byte array
+ jbyteArray temp = env->NewByteArray(dwBufLen);
+
+ // Copy data from native buffer
+ env->SetByteArrayRegion(temp, 0, dwBufLen, pSignedHashBuffer);
+
+ jSignedHash = temp;
+ }
+ __finally
+ {
+ if (pSignedHashBuffer)
+ delete [] pSignedHashBuffer;
+
+ if (pHashBuffer)
+ delete [] pHashBuffer;
+
+ if (hk != NULL)
+ ::NCryptFreeObject(hk);
+ }
+
+ return jSignedHash;
+}
+
+/*
* Class: sun_security_mscapi_RSASignature
* Method: verifySignedHash
* Signature: ([BIL/java/lang/String;[BIJJ)Z
@@ -798,6 +940,85 @@
}
/*
+ * Class: sun_security_mscapi_RSASignature_PSS
+ * Method: verifyPssSignedHash
+ * Signature: ([BI[BIILjava/lang/String;JJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_sun_security_mscapi_RSASignature_00024PSS_verifyPssSignedHash
+ (JNIEnv *env, jclass clazz,
+ jbyteArray jHash, jint jHashSize,
+ jbyteArray jSignedHash, jint jSignedHashSize,
+ jint saltLen, jstring jHashAlgorithm,
+ jlong hCryptProv, jlong hKey)
+{
+ jbyte* pHashBuffer = NULL;
+ jbyte* pSignedHashBuffer = NULL;
+ jboolean result = JNI_FALSE;
+ NCRYPT_KEY_HANDLE hk = NULL;
+
+ __try
+ {
+ SS_CHECK(::NCryptTranslateHandle(
+ NULL,
+ &hk,
+ hCryptProv,
+ hKey,
+ NULL,
+ 0));
+
+ // Copy hash and signedHash from Java to native buffer
+ pHashBuffer = new (env) jbyte[jHashSize];
+ if (pHashBuffer == NULL) {
+ __leave;
+ }
+ env->GetByteArrayRegion(jHash, 0, jHashSize, pHashBuffer);
+
+ pSignedHashBuffer = new (env) jbyte[jSignedHashSize];
+ if (pSignedHashBuffer == NULL) {
+ __leave;
+ }
+ env->GetByteArrayRegion(jSignedHash, 0, jSignedHashSize,
+ pSignedHashBuffer);
+
+ BCRYPT_PSS_PADDING_INFO pssInfo;
+ pssInfo.pszAlgId = MapHashIdentifier(env, jHashAlgorithm);
+ pssInfo.cbSalt = saltLen;
+
+ if (pssInfo.pszAlgId == NULL) {
+ ThrowExceptionWithMessage(env, SIGNATURE_EXCEPTION,
+ "Unrecognised hash algorithm");
+ __leave;
+ }
+
+ // For RSA, the hash encryption algorithm is normally the same as the
+ // public key algorithm, so AT_SIGNATURE is used.
+
+ // Verify the signature
+ if (::NCryptVerifySignature(hk, &pssInfo,
+ (BYTE *) pHashBuffer, jHashSize,
+ (BYTE *) pSignedHashBuffer, jSignedHashSize,
+ NCRYPT_PAD_PSS_FLAG) == ERROR_SUCCESS)
+ {
+ result = JNI_TRUE;
+ }
+ }
+
+ __finally
+ {
+ if (pSignedHashBuffer)
+ delete [] pSignedHashBuffer;
+
+ if (pHashBuffer)
+ delete [] pHashBuffer;
+
+ if (hk != NULL)
+ ::NCryptFreeObject(hk);
+ }
+
+ return result;
+}
+
+/*
* Class: sun_security_mscapi_RSAKeyPairGenerator
* Method: generateRSAKeyPair
* Signature: (ILjava/lang/String;)Lsun/security/mscapi/RSAKeyPair;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/CallSiteDescriptor.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/CallSiteDescriptor.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/ClassMap.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/ClassMap.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/DynamicLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/DynamicLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/DynamicLinkerFactory.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/DynamicLinkerFactory.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/LinkerServicesImpl.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/LinkerServicesImpl.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/NamedOperation.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/NamedOperation.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2015 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/Namespace.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/Namespace.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2016 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/NamespaceOperation.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/NamespaceOperation.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2016 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/NoSuchDynamicMethodException.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/NoSuchDynamicMethodException.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/Operation.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/Operation.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2015 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/RelinkableCallSite.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/RelinkableCallSite.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/StandardNamespace.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/StandardNamespace.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2016 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/StandardOperation.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/StandardOperation.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2015 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/TypeConverterFactory.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/TypeConverterFactory.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AbstractJavaLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AbstractJavaLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ApplicableOverloadedMethods.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ApplicableOverloadedMethods.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanIntrospector.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanIntrospector.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeansLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeansLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/CallerSensitiveDynamicMethod.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/CallerSensitiveDynamicMethod.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/CheckRestrictedPackage.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/CheckRestrictedPackage.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassString.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassString.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/DynamicMethod.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/DynamicMethod.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/DynamicMethodLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/DynamicMethodLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/FacetIntrospector.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/FacetIntrospector.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/GuardedInvocationComponent.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/GuardedInvocationComponent.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/MaximallySpecific.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/MaximallySpecific.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedDynamicMethod.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedDynamicMethod.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedMethod.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedMethod.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/SimpleDynamicMethod.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/SimpleDynamicMethod.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/SingleDynamicMethod.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/SingleDynamicMethod.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClass.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClass.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClassIntrospector.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClassIntrospector.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClassLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClassLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.beans;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/package-info.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/package-info.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/ConversionComparator.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/ConversionComparator.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardedInvocation.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardedInvocation.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardedInvocationTransformer.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardedInvocationTransformer.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardingDynamicLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardingDynamicLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardingTypeConverterFactory.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardingTypeConverterFactory.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/LinkRequest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/LinkRequest.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/LinkerServices.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/LinkerServices.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/MethodHandleTransformer.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/MethodHandleTransformer.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2015 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/MethodTypeConversionStrategy.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/MethodTypeConversionStrategy.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2014 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/TypeBasedGuardingDynamicLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/TypeBasedGuardingDynamicLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/package-info.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/package-info.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/CompositeGuardingDynamicLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/CompositeGuardingDynamicLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/CompositeTypeBasedGuardingDynamicLinker.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/CompositeTypeBasedGuardingDynamicLinker.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/DefaultInternalObjectFilter.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/DefaultInternalObjectFilter.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2015 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/Guards.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/Guards.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/Lookup.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/Lookup.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/SimpleLinkRequest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/SimpleLinkRequest.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/TypeUtilities.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/TypeUtilities.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.linker.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/package-info.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/package-info.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2015 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/package-info.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/package-info.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/support/AbstractRelinkableCallSite.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/support/AbstractRelinkableCallSite.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/support/ChainedCallSite.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/support/ChainedCallSite.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/support/SimpleRelinkableCallSite.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/support/SimpleRelinkableCallSite.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jdk.dynalink.support;
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/support/package-info.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/support/package-info.java Fri Jun 22 07:49:27 2018 -0700
@@ -33,52 +33,29 @@
/*
Copyright 2009-2013 Attila Szegedi
- Licensed under both the Apache License, Version 2.0 (the "Apache License")
- and the BSD License (the "BSD License"), with licensee being free to
- choose either of the two at their discretion.
-
- You may not use this file except in compliance with either the Apache
- License or the BSD License.
-
- If you choose to use this file in compliance with the Apache License, the
- following notice applies to you:
-
- You may obtain a copy of the Apache License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
- If you choose to use this file in compliance with the BSD License, the
- following notice applies to you:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the names of
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
--- a/src/jdk.dynalink/share/legal/dynalink.md Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.dynalink/share/legal/dynalink.md Fri Jun 22 07:49:27 2018 -0700
@@ -3,6 +3,26 @@
### Dynalink License
<pre>
+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. Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+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.
+
Copyright (c) 2009-2013, Attila Szegedi
All rights reserved.Redistribution and use in source and binary forms, with or
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java Fri Jun 22 07:49:27 2018 -0700
@@ -559,6 +559,8 @@
public final boolean tlabStats = getFlag("TLABStats", Boolean.class);
+ public final boolean useFastTLABRefill = versioned.useFastTLABRefill;
+
// FIXME This is only temporary until the GC code is changed.
public final boolean inlineContiguousAllocationSupported = getFieldValue("CompilerToVM::Data::_supports_inline_contig_alloc", Boolean.class);
public final long heapEndAddress = getFieldValue("CompilerToVM::Data::_heap_end_addr", Long.class, "HeapWord**");
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfigVersioned.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfigVersioned.java Fri Jun 22 07:49:27 2018 -0700
@@ -84,4 +84,7 @@
// JDK-8015774
final long codeCacheLowBound = getFieldValue("CodeCache::_low_bound", Long.class, "address");
final long codeCacheHighBound = getFieldValue("CodeCache::_high_bound", Long.class, "address");
+
+ // JDK-8205105
+ boolean useFastTLABRefill = false;
}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java Fri Jun 22 07:49:27 2018 -0700
@@ -1022,4 +1022,9 @@
public static final LocationIdentity METASPACE_ARRAY_LENGTH_LOCATION = NamedLocationIdentity.immutable("MetaspaceArrayLength");
public static final LocationIdentity SECONDARY_SUPERS_ELEMENT_LOCATION = NamedLocationIdentity.immutable("SecondarySupersElement");
+
+ @Fold
+ public static boolean useFastTLABRefill(@InjectedParameter GraalHotSpotVMConfig config) {
+ return config.useFastTLABRefill;
+ }
}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewArrayStub.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewArrayStub.java Fri Jun 22 07:49:27 2018 -0700
@@ -35,6 +35,7 @@
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.readLayoutHelper;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useCMSIncrementalMode;
+import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useFastTLABRefill;
import static org.graalvm.compiler.hotspot.replacements.NewObjectSnippets.MAX_ARRAY_FAST_PATH_ALLOCATION_LENGTH;
import static org.graalvm.compiler.hotspot.replacements.NewObjectSnippets.formatArray;
import static org.graalvm.compiler.hotspot.stubs.NewInstanceStub.refillAllocate;
@@ -122,7 +123,8 @@
// check that array length is small enough for fast path.
Word thread = registerAsWord(threadRegister);
boolean inlineContiguousAllocationSupported = GraalHotSpotVMConfigNode.inlineContiguousAllocationSupported();
- if (inlineContiguousAllocationSupported && !useCMSIncrementalMode(INJECTED_VMCONFIG) && length >= 0 && length <= MAX_ARRAY_FAST_PATH_ALLOCATION_LENGTH) {
+ if (useFastTLABRefill(INJECTED_VMCONFIG) && inlineContiguousAllocationSupported && !useCMSIncrementalMode(INJECTED_VMCONFIG) && length >= 0 &&
+ length <= MAX_ARRAY_FAST_PATH_ALLOCATION_LENGTH) {
Word memory = refillAllocate(thread, intArrayHub, sizeInBytes, logging(options));
if (memory.notEqual(0)) {
if (logging(options)) {
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewInstanceStub.java Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewInstanceStub.java Fri Jun 22 07:49:27 2018 -0700
@@ -54,6 +54,7 @@
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.tlabSlowAllocationsOffset;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.tlabStats;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useCMSIncrementalMode;
+import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useFastTLABRefill;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useG1GC;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useTLAB;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize;
@@ -148,7 +149,7 @@
*/
Word thread = registerAsWord(threadRegister);
boolean inlineContiguousAllocationSupported = GraalHotSpotVMConfigNode.inlineContiguousAllocationSupported();
- if (!forceSlowPath(options) && inlineContiguousAllocationSupported && !useCMSIncrementalMode(INJECTED_VMCONFIG)) {
+ if (useFastTLABRefill(INJECTED_VMCONFIG) && !forceSlowPath(options) && inlineContiguousAllocationSupported && !useCMSIncrementalMode(INJECTED_VMCONFIG)) {
if (isInstanceKlassFullyInitialized(hub)) {
int sizeInBytes = readLayoutHelper(hub);
Word memory = refillAllocate(thread, intArrayHub, sizeInBytes, logging(options));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/legal/jquery-migrate.md Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,41 @@
+## jQuery Migrate v3.0.1
+
+### jQuery Migrate License
+```
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-migrate
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+```
--- a/src/jdk.javadoc/share/legal/jquery.md Thu Jun 21 21:14:08 2018 -0700
+++ b/src/jdk.javadoc/share/legal/jquery.md Fri Jun 22 07:49:27 2018 -0700
@@ -1,7 +1,7 @@
## jQuery v3.3.1
### jQuery License
-<pre>
+```
jQuery v 3.3.1
Copyright 2005, 2018 jQuery Foundation, Inc. and other contributors
http://jquery.com/
@@ -70,4 +70,4 @@
*********************
-</pre>
+```
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/legal/jqueryUI.md Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,49 @@
+## jQuery UI v1.11.4
+
+### jQuery UI License
+```
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+```
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/ProblemList-cds-mode.txt Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, 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
+# 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.
+#
+
+#############################################################################
+#
+# Additional list of quarantined tests when CDS mode enabled.
+#
+#############################################################################
+
+serviceability/sa/TestInstanceKlassSize.java 8204308 generic-all
+serviceability/sa/TestInstanceKlassSizeForInterface.java 8204308 generic-all
--- a/test/hotspot/jtreg/ProblemList-graal.txt Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/ProblemList-graal.txt Fri Jun 22 07:49:27 2018 -0700
@@ -79,9 +79,29 @@
compiler/jvmci/compilerToVM/ReprofileTest.java 8201333 generic-all
-compiler/tiered/TieredLevelsTest.java 8202124 generic-all
-compiler/tiered/NonTieredLevelsTest.java 8202124 generic-all
-compiler/intrinsics/mathexact/sanity/SubtractExactLongTest.java 8202124 generic-all
+compiler/tiered/LevelTransitionTest.java 8202124 generic-all
+compiler/tiered/TieredLevelsTest.java 8202124 generic-all
+compiler/tiered/NonTieredLevelsTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/IncrementExactIntTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/NegateExactIntTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/AddExactLongTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/SubtractExactLongTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/AddExactIntTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/NegateExactLongTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/DecrementExactLongTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/DecrementExactIntTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/IncrementExactLongTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/SubtractExactIntTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/MultiplyExactLongTest.java 8202124 generic-all
+compiler/intrinsics/mathexact/sanity/MultiplyExactIntTest.java 8202124 generic-all
+compiler/whitebox/DeoptimizeAllTest.java 8202124 generic-all
+compiler/whitebox/DeoptimizeMethodTest.java 8202124 generic-all
+compiler/whitebox/ForceNMethodSweepTest.java 8202124 generic-all
+compiler/whitebox/GetNMethodTest.java 8202124 generic-all
+compiler/whitebox/IsMethodCompilableTest.java 8202124 generic-all
+compiler/whitebox/LockCompilationTest.java 8202124 generic-all
+compiler/whitebox/SetDontInlineMethodTest.java 8202124 generic-all
+compiler/whitebox/SetForceInlineMethodTest.java 8202124 generic-all
compiler/jvmci/meta/StableFieldTest.java CODETOOLS-7902162 generic-all
compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/HotSpotConstantReflectionProviderTest.java CODETOOLS-7902162 generic-all
--- a/test/hotspot/jtreg/ProblemList.txt Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/ProblemList.txt Fri Jun 22 07:49:27 2018 -0700
@@ -123,6 +123,7 @@
vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk001/TestDescription.java 8016181 generic-all
vmTestbase/nsk/jvmti/FieldModification/fieldmod001/TestDescription.java 8016181 generic-all
+vmTestbase/nsk/jvmti/RedefineClasses/StressRedefineWithoutBytecodeCorruption/TestDescription.java 8202896 linux-x64
vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted001/TestDescription.java 7013634 generic-all
vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted003/TestDescription.java 6606767 generic-all
vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted004/TestDescription.java 7013634,6606767 generic-all
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/c2/Test8062950.java Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2018, 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
+ * 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 8062950
+ * @key regression
+ * @library /test/lib
+ * @run driver compiler.c2.Test8062950
+ */
+
+package compiler.c2;
+
+import jdk.test.lib.process.ProcessTools;
+
+public class Test8062950 {
+ private static final String CLASSNAME = "DoesNotExist";
+ public static void main(String[] args) throws Exception {
+ ProcessTools.executeTestJvm("-Xcomp",
+ "-XX:-TieredCompilation",
+ "-XX:-UseOptoBiasInlining",
+ CLASSNAME)
+ .shouldHaveExitValue(1)
+ .shouldContain("Error: Could not find or load main class " + CLASSNAME)
+ .shouldNotContain("A fatal error has been detected")
+ .shouldNotContain("Internal Error")
+ .shouldNotContain("HotSpot Virtual Machine Error");
+ }
+}
--- a/test/hotspot/jtreg/compiler/jvmci/TestValidateModules.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/compiler/jvmci/TestValidateModules.java Fri Jun 22 07:49:27 2018 -0700
@@ -37,7 +37,8 @@
public static void main(String... args) throws Exception {
ProcessTools.executeTestJava("-XX:+UnlockExperimentalVMOptions",
"-XX:+EnableJVMCI",
- "--validate-modules")
+ "--validate-modules",
+ "--list-modules")
.outputTo(System.out)
.errorTo(System.out)
.stdoutShouldContain("java.base")
--- a/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -23,9 +23,12 @@
/*
* @test ReservedStackTest
+ *
+ * @requires vm.opt.DeoptimizeAlot == null | vm.opt.DeoptimizeAlot == false
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @modules java.base/jdk.internal.vm.annotation
+ *
* @run main/othervm -XX:MaxInlineLevel=2 -XX:CompileCommand=exclude,java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread ReservedStackTest
*/
--- a/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTestCompiler.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTestCompiler.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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
@@ -24,10 +24,13 @@
/*
* @test ReservedStackTestCompiler
* @summary Run ReservedStackTest with dedicated compilers C1 and C2.
+ *
* @requires vm.flavor == "server" & !vm.emulatedClient
+ * @requires vm.opt.DeoptimizeAlot == null | vm.opt.DeoptimizeAlot == false
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @modules java.base/jdk.internal.vm.annotation
+ *
* @run main/othervm -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:-Inline -XX:CompileCommand=exclude,java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread ReservedStackTest
* @run main/othervm -XX:-TieredCompilation -XX:-Inline -XX:CompileCommand=exclude,java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread ReservedStackTest
*/
--- a/test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java Fri Jun 22 07:49:27 2018 -0700
@@ -68,22 +68,10 @@
if (skipTestCase(testEntry))
continue;
- OutputAnalyzer dumpOutput;
-
- if (testEntry.equals("-XX:+FlightRecorder")) {
- dumpOutput = TestCommon.dump(appJar, classList, "-XX:+UnlockCommercialFeatures", testEntry);
- } else {
- dumpOutput = TestCommon.dump(appJar, classList, testEntry);
- }
-
+ OutputAnalyzer dumpOutput = TestCommon.dump(appJar, classList, testEntry);
TestCommon.checkDump(dumpOutput, "Loading classes to share");
- OutputAnalyzer execOutput;
- if (testEntry.equals("-XX:+FlightRecorder")) {
- execOutput = TestCommon.exec(appJar, "-XX:+UnlockCommercialFeatures", testEntry, "Hello");
- } else {
- execOutput = TestCommon.exec(appJar, testEntry, "Hello");
- }
+ OutputAnalyzer execOutput = TestCommon.exec(appJar, testEntry, "Hello");
TestCommon.checkExec(execOutput, "Hello World");
}
@@ -121,11 +109,6 @@
}
}
- if (!BuildHelper.isCommercialBuild() && testEntry.equals("-XX:+FlightRecorder"))
- {
- System.out.println("Test case not applicable on non-commercial builds");
- return true;
- }
if (Compiler.isGraalEnabled() && testEntry.equals("-XX:+UseConcMarkSweepGC"))
{
System.out.println("Graal does not support CMS");
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java Fri Jun 22 07:49:27 2018 -0700
@@ -45,10 +45,8 @@
SharedStringsUtils.runWithArchive("HelloString", "-XX:+UseG1GC");
- if (BuildHelper.isCommercialBuild()) {
- SharedStringsUtils.runWithArchiveAuto("HelloString", "-XX:+UnlockCommercialFeatures",
- "-XX:StartFlightRecording=dumponexit=true");
- }
+ SharedStringsUtils.runWithArchiveAuto("HelloString",
+ "-XX:StartFlightRecording=dumponexit=true");
SharedStringsUtils.runWithArchive("HelloString", "-XX:+UnlockDiagnosticVMOptions",
"-XX:NativeMemoryTracking=detail", "-XX:+PrintNMTStatistics");
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java Fri Jun 22 07:49:27 2018 -0700
@@ -55,11 +55,7 @@
out.close();
}
- // Set NewSize to 8m due to dumping could fail in hs-tier6 testing with
- // the vm options: -XX:+UnlockCommercialFeatures -XX:+UseDeterministicG1GC
- // resulting in vm initialization error:
- // "GC triggered before VM initialization completed. Try increasing NewSize, current value 1331K."
- OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list("HelloString"), "-XX:NewSize=8m",
+ OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list("HelloString"),
"-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile);
TestCommon.checkDump(dumpOutput);
OutputAnalyzer execOutput = TestCommon.exec(appJar, "HelloString");
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java Fri Jun 22 07:49:27 2018 -0700
@@ -637,10 +637,9 @@
public boolean isJFR_active() {
String opts = argumentHandler.getLaunchOptions();
- int unlockPos = opts.indexOf("-XX:+UnlockCommercialFeatures");
int jfrPos = opts.indexOf("-XX:+FlightRecorder");
- if (unlockPos >= 0 && jfrPos >= 0 && jfrPos > unlockPos)
+ if (jfrPos >= 0)
return true;
else
return false;
--- a/test/jdk/java/util/Collection/MOAT.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/Collection/MOAT.java Fri Jun 22 07:49:27 2018 -0700
@@ -415,6 +415,7 @@
equal(c.toString(),"[]");
equal(c.toArray().length, 0);
equal(c.toArray(new Object[0]).length, 0);
+ equal(c.toArray(Object[]::new).length, 0);
check(c.toArray(new Object[]{42})[0] == null);
Object[] a = new Object[1]; a[0] = Boolean.TRUE;
@@ -690,6 +691,13 @@
check(a.getClass() == Integer[].class);
}
+ {
+ Integer[] a = c.toArray(Integer[]::new);
+ equal(c.size(), a.length);
+ check(a.getClass() == Integer[].class);
+ check(Arrays.equals(c.toArray(new Integer[0]), a));
+ }
+
check(c.equals(c));
if (c instanceof Serializable) {
//System.out.printf("Serializing %s%n", c.getClass().getName());
--- a/test/jdk/java/util/List/ListFactories.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/List/ListFactories.java Fri Jun 22 07:49:27 2018 -0700
@@ -48,7 +48,7 @@
/*
* @test
- * @bug 8048330
+ * @bug 8048330 8203184
* @summary Test convenience static factory methods on List.
* @run testng ListFactories
*/
@@ -330,6 +330,24 @@
assertSame(copy1, copy2);
}
+ @Test
+ public void copyOfSubList() {
+ List<Integer> orig = List.of(0, 1, 2, 3);
+ List<Integer> sub = orig.subList(0, 3);
+ List<Integer> copy = List.copyOf(sub);
+
+ assertNotSame(sub, copy);
+ }
+
+ @Test
+ public void copyOfSubSubList() {
+ List<Integer> orig = List.of(0, 1, 2, 3);
+ List<Integer> sub = orig.subList(0, 3).subList(0, 2);
+ List<Integer> copy = List.copyOf(sub);
+
+ assertNotSame(sub, copy);
+ }
+
@Test(expectedExceptions=NullPointerException.class)
public void copyOfRejectsNullCollection() {
List<Integer> list = List.copyOf(null);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/Locale/LSRDataTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,361 @@
+/*
+ * Copyright (c) 2018, 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
+ * 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 8204938
+ * @summary Checks the IANA language subtag registry data update
+ * with Locale.LanguageRange parse method.
+ * @run main LSRDataTest
+ */
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Locale;
+import java.util.Locale.LanguageRange;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static java.util.Locale.LanguageRange.MAX_WEIGHT;
+import static java.util.Locale.LanguageRange.MIN_WEIGHT;
+
+public class LSRDataTest {
+
+ private static final char HYPHEN = '-';
+ private static final Map<String, String> singleLangEquivMap = new HashMap<>();
+ private static final Map<String, List<String>> multiLangEquivsMap = new HashMap<>();
+ private static final Map<String, String> regionVariantEquivMap = new HashMap<>();
+
+ // path to the lsr file from the make folder, this test relies on the
+ // relative path to the file in the make folder, considering
+ // test and make will always exist in the same jdk layout
+ private static final String LSR_FILE_PATH = System.getProperty("test.src", ".")
+ + "/../../../../../make/data/lsrdata/language-subtag-registry.txt";
+
+ public static void main(String[] args) throws IOException {
+
+ loadLSRData(Paths.get(LSR_FILE_PATH).toRealPath());
+
+ // checking the tags with weight
+ String ranges = "Accept-Language: aam, adp, aue, bcg, cqu, ema,"
+ + " en-gb-oed, gti, koj, kwq, kxe, lii, lmm, mtm, ngv,"
+ + " oyb, phr, pub, suj, taj;q=0.9, yug;q=0.5, gfx;q=0.4";
+ List<LanguageRange> expected = parse(ranges);
+ List<LanguageRange> actual = LanguageRange.parse(ranges);
+ checkEquality(actual, expected);
+
+ // checking all language ranges
+ ranges = generateLangRanges();
+ expected = parse(ranges);
+ actual = LanguageRange.parse(ranges);
+ checkEquality(actual, expected);
+
+ // checking all region/variant ranges
+ ranges = generateRegionRanges();
+ expected = parse(ranges);
+ actual = LanguageRange.parse(ranges);
+ checkEquality(actual, expected);
+
+ }
+
+ // generate range string containing all equiv language tags
+ private static String generateLangRanges() {
+ return Stream.concat(singleLangEquivMap.keySet().stream(), multiLangEquivsMap
+ .keySet().stream()).collect(Collectors.joining(","));
+ }
+
+ // generate range string containing all equiv region tags
+ private static String generateRegionRanges() {
+ return regionVariantEquivMap.keySet().stream()
+ .map(r -> "en".concat(r)).collect(Collectors.joining(", "));
+ }
+
+ // load LSR data from the file
+ private static void loadLSRData(Path path) throws IOException {
+ String type = null;
+ String tag = null;
+ String preferred;
+
+ for (String line : Files.readAllLines(path, Charset.forName("UTF-8"))) {
+ line = line.toLowerCase(Locale.ROOT);
+ int index = line.indexOf(' ') + 1;
+ if (line.startsWith("type:")) {
+ type = line.substring(index);
+ } else if (line.startsWith("tag:") || line.startsWith("subtag:")) {
+ tag = line.substring(index);
+ } else if (line.startsWith("preferred-value:") && !type.equals("extlang")) {
+ preferred = line.substring(index);
+ processDataAndGenerateMaps(type, tag, preferred);
+ } else if (line.equals("%%")) {
+ type = null;
+ tag = null;
+ }
+ }
+ }
+
+ private static void processDataAndGenerateMaps(String type,
+ String tag,
+ String preferred) {
+ StringBuilder sb;
+ if (type.equals("region") || type.equals("variant")) {
+ if (!regionVariantEquivMap.containsKey(preferred)) {
+ String tPref = HYPHEN + preferred;
+ String tTag = HYPHEN + tag;
+ regionVariantEquivMap.put(tPref, tTag);
+ regionVariantEquivMap.put(tTag, tPref);
+ } else {
+ throw new RuntimeException("New case, need implementation."
+ + " A region/variant subtag \"" + preferred
+ + "\" is registered for more than one subtags.");
+ }
+ } else { // language, grandfathered, and redundant
+ if (!singleLangEquivMap.containsKey(preferred)
+ && !multiLangEquivsMap.containsKey(preferred)) {
+ // new entry add it into single equiv map
+ singleLangEquivMap.put(preferred, tag);
+ singleLangEquivMap.put(tag, preferred);
+ } else if (singleLangEquivMap.containsKey(preferred)
+ && !multiLangEquivsMap.containsKey(preferred)) {
+ String value = singleLangEquivMap.get(preferred);
+ List<String> subtags = List.of(preferred, value, tag);
+ // remove from single eqiv map before adding to multi equiv
+ singleLangEquivMap.keySet().removeAll(subtags);
+ addEntriesToMultiEquivsMap(subtags);
+ } else if (multiLangEquivsMap.containsKey(preferred)
+ && !singleLangEquivMap.containsKey(preferred)) {
+ List<String> subtags = multiLangEquivsMap.get(preferred);
+ // should use the order preferred, subtags, tag to keep the
+ // expected order same as the JDK API in multi equivalent maps
+ subtags.add(0, preferred);
+ subtags.add(tag);
+ addEntriesToMultiEquivsMap(subtags);
+ }
+ }
+ }
+
+ // Add entries into the multi equivalent map from the given subtags
+ private static void addEntriesToMultiEquivsMap(List<String> subtags) {
+ // for each subtag within the given subtags, add an entry in multi
+ // equivalent language map with subtag as the key and the value
+ // as the list of all subtags excluding the one which is getting
+ // traversed
+ subtags.forEach(subtag -> multiLangEquivsMap.put(subtag, subtags.stream()
+ .filter(t -> !t.equals(subtag))
+ .collect(Collectors.toList())));
+ }
+
+ private static List<LanguageRange> parse(String ranges) {
+ ranges = ranges.replace(" ", "").toLowerCase(Locale.ROOT);
+ if (ranges.startsWith("accept-language:")) {
+ ranges = ranges.substring(16);
+ }
+ String[] langRanges = ranges.split(",");
+ List<LanguageRange> priorityList = new ArrayList<>(langRanges.length);
+ int numOfRanges = 0;
+ for (String range : langRanges) {
+ int wIndex = range.indexOf(";q=");
+ String tag;
+ double weight = 0.0;
+ if (wIndex == -1) {
+ tag = range;
+ weight = MAX_WEIGHT;
+ } else {
+ tag = range.substring(0, wIndex);
+ try {
+ weight = Double.parseDouble(range.substring(wIndex + 3));
+ } catch (RuntimeException ex) {
+ throw new IllegalArgumentException("weight= " + weight + " for"
+ + " language range \"" + tag + "\", should be"
+ + " represented as a double");
+ }
+
+ if (weight < MIN_WEIGHT || weight > MAX_WEIGHT) {
+ throw new IllegalArgumentException("weight=" + weight
+ + " for language range \"" + tag
+ + "\", must be between " + MIN_WEIGHT
+ + " and " + MAX_WEIGHT + ".");
+ }
+ }
+
+ LanguageRange entry = new LanguageRange(tag, weight);
+ if (!priorityList.contains(entry)) {
+
+ int index = numOfRanges;
+ // find the index in the list to add the current range at the
+ // correct index sorted by the descending order of weight
+ for (int i = 0; i < priorityList.size(); i++) {
+ if (priorityList.get(i).getWeight() < weight) {
+ index = i;
+ break;
+ }
+ }
+ priorityList.add(index, entry);
+ numOfRanges++;
+
+ String equivalent = getEquivalentForRegionAndVariant(tag);
+ if (equivalent != null) {
+ LanguageRange equivRange = new LanguageRange(equivalent, weight);
+ if (!priorityList.contains(equivRange)) {
+ priorityList.add(index + 1, equivRange);
+ numOfRanges++;
+ }
+ }
+
+ List<String> equivalents = getEquivalentsForLanguage(tag);
+ if (equivalents != null) {
+ for (String equiv : equivalents) {
+ LanguageRange equivRange = new LanguageRange(equiv, weight);
+ if (!priorityList.contains(equivRange)) {
+ priorityList.add(index + 1, equivRange);
+ numOfRanges++;
+ }
+
+ equivalent = getEquivalentForRegionAndVariant(equiv);
+ if (equivalent != null) {
+ equivRange = new LanguageRange(equivalent, weight);
+ if (!priorityList.contains(equivRange)) {
+ priorityList.add(index + 1, equivRange);
+ numOfRanges++;
+ }
+ }
+ }
+ }
+ }
+ }
+ return priorityList;
+ }
+
+ /**
+ * A faster alternative approach to String.replaceFirst(), if the given
+ * string is a literal String, not a regex.
+ */
+ private static String replaceFirstSubStringMatch(String range,
+ String substr, String replacement) {
+ int pos = range.indexOf(substr);
+ if (pos == -1) {
+ return range;
+ } else {
+ return range.substring(0, pos) + replacement
+ + range.substring(pos + substr.length());
+ }
+ }
+
+ private static List<String> getEquivalentsForLanguage(String range) {
+ String r = range;
+
+ while (r.length() > 0) {
+ if (singleLangEquivMap.containsKey(r)) {
+ String equiv = singleLangEquivMap.get(r);
+ // Return immediately for performance if the first matching
+ // subtag is found.
+ return List.of(replaceFirstSubStringMatch(range, r, equiv));
+ } else if (multiLangEquivsMap.containsKey(r)) {
+ List<String> equivs = multiLangEquivsMap.get(r);
+ List<String> result = new ArrayList(equivs.size());
+ for (int i = 0; i < equivs.size(); i++) {
+ result.add(i, replaceFirstSubStringMatch(range,
+ r, equivs.get(i)));
+ }
+ return result;
+ }
+
+ // Truncate the last subtag simply.
+ int index = r.lastIndexOf(HYPHEN);
+ if (index == -1) {
+ break;
+ }
+ r = r.substring(0, index);
+ }
+
+ return null;
+ }
+
+ private static String getEquivalentForRegionAndVariant(String range) {
+ int extensionKeyIndex = getExtentionKeyIndex(range);
+
+ for (String subtag : regionVariantEquivMap.keySet()) {
+ int index;
+ if ((index = range.indexOf(subtag)) != -1) {
+ // Check if the matching text is a valid region or variant.
+ if (extensionKeyIndex != Integer.MIN_VALUE
+ && index > extensionKeyIndex) {
+ continue;
+ }
+
+ int len = index + subtag.length();
+ if (range.length() == len || range.charAt(len) == HYPHEN) {
+ return replaceFirstSubStringMatch(range, subtag,
+ regionVariantEquivMap.get(subtag));
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private static int getExtentionKeyIndex(String s) {
+ char[] c = s.toCharArray();
+ int index = Integer.MIN_VALUE;
+ for (int i = 1; i < c.length; i++) {
+ if (c[i] == HYPHEN) {
+ if (i - index == 2) {
+ return index;
+ } else {
+ index = i;
+ }
+ }
+ }
+ return Integer.MIN_VALUE;
+ }
+
+ private static void checkEquality(List<LanguageRange> expected,
+ List<LanguageRange> actual) {
+
+ int expectedSize = expected.size();
+ int actualSize = actual.size();
+
+ if (expectedSize != actualSize) {
+ throw new RuntimeException("[FAILED: Size of the priority list"
+ + " does not match, Expected size=" + expectedSize + "]");
+ } else {
+ for (int i = 0; i < expectedSize; i++) {
+ LanguageRange lr1 = expected.get(i);
+ LanguageRange lr2 = actual.get(i);
+
+ if (!lr1.getRange().equals(lr2.getRange())
+ || lr1.getWeight() != lr2.getWeight()) {
+ throw new RuntimeException("[FAILED: Ranges at index "
+ + i + " do not match Expected: range=" + lr1.getRange()
+ + ", weight=" + lr1.getWeight() + ", Actual: range="
+ + lr2.getRange() + ", weight=" + lr2.getWeight() + "]");
+ }
+ }
+ }
+ }
+}
--- a/test/jdk/java/util/concurrent/tck/ArrayDequeTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/concurrent/tck/ArrayDequeTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -772,7 +772,7 @@
ArrayDeque l = new ArrayDeque();
l.add(new Object());
try {
- l.toArray(null);
+ l.toArray((Object[])null);
shouldThrow();
} catch (NullPointerException success) {}
}
--- a/test/jdk/java/util/concurrent/tck/BlockingQueueTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/concurrent/tck/BlockingQueueTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -161,7 +161,7 @@
public void testToArray_NullArray() {
final Collection q = emptyCollection();
try {
- q.toArray(null);
+ q.toArray((Object[])null);
shouldThrow();
} catch (NullPointerException success) {}
}
--- a/test/jdk/java/util/concurrent/tck/Collection8Test.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/concurrent/tck/Collection8Test.java Fri Jun 22 07:49:27 2018 -0700
@@ -209,7 +209,7 @@
() -> c.iterator().forEachRemaining(null),
() -> c.spliterator().forEachRemaining(null),
() -> c.spliterator().tryAdvance(null),
- () -> c.toArray(null));
+ () -> c.toArray((Object[])null));
if (!impl.permitsNulls()) {
assertThrows(
--- a/test/jdk/java/util/concurrent/tck/ConcurrentLinkedDequeTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/concurrent/tck/ConcurrentLinkedDequeTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -712,7 +712,7 @@
public void testToArray_NullArg() {
ConcurrentLinkedDeque q = populatedDeque(SIZE);
try {
- q.toArray(null);
+ q.toArray((Object[])null);
shouldThrow();
} catch (NullPointerException success) {}
}
--- a/test/jdk/java/util/concurrent/tck/ConcurrentLinkedQueueTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/concurrent/tck/ConcurrentLinkedQueueTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -439,7 +439,7 @@
public void testToArray_NullArg() {
ConcurrentLinkedQueue q = populatedQueue(SIZE);
try {
- q.toArray(null);
+ q.toArray((Object[])null);
shouldThrow();
} catch (NullPointerException success) {}
}
--- a/test/jdk/java/util/concurrent/tck/LinkedListTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/concurrent/tck/LinkedListTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -409,7 +409,7 @@
LinkedList l = new LinkedList();
l.add(new Object());
try {
- l.toArray(null);
+ l.toArray((Object[])null);
shouldThrow();
} catch (NullPointerException success) {}
}
--- a/test/jdk/java/util/concurrent/tck/SynchronousQueueTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/java/util/concurrent/tck/SynchronousQueueTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -464,7 +464,7 @@
public void testToArray_null(boolean fair) {
final SynchronousQueue q = new SynchronousQueue(fair);
try {
- Object[] o = q.toArray(null);
+ Object[] o = q.toArray((Object[])null);
shouldThrow();
} catch (NullPointerException success) {}
}
--- a/test/jdk/jdk/jfr/event/runtime/TestThreadCpuTimeEvent.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/jdk/jfr/event/runtime/TestThreadCpuTimeEvent.java Fri Jun 22 07:49:27 2018 -0700
@@ -160,26 +160,48 @@
return totalTime;
}
- static void testSimple() throws Throwable {
- Recording recording = new Recording();
+ static List<RecordedEvent> generateEvents(int minimumEventCount, CyclicBarrier barrier) throws Throwable {
+ int retryCount = 0;
+
+ while (true) {
+ Recording recording = new Recording();
+
+ // Default period is once per chunk
+ recording.enable(EventNames.ThreadCPULoad).withPeriod(Duration.ofMillis(eventPeriodMillis));
+ recording.start();
+
+ // Run a single pass
+ barrier.await();
+ barrier.await();
+
+ recording.stop();
+ List<RecordedEvent> events = Events.fromRecording(recording);
- // Default period is once per chunk
- recording.enable(EventNames.ThreadCPULoad).withPeriod(Duration.ofMillis(eventPeriodMillis));
- recording.start();
+ long numEvents = events.stream()
+ .filter(e -> e.getThread().getJavaName().equals(cpuConsumerThreadName))
+ .count();
+ // If the JFR periodicals thread is really starved, we may not get enough events.
+ // In that case, we simply retry the operation.
+ if (numEvents < minimumEventCount) {
+ System.out.println("Not enough events recorded, trying again...");
+ if (retryCount++ > 10) {
+ Asserts.fail("Retry count exceeded");
+ throw new RuntimeException();
+ }
+ } else {
+ return events;
+ }
+ }
+ }
+
+ static void testSimple() throws Throwable {
Duration testRunTime = Duration.ofMillis(eventPeriodMillis * cpuConsumerRunFactor);
CyclicBarrier barrier = new CyclicBarrier(2);
CpuConsumingThread thread = new CpuConsumingThread(testRunTime, barrier);
+ thread.start();
- // Run a single pass
- thread.start();
- barrier.await();
- barrier.await();
-
- recording.stop();
- List<RecordedEvent> events = Events.fromRecording(recording);
-
- Events.hasEvents(events);
+ List<RecordedEvent> events = generateEvents(1, barrier);
verifyPerThreadInvariant(events, cpuConsumerThreadName);
thread.interrupt();
@@ -187,23 +209,12 @@
}
static void testCompareWithMXBean() throws Throwable {
- Recording recording = new Recording();
-
- recording.enable(EventNames.ThreadCPULoad).withPeriod(Duration.ofMillis(eventPeriodMillis));
- recording.start();
-
Duration testRunTime = Duration.ofMillis(eventPeriodMillis * cpuConsumerRunFactor);
CyclicBarrier barrier = new CyclicBarrier(2);
CpuConsumingThread thread = new CpuConsumingThread(testRunTime, barrier);
+ thread.start();
- // Run a single pass
- thread.start();
- barrier.await();
- barrier.await();
-
- recording.stop();
- List<RecordedEvent> beforeEvents = Events.fromRecording(recording);
-
+ List<RecordedEvent> beforeEvents = generateEvents(2, barrier);
verifyPerThreadInvariant(beforeEvents, cpuConsumerThreadName);
// Run a second single pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/security/mscapi/InteropWithSunRsaSign.java Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2018, 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
+ * 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 8205445
+ * @summary Interop test between SunMSCAPI and SunRsaSign on RSASSA-PSS
+ * @requires os.family == "windows"
+ */
+
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.Signature;
+import java.security.spec.MGF1ParameterSpec;
+import java.security.spec.PSSParameterSpec;
+import java.util.Random;
+
+public class InteropWithSunRsaSign {
+
+ private static final SecureRandom NOT_SECURE_RANDOM = new SecureRandom() {
+ Random r = new Random();
+ @Override
+ public void nextBytes(byte[] bytes) {
+ r.nextBytes(bytes);
+ }
+ };
+
+ private static boolean allResult = true;
+ private static byte[] msg = "hello".getBytes();
+
+ public static void main(String[] args) throws Exception {
+
+ matrix(new PSSParameterSpec(
+ "SHA-1",
+ "MGF1",
+ MGF1ParameterSpec.SHA1,
+ 20,
+ PSSParameterSpec.TRAILER_FIELD_BC));
+
+ matrix(new PSSParameterSpec(
+ "SHA-256",
+ "MGF1",
+ MGF1ParameterSpec.SHA256,
+ 32,
+ PSSParameterSpec.TRAILER_FIELD_BC));
+
+ matrix(new PSSParameterSpec(
+ "SHA-384",
+ "MGF1",
+ MGF1ParameterSpec.SHA384,
+ 48,
+ PSSParameterSpec.TRAILER_FIELD_BC));
+
+ matrix(new PSSParameterSpec(
+ "SHA-512",
+ "MGF1",
+ MGF1ParameterSpec.SHA512,
+ 64,
+ PSSParameterSpec.TRAILER_FIELD_BC));
+
+ // non-typical salt length
+ matrix(new PSSParameterSpec(
+ "SHA-1",
+ "MGF1",
+ MGF1ParameterSpec.SHA1,
+ 17,
+ PSSParameterSpec.TRAILER_FIELD_BC));
+
+ if (!allResult) {
+ throw new Exception("Failed");
+ }
+ }
+
+ static void matrix(PSSParameterSpec pss) throws Exception {
+
+ System.out.printf("\n%10s%20s%20s%20s %s\n", pss.getDigestAlgorithm(),
+ "KeyPairGenerator", "signer", "verifier", "result");
+ System.out.printf("%10s%20s%20s%20s %s\n",
+ "-------", "----------------", "------", "--------", "------");
+
+ // KeyPairGenerator chooses SPI when getInstance() is called.
+ String[] provsForKPG = {"SunRsaSign", "SunMSCAPI"};
+
+ // "-" means no preferred provider. In this case, SPI is chosen
+ // when initSign/initVerify is called. Worth testing.
+ String[] provsForSignature = {"SunRsaSign", "SunMSCAPI", "-"};
+
+ int pos = 0;
+ for (String pg : provsForKPG) {
+ for (String ps : provsForSignature) {
+ for (String pv : provsForSignature) {
+ System.out.printf("%10d%20s%20s%20s ", ++pos, pg, ps, pv);
+ try {
+ boolean result = test(pg, ps, pv, pss);
+ System.out.println(result);
+ if (!result) {
+ allResult = false;
+ }
+ } catch (Exception e) {
+ if (pg.equals("-") || pg.equals(ps)) {
+ // When Signature provider is automatically
+ // chosen or the same with KeyPairGenerator,
+ // this is an error.
+ allResult = false;
+ System.out.println("X " + e.getMessage());
+ } else {
+ // Known restriction: SunRsaSign and SunMSCAPI can't
+ // use each other's private key for signing.
+ System.out.println(e.getMessage());
+ }
+ }
+ }
+ }
+ }
+ }
+
+ static boolean test(String pg, String ps, String pv, PSSParameterSpec pss)
+ throws Exception {
+
+ KeyPairGenerator kpg = pg.length() == 1
+ ? KeyPairGenerator.getInstance("RSA")
+ :KeyPairGenerator.getInstance("RSA", pg);
+ kpg.initialize(
+ pss.getDigestAlgorithm().equals("SHA-512") ? 2048: 1024,
+ NOT_SECURE_RANDOM);
+ KeyPair kp = kpg.generateKeyPair();
+ PrivateKey pr = kp.getPrivate();
+ PublicKey pu = kp.getPublic();
+
+ Signature s = ps.length() == 1
+ ? Signature.getInstance("RSASSA-PSS")
+ : Signature.getInstance("RSASSA-PSS", ps);
+ s.initSign(pr);
+ s.setParameter(pss);
+ s.update(msg);
+ byte[] sig = s.sign();
+
+ Signature s2 = pv.length() == 1
+ ? Signature.getInstance("RSASSA-PSS")
+ : Signature.getInstance("RSASSA-PSS", pv);
+ s2.initVerify(pu);
+ s2.setParameter(pss);
+ s2.update(msg);
+
+ return s2.verify(sig);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/security/rsa/pss/InitAgain.java Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2018, 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
+ * 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.
+ */
+import java.security.*;
+import java.security.spec.*;
+
+/**
+ * @test
+ * @bug 8205445
+ * @summary Make sure old state is cleared when init is called again
+ */
+public class InitAgain {
+
+ public static void main(String[] args) throws Exception {
+
+ byte[] msg = "hello".getBytes();
+
+ Signature s1 = Signature.getInstance("RSASSA-PSS");
+ Signature s2 = Signature.getInstance("RSASSA-PSS");
+
+ s1.setParameter(PSSParameterSpec.DEFAULT);
+ s2.setParameter(PSSParameterSpec.DEFAULT);
+
+ KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
+ kpg.initialize(1024);
+ KeyPair kp = kpg.generateKeyPair();
+
+ s1.initSign(kp.getPrivate());
+ s1.update(msg);
+ s1.initSign(kp.getPrivate());
+ s1.update(msg);
+ // Data digested in s1:
+ // Before this fix, msg | msg
+ // After this fix, msg
+
+ s2.initVerify(kp.getPublic());
+ s2.update(msg);
+ s2.initVerify(kp.getPublic());
+ s2.update(msg);
+ s2.initVerify(kp.getPublic());
+ s2.update(msg);
+ // Data digested in s2:
+ // Before this fix, msg | msg | msg
+ // After this fix, msg
+
+ if (!s2.verify(s1.sign())) {
+ throw new Exception();
+ }
+ }
+}
--- a/test/jdk/tools/launcher/modules/validate/ValidateModulesTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jdk/tools/launcher/modules/validate/ValidateModulesTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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
@@ -23,9 +23,10 @@
/**
* @test
+ * @bug 8178380 8194937
* @modules java.xml
- * @library /lib/testlibrary
- * @build ValidateModulesTest JarUtils jdk.testlibrary.*
+ * @library src /lib/testlibrary
+ * @build ValidateModulesTest hello/* JarUtils jdk.testlibrary.*
* @run testng ValidateModulesTest
* @summary Basic test for java --validate-modules
*/
@@ -45,13 +46,40 @@
public class ValidateModulesTest {
/**
- * Test that the system modules validate.
+ * Basic test --validate-modules when there are no errors.
*/
- public void testSystemModules() throws Exception {
- run("--validate-modules")
- .stdoutShouldContain("java.base")
- .stdoutShouldContain("java.xml")
- .shouldHaveExitValue(0);
+ public void testNoErrors() throws Exception {
+ String modulePath = System.getProperty("test.module.path");
+
+ test("--validate-modules");
+
+ test("--validate-modules", "-version")
+ .shouldContain("Runtime Environment");
+
+ test("--validate-modules", "--list-modules")
+ .shouldContain("java.base");
+
+ test("--validate-modules", "-d", "java.base")
+ .shouldContain("exports java.lang");
+
+ test("-p", modulePath, "-m", "hello/p.Main")
+ .shouldContain("Hello world");
+
+ test("-p", modulePath, "--validate-modules", "-m", "hello/p.Main")
+ .shouldNotContain("Hello world");
+
+ test("-p", modulePath, "--validate-modules", "--list-modules")
+ .shouldContain("hello");
+
+ test("-p", modulePath, "--validate-modules", "-d", "hello")
+ .shouldContain("hello")
+ .shouldContain("contains p");
+
+ testExpectingError("--validate-modules", "--add-modules", "BAD")
+ .shouldContain("Module BAD not found");
+
+ testExpectingError("--validate-modules", "-m", "BAD")
+ .shouldContain("Module BAD not found");
}
/**
@@ -68,12 +96,9 @@
Path lib = Files.createDirectory(tmpdir.resolve("lib"));
JarUtils.createJarFile(lib.resolve("xml.jar"), classes);
- int exitValue = run("-p", lib.toString(), "--validate-modules")
+ testExpectingError("-p", lib.toString(), "--validate-modules")
.shouldContain("xml automatic")
- .shouldContain("conflicts with module java.xml")
- .getExitValue();
- assertTrue(exitValue != 0);
-
+ .shouldContain("conflicts with module java.xml");
}
/**
@@ -89,10 +114,8 @@
JarUtils.createJarFile(lib.resolve("foo-1.0.jar"), classes);
JarUtils.createJarFile(lib.resolve("foo-2.0.jar"), classes);
- int exitValue = run("-p", lib.toString(), "--validate-modules")
- .shouldContain("contains same module")
- .getExitValue();
- assertTrue(exitValue != 0);
+ testExpectingError("-p", lib.toString(), "--validate-modules")
+ .shouldContain("contains same module");
}
/**
@@ -110,18 +133,30 @@
Path lib2 = Files.createDirectory(tmpdir.resolve("lib2"));
JarUtils.createJarFile(lib2.resolve("foo-2.0.jar"), classes);
- run("-p", lib1 + File.pathSeparator + lib2, "--validate-modules")
- .shouldContain("shadowed by")
- .shouldHaveExitValue(0);
+ test("-p", lib1 + File.pathSeparator + lib2, "--validate-modules")
+ .shouldContain("shadowed by");
}
/**
- * Runs the java launcher with the given arguments.
+ * Runs the java launcher with the given arguments, expecting a 0 exit code
*/
- private OutputAnalyzer run(String... args) throws Exception {
- return ProcessTools.executeTestJava(args)
+ private OutputAnalyzer test(String... args) throws Exception {
+ OutputAnalyzer analyzer = ProcessTools.executeTestJava(args)
.outputTo(System.out)
.errorTo(System.out);
+ assertTrue(analyzer.getExitValue() == 0);
+ return analyzer;
+ }
+
+ /**
+ * Runs the java launcher with the given arguments, expecting a non-0 exit code
+ */
+ private OutputAnalyzer testExpectingError(String... args) throws Exception {
+ OutputAnalyzer analyzer = ProcessTools.executeTestJava(args)
+ .outputTo(System.out)
+ .errorTo(System.out);
+ assertTrue(analyzer.getExitValue() != 0);
+ return analyzer;
}
/**
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/tools/launcher/modules/validate/src/hello/module-info.java Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2018, 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
+ * 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.
+ */
+module hello { }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/tools/launcher/modules/validate/src/hello/p/Main.java Fri Jun 22 07:49:27 2018 -0700
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018, 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
+ * 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.
+ */
+package p;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world");
+ }
+}
--- a/test/jtreg-ext/requires/VMProps.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/jtreg-ext/requires/VMProps.java Fri Jun 22 07:49:27 2018 -0700
@@ -176,16 +176,13 @@
* @return "true" if Flight Recorder is enabled, "false" if is disabled.
*/
protected String vmFlightRecorder() {
- Boolean isUnlockedCommercialFatures = WB.getBooleanVMFlag("UnlockCommercialFeatures");
Boolean isFlightRecorder = WB.getBooleanVMFlag("FlightRecorder");
String startFROptions = WB.getStringVMFlag("StartFlightRecording");
- if (isUnlockedCommercialFatures != null && isUnlockedCommercialFatures) {
- if (isFlightRecorder != null && isFlightRecorder) {
- return "true";
- }
- if (startFROptions != null && !startFROptions.isEmpty()) {
- return "true";
- }
+ if (isFlightRecorder != null && isFlightRecorder) {
+ return "true";
+ }
+ if (startFROptions != null && !startFROptions.isEmpty()) {
+ return "true";
}
return "false";
}
--- a/test/langtools/tools/javac/launcher/SourceLauncherTest.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/langtools/tools/javac/launcher/SourceLauncherTest.java Fri Jun 22 07:49:27 2018 -0700
@@ -121,7 +121,7 @@
@Test
public void testHelloWorldWithShebang(Path base) throws IOException {
tb.writeJavaFiles(base,
- "#!/usr/bin/java --source 11\n" +
+ "#!/usr/bin/java --source " + thisVersion + "\n" +
"import java.util.Arrays;\n" +
"class HelloWorld {\n" +
" public static void main(String... args) {\n" +
@@ -205,7 +205,7 @@
@Test
public void testHelloWorldWithShebangJava(Path base) throws IOException {
tb.writeJavaFiles(base,
- "#!/usr/bin/java --source 11\n" +
+ "#!/usr/bin/java --source " + thisVersion + "\n" +
"import java.util.Arrays;\n" +
"class HelloWorld {\n" +
" public static void main(String... args) {\n" +
@@ -215,10 +215,10 @@
Path file = base.resolve("HelloWorld.java");
testError(file,
file + ":1: error: illegal character: '#'\n" +
- "#!/usr/bin/java --source 11\n" +
+ "#!/usr/bin/java --source " + thisVersion + "\n" +
"^\n" +
file + ":1: error: class, interface, or enum expected\n" +
- "#!/usr/bin/java --source 11\n" +
+ "#!/usr/bin/java --source " + thisVersion + "\n" +
" ^\n" +
"2 errors\n",
"error: compilation failed");
@@ -305,7 +305,7 @@
@Test
public void testBadShebang(Path base) throws IOException {
tb.writeJavaFiles(base,
- "#/usr/bin/java --source 11\n" +
+ "#/usr/bin/java --source " + thisVersion + "\n" +
"import java.util.Arrays;\n" +
"class HelloWorld {\n" +
" public static void main(String... args) {\n" +
@@ -315,10 +315,10 @@
Path file = base.resolve("HelloWorld.java");
testError(file,
file + ":1: error: illegal character: '#'\n" +
- "#/usr/bin/java --source 11\n" +
+ "#/usr/bin/java --source " + thisVersion + "\n" +
"^\n" +
file + ":1: error: class, interface, or enum expected\n" +
- "#/usr/bin/java --source 11\n" +
+ "#/usr/bin/java --source " + thisVersion + "\n" +
" ^\n" +
"2 errors\n",
"error: compilation failed");
--- a/test/langtools/tools/javac/modules/AnnotationProcessing.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/langtools/tools/javac/modules/AnnotationProcessing.java Fri Jun 22 07:49:27 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -568,7 +568,7 @@
"--module-source-path", moduleSrc.toString());
assertFileExists(classes, "m1x", "api1", "Impl.class");
- Files.delete(m1.resolve("test").resolve("Test.java"));
+ deleteFile(m1.resolve("test").resolve("Test.java"));
//resource class output:
runCompiler(base,
@@ -623,7 +623,7 @@
assertFileExists(classes, "m1x", pack, "Pass.class");
assertFileNotExists(classes, "m2x", pack, "Pass.class");
- Files.delete(m1.resolve("test").resolve("Test.java"));
+ deleteFile(m1.resolve("test").resolve("Test.java"));
runCompiler(base,
moduleSrc,
@@ -694,6 +694,36 @@
}
}
+ private void deleteFile(Path file) throws IOException {
+ long startTime = System.currentTimeMillis();
+
+ do {
+ Files.delete(file);
+ if (!Files.exists(file)) {
+ return;
+ }
+ System.err.println("!! File not deleted !!");
+ System.gc(); // allow finalizers and cleaners to run
+ try {
+ Thread.sleep(RETRY_DELETE_MILLIS);
+ } catch (InterruptedException e) {
+ throw new IOException("Interrupted while deleting " + file, e);
+ }
+ } while ((System.currentTimeMillis() - startTime) <= MAX_RETRY_DELETE_MILLIS);
+
+ throw new IOException("Can't delete " + file);
+ }
+
+
+ private static final int RETRY_DELETE_MILLIS;
+ private static final int MAX_RETRY_DELETE_MILLIS;
+
+ static {
+ boolean isWindows = System.getProperty("os.name").startsWith("Windows");
+ RETRY_DELETE_MILLIS = isWindows ? 500 : 0;
+ MAX_RETRY_DELETE_MILLIS = isWindows ? 15 * 1000 : 0;
+ }
+
public static abstract class GeneratingAP extends AbstractProcessor {
public void createSource(CreateFileObject file, String name, String content) {
@@ -842,7 +872,7 @@
options);
assertFileExists(classes, modulePath, "impl", "Impl.class");
- Files.delete(m1.resolve("test").resolve("Test.java"));
+ deleteFile(m1.resolve("test").resolve("Test.java"));
//resource class output:
runCompiler(base,
@@ -869,7 +899,7 @@
"expectFilerException(() -> filer.getResource(StandardLocation.SOURCE_PATH, \"m1x/impl\", \"resource\"))",
"-sourcepath", m1.toString());
- Files.delete(m1.resolve("impl").resolve("resource"));
+ deleteFile(m1.resolve("impl").resolve("resource"));
//can read resources from the system module path if module name given:
runCompiler(base,
@@ -930,7 +960,7 @@
"-sourcepath", m1.toString());
}
- Files.delete(m1.resolve("module-info.java"));
+ deleteFile(m1.resolve("module-info.java"));
tb.writeJavaFiles(m1,
"package test; class Test { }");
--- a/test/langtools/tools/javac/processing/model/completionfailure/NoAbortForBadClassFile.java Thu Jun 21 21:14:08 2018 -0700
+++ b/test/langtools/tools/javac/processing/model/completionfailure/NoAbortForBadClassFile.java Fri Jun 22 07:49:27 2018 -0700
@@ -135,15 +135,13 @@
permutations(files, Collections.emptyList(), result);
+ int testNum = 0;
+
for (List<Path> order : result) {
for (Path missing : order) {
- Path test = base.resolve("test");
+ Path test = base.resolve(String.valueOf(testNum++)).resolve("test");
- if (Files.exists(test)) {
- tb.cleanDirectory(test);
- } else {
- tb.createDirectories(test);
- }
+ tb.createDirectories(test);
for (Path p : order) {
Files.copy(p, test.resolve(p.getFileName()));