# HG changeset patch # User xuelei # Date 1529678967 25200 # Node ID a48cca98dea62f884a2323f236e6d3b5f99520b4 # Parent 76025c6c6e29adee49aaeeb51d0e1cbf8e172173# Parent 46492a7739128137dd23f190f1721af987c40454 Merge diff -r 76025c6c6e29 -r a48cca98dea6 .hgtags --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 bin/nashorn/runopt.sh --- 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" diff -r 76025c6c6e29 -r a48cca98dea6 make/conf/jib-profiles.js --- 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", diff -r 76025c6c6e29 -r a48cca98dea6 make/lib/Lib-jdk.crypto.mscapi.gmk --- 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) diff -r 76025c6c6e29 -r a48cca98dea6 make/nashorn/project.properties --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/aarch64.ad --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp --- 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); } } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp --- 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))); diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp --- 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()))); +} + diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.hpp --- 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 { +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() {} }; diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp --- 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) { diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp --- 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, diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/aarch64/templateTable_aarch64.cpp --- 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); } } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/assembler_x86.cpp --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/assembler_x86.hpp --- 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); diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp --- 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); } } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/c1_Runtime1_x86.cpp --- 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))); diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp --- 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 +} diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.hpp --- 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 { -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() {} }; diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/macroAssembler_x86.cpp --- 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 . // The receiver klass is in recv_klass. diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/macroAssembler_x86.hpp --- 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, diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/stubGenerator_x86_64.cpp --- 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(); diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/templateTable_x86.cpp --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/vm_version_x86.cpp --- 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) diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/cpu/x86/vm_version_x86.hpp --- 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() && diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp --- 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); } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp --- 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(); diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp --- 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 } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp --- 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 List; +typedef StopOnNullIterator 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); +} diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.hpp --- 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 List; - typedef StopOnNullIterator 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/storage/jfrBuffer.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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp --- 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; } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.cpp --- 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; } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.hpp --- 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: diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/jfr/utilities/jfrAllocation.cpp --- 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); } } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/runtime/arguments.cpp --- 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() }, diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/runtime/flags/jvmFlag.cpp --- 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; } } diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/runtime/flags/jvmFlag.hpp --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/runtime/flags/jvmFlagRangeList.cpp --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/hotspot/share/runtime/flags/jvmFlagWriteableList.cpp --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java --- 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 set = new HashSet<>(options.length); - Collections.addAll(set, options); + Set set; + if (options.length == 0) { + set = Collections.emptySet(); + } else { + set = new HashSet<>(); + Collections.addAll(set, options); + } return open(file, set, null, NO_ATTRIBUTES); } diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/nio/channels/FileChannel.java --- 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 set = new HashSet<>(options.length); - Collections.addAll(set, options); + Set set; + if (options.length == 0) { + set = Collections.emptySet(); + } else { + set = new HashSet<>(); + Collections.addAll(set, options); + } return open(path, set, NO_ATTRIBUTES); } diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/nio/file/Files.java --- 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 set = new HashSet<>(options.length); - Collections.addAll(set, options); + Set 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 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 options = - EnumSet.of(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - newByteChannel(path, options, attrs).close(); + newByteChannel(path, DEFAULT_CREATE_OPTIONS, attrs).close(); return path; } diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/nio/file/spi/FileSystemProvider.java --- 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 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 opts = new HashSet<>(len + 3); + Set 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)); } diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/util/Collection.java --- 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. * - *

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. * - *

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. * *

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: * *

-     *     String[] y = x.toArray(new String[0]);
+ * String[] y = new String[SIZE]; + * ... + * y = x.toArray(y); * - * Note that {@code toArray(new Object[0])} is identical in function to + *

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}. + * + *

Note that {@code toArray(new Object[0])} is identical in function to * {@code toArray()}. * * @param the component type of the array to contain the collection @@ -329,6 +342,45 @@ */ 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. + * + *

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. + * + *

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}: + * + *

+     *     String[] y = x.toArray(String[]::new);
+ * + * @implSpec + * The default implementation calls the generator function with zero + * and then passes the resulting array to {@link #toArray(Object[]) toArray(T[])}. + * + * @param 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[] toArray(IntFunction generator) { + return toArray(generator.apply(0)); + } + // Modification Operations /** diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/util/Collections.java --- 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[] 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[] toArray(T[] a) {return c.toArray(a);} + public T[] toArray(IntFunction f) {return c.toArray(f);} + public String toString() {return c.toString();} public Iterator iterator() { return new Iterator() { @@ -2020,6 +2022,9 @@ public T[] toArray(T[] a) { synchronized (mutex) {return c.toArray(a);} } + public T[] toArray(IntFunction f) { + synchronized (mutex) {return c.toArray(f);} + } public Iterator 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[] 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[] toArray(T[] a) { return c.toArray(a); } + public T[] toArray(IntFunction 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, Serializable { private static final long serialVersionUID = 1802017725587941708L; private final Deque q; - AsLIFOQueue(Deque 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 iterator() { return q.iterator(); } - public Object[] toArray() { return q.toArray(); } - public 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 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 iterator() { return q.iterator(); } + public Object[] toArray() { return q.toArray(); } + public T[] toArray(T[] a) { return q.toArray(a); } + public T[] toArray(IntFunction 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 diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/util/ImmutableCollections.java --- 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 List listCopy(Collection coll) { + if (coll instanceof AbstractImmutableList && coll.getClass() != SubList.class) { + return (List)coll; + } else { + return (List)List.of(coll.toArray()); + } + } + @SuppressWarnings("unchecked") static List emptyList() { return (List) ListN.EMPTY_LIST; diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/java/util/List.java --- 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 List copyOf(Collection coll) { - if (coll instanceof ImmutableCollections.AbstractImmutableList) { - return (List)coll; - } else { - return (List)List.of(coll.toArray()); - } + return ImmutableCollections.listCopy(coll); } } diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java --- 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 allSystem = ModuleFinder.ofSystem().findAll() - .stream() - .map(ModuleReference::descriptor) - .map(ModuleDescriptor::name) - .collect(Collectors.toSet()); - - Configuration cf = SharedSecrets.getJavaLangModuleAccess() - .resolveAndBind(ModuleFinder.ofSystem(), - allSystem, - null); - - Function 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, diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/jdk/internal/module/ModulePathValidator.java --- /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 nameToModule; + private final Map 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 stream = Files.newDirectoryStream(dir)) { + Map 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 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")); + } +} diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/sun/launcher/LauncherHelper.java --- 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 nameToModule = new HashMap<>(); - private Map 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 stream = Files.newDirectoryStream(dir)) { - Map 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 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(); - } - } - } } diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/classes/sun/security/rsa/RSAPSSSignature.java --- 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(); } /** diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/share/native/libjli/java.c --- 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 */ diff -r 76025c6c6e29 -r a48cca98dea6 src/java.base/windows/native/libjava/FileDescriptor_md.c --- 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"); } } diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/RSASignature.java --- 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; } } diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/SunMSCAPI.java --- 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", diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.crypto.mscapi/windows/native/libsunmscapi/security.cpp --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/CallSiteDescriptor.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/ClassMap.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/DynamicLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/DynamicLinkerFactory.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/LinkerServicesImpl.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/NamedOperation.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/Namespace.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/NamespaceOperation.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/NoSuchDynamicMethodException.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/Operation.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/RelinkableCallSite.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/StandardNamespace.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/StandardOperation.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/TypeConverterFactory.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/AbstractJavaLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/ApplicableOverloadedMethods.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanIntrospector.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeansLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/CallerSensitiveDynamicMethod.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/CheckRestrictedPackage.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassString.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/DynamicMethod.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/DynamicMethodLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/FacetIntrospector.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/GuardedInvocationComponent.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/MaximallySpecific.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedDynamicMethod.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedMethod.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/SimpleDynamicMethod.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/SingleDynamicMethod.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClass.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClassIntrospector.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/StaticClassLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/beans/package-info.java --- 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. */ /** diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/ConversionComparator.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardedInvocation.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardedInvocationTransformer.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardingDynamicLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/GuardingTypeConverterFactory.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/LinkRequest.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/LinkerServices.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/MethodHandleTransformer.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/MethodTypeConversionStrategy.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/TypeBasedGuardingDynamicLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/package-info.java --- 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. */ /** diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/CompositeGuardingDynamicLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/CompositeTypeBasedGuardingDynamicLinker.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/DefaultInternalObjectFilter.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/Guards.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/Lookup.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/SimpleLinkRequest.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/TypeUtilities.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/package-info.java --- 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. */ /** diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/package-info.java --- 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. */ /** diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/support/AbstractRelinkableCallSite.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/support/ChainedCallSite.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/support/SimpleRelinkableCallSite.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/classes/jdk/dynalink/support/package-info.java --- 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. */ /** diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.dynalink/share/legal/dynalink.md --- 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
 
+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
diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java
--- 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**");
diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfigVersioned.java
--- 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;
 }
diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java
--- 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;
+    }
 }
diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewArrayStub.java
--- 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)) {
diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewInstanceStub.java
--- 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));
diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.javadoc/share/legal/jquery-migrate.md
--- /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.
+```
diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.javadoc/share/legal/jquery.md
--- 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
-
+```
 jQuery v 3.3.1
 Copyright 2005, 2018 jQuery Foundation, Inc. and other contributors
 http://jquery.com/
@@ -70,4 +70,4 @@
 
 *********************
 
-
+``` diff -r 76025c6c6e29 -r a48cca98dea6 src/jdk.javadoc/share/legal/jqueryUI.md --- /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. + +``` diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/ProblemList-cds-mode.txt --- /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 diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/ProblemList-graal.txt --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/ProblemList.txt --- 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 diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/compiler/c2/Test8062950.java --- /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"); + } +} diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/compiler/jvmci/TestValidateModules.java --- 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") diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTest.java --- 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 */ diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTestCompiler.java --- 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 */ diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java --- 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"); diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java --- 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"); diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java --- 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"); diff -r 76025c6c6e29 -r a48cca98dea6 test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java --- 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; diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/Collection/MOAT.java --- 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()); diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/List/ListFactories.java --- 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 orig = List.of(0, 1, 2, 3); + List sub = orig.subList(0, 3); + List copy = List.copyOf(sub); + + assertNotSame(sub, copy); + } + + @Test + public void copyOfSubSubList() { + List orig = List.of(0, 1, 2, 3); + List sub = orig.subList(0, 3).subList(0, 2); + List copy = List.copyOf(sub); + + assertNotSame(sub, copy); + } + @Test(expectedExceptions=NullPointerException.class) public void copyOfRejectsNullCollection() { List list = List.copyOf(null); diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/Locale/LSRDataTest.java --- /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 singleLangEquivMap = new HashMap<>(); + private static final Map> multiLangEquivsMap = new HashMap<>(); + private static final Map 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 expected = parse(ranges); + List 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 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 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 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 parse(String ranges) { + ranges = ranges.replace(" ", "").toLowerCase(Locale.ROOT); + if (ranges.startsWith("accept-language:")) { + ranges = ranges.substring(16); + } + String[] langRanges = ranges.split(","); + List 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 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 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 equivs = multiLangEquivsMap.get(r); + List 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 expected, + List 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() + "]"); + } + } + } + } +} diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/concurrent/tck/ArrayDequeTest.java --- 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) {} } diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/concurrent/tck/BlockingQueueTest.java --- 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) {} } diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/concurrent/tck/Collection8Test.java --- 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( diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/concurrent/tck/ConcurrentLinkedDequeTest.java --- 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) {} } diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/concurrent/tck/ConcurrentLinkedQueueTest.java --- 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) {} } diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/concurrent/tck/LinkedListTest.java --- 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) {} } diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/java/util/concurrent/tck/SynchronousQueueTest.java --- 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) {} } diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/jdk/jfr/event/runtime/TestThreadCpuTimeEvent.java --- 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 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 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 events = Events.fromRecording(recording); - - Events.hasEvents(events); + List 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 beforeEvents = Events.fromRecording(recording); - + List beforeEvents = generateEvents(2, barrier); verifyPerThreadInvariant(beforeEvents, cpuConsumerThreadName); // Run a second single pass diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/sun/security/mscapi/InteropWithSunRsaSign.java --- /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); + } +} diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/sun/security/rsa/pss/InitAgain.java --- /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(); + } + } +} diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/tools/launcher/modules/validate/ValidateModulesTest.java --- 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; } /** diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/tools/launcher/modules/validate/src/hello/module-info.java --- /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 { } diff -r 76025c6c6e29 -r a48cca98dea6 test/jdk/tools/launcher/modules/validate/src/hello/p/Main.java --- /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"); + } +} diff -r 76025c6c6e29 -r a48cca98dea6 test/jtreg-ext/requires/VMProps.java --- 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"; } diff -r 76025c6c6e29 -r a48cca98dea6 test/langtools/tools/javac/launcher/SourceLauncherTest.java --- 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"); diff -r 76025c6c6e29 -r a48cca98dea6 test/langtools/tools/javac/modules/AnnotationProcessing.java --- 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 { }"); diff -r 76025c6c6e29 -r a48cca98dea6 test/langtools/tools/javac/processing/model/completionfailure/NoAbortForBadClassFile.java --- 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 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()));