This commit is contained in:
Rob McKenna 2020-02-25 14:02:00 +00:00
commit 5c3de7ec78
27 changed files with 169 additions and 415 deletions

View File

@ -616,4 +616,5 @@ decd3d2953b640f1043ee76953ff89238bff92e8 jdk-14.0.1+0
604bb7c9455b527ed3fa0ebbccefcae593c1249b jdk-14.0.1+2
0cf2435eb965fe71170a8b23a4552f710918d7d5 jdk-14.0.1+3
c871b7595c5f53e12a726c5ee0b259801c45cbd7 jdk-14.0.1+4
d4323f0e169bf9e2611ef6ef5184daa07c7d2ee3 jdk-14.0.1+5
bdc36db9c715b38bff9baccb4b0d7a0255481386 jdk-14.0.2+0

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2020, 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
@ -672,11 +672,14 @@ void VM_Version::get_processor_features() {
}
}
if (FLAG_IS_DEFAULT(UseAVX)) {
FLAG_SET_DEFAULT(UseAVX, use_avx_limit);
if (is_intel_family_core() && _model == CPU_MODEL_SKYLAKE && _stepping < 5) {
FLAG_SET_DEFAULT(UseAVX, 2); //Set UseAVX=2 for Skylake
// Don't use AVX-512 on older Skylakes unless explicitly requested.
if (use_avx_limit > 2 && is_intel_skylake() && _stepping < 5) {
FLAG_SET_DEFAULT(UseAVX, 2);
} else {
FLAG_SET_DEFAULT(UseAVX, use_avx_limit);
}
} else if (UseAVX > use_avx_limit) {
}
if (UseAVX > use_avx_limit) {
warning("UseAVX=%d is not supported on this CPU, setting it to UseAVX=%d", (int) UseAVX, use_avx_limit);
FLAG_SET_DEFAULT(UseAVX, use_avx_limit);
} else if (UseAVX < 0) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2020, 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
@ -863,6 +863,9 @@ public:
static bool is_intel_family_core() { return is_intel() &&
extended_cpu_family() == CPU_FAMILY_INTEL_CORE; }
static bool is_intel_skylake() { return is_intel_family_core() &&
extended_cpu_model() == CPU_MODEL_SKYLAKE; }
static bool is_intel_tsc_synched_at_init() {
if (is_intel_family_core()) {
uint32_t ext_model = extended_cpu_model();

View File

@ -190,6 +190,50 @@ CompileTask* CompilationPolicy::select_task_helper(CompileQueue* compile_queue)
return compile_queue->first();
}
//
// CounterDecay for SimpleCompPolicy
//
// Iterates through invocation counters and decrements them. This
// is done at each safepoint.
//
class CounterDecay : public AllStatic {
static jlong _last_timestamp;
static void do_method(Method* m) {
MethodCounters* mcs = m->method_counters();
if (mcs != NULL) {
mcs->invocation_counter()->decay();
}
}
public:
static void decay();
static bool is_decay_needed() {
return ((os::javaTimeNanos() - _last_timestamp) / (NANOUNITS / MILLIUNITS)) > CounterDecayMinIntervalLength;
}
static void update_last_timestamp() { _last_timestamp = os::javaTimeNanos(); }
};
jlong CounterDecay::_last_timestamp = 0;
void CounterDecay::decay() {
update_last_timestamp();
// This operation is going to be performed only at the end of a safepoint
// and hence GC's will not be going on, all Java mutators are suspended
// at this point and hence SystemDictionary_lock is also not needed.
assert(SafepointSynchronize::is_at_safepoint(), "can only be executed at a safepoint");
size_t nclasses = ClassLoaderDataGraph::num_instance_classes();
size_t classes_per_tick = nclasses * (CounterDecayMinIntervalLength * 1e-3 /
CounterHalfLifeTime);
for (size_t i = 0; i < classes_per_tick; i++) {
InstanceKlass* k = ClassLoaderDataGraph::try_get_next_class();
if (k != NULL) {
k->methods_do(do_method);
}
}
}
#ifndef PRODUCT
void SimpleCompPolicy::trace_osr_completion(nmethod* osr_nm) {
if (TraceOnStackReplacement) {
@ -223,6 +267,7 @@ void SimpleCompPolicy::initialize() {
} else {
_compiler_count = CICompilerCount;
}
CounterDecay::update_last_timestamp();
}
// Note: this policy is used ONLY if TieredCompilation is off.
@ -272,47 +317,6 @@ void SimpleCompPolicy::reset_counter_for_back_branch_event(const methodHandle& m
b->set(b->state(), CompileThreshold / 2);
}
//
// CounterDecay
//
// Iterates through invocation counters and decrements them. This
// is done at each safepoint.
//
class CounterDecay : public AllStatic {
static jlong _last_timestamp;
static void do_method(Method* m) {
MethodCounters* mcs = m->method_counters();
if (mcs != NULL) {
mcs->invocation_counter()->decay();
}
}
public:
static void decay();
static bool is_decay_needed() {
return (os::javaTimeMillis() - _last_timestamp) > CounterDecayMinIntervalLength;
}
};
jlong CounterDecay::_last_timestamp = 0;
void CounterDecay::decay() {
_last_timestamp = os::javaTimeMillis();
// This operation is going to be performed only at the end of a safepoint
// and hence GC's will not be going on, all Java mutators are suspended
// at this point and hence SystemDictionary_lock is also not needed.
assert(SafepointSynchronize::is_at_safepoint(), "can only be executed at a safepoint");
size_t nclasses = ClassLoaderDataGraph::num_instance_classes();
size_t classes_per_tick = nclasses * (CounterDecayMinIntervalLength * 1e-3 /
CounterHalfLifeTime);
for (size_t i = 0; i < classes_per_tick; i++) {
InstanceKlass* k = ClassLoaderDataGraph::try_get_next_class();
if (k != NULL) {
k->methods_do(do_method);
}
}
}
// Called at the end of the safepoint
void SimpleCompPolicy::do_safepoint_work() {
if(UseCounterDecay && CounterDecay::is_decay_needed()) {

View File

@ -1798,6 +1798,7 @@ Node* ShenandoahBarrierC2Support::get_load_addr(PhaseIdealLoop* phase, VectorSet
case Op_ConN:
case Op_ConP:
case Op_Parm:
case Op_CreateEx:
return phase->igvn().zerocon(T_OBJECT);
default:
#ifdef ASSERT

View File

@ -119,7 +119,9 @@ inline oop ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_loa
if (value != NULL) {
ShenandoahBarrierSet *const bs = ShenandoahBarrierSet::barrier_set();
value = bs->load_reference_barrier_native(value, addr);
bs->keep_alive_if_weak<decorators>(value);
if (value != NULL) {
bs->keep_alive_if_weak<decorators>(value);
}
}
return value;
}

View File

@ -203,18 +203,6 @@ ShenandoahRootUpdater::ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimi
_thread_roots(n_workers > 1) {
}
void ShenandoahRootUpdater::strong_roots_do(uint worker_id, OopClosure* oops_cl) {
CodeBlobToOopClosure update_blobs(oops_cl, CodeBlobToOopClosure::FixRelocations);
CLDToOopClosure clds(oops_cl, ClassLoaderData::_claim_strong);
_serial_roots.oops_do(oops_cl, worker_id);
_vm_roots.oops_do(oops_cl, worker_id);
_thread_roots.oops_do(oops_cl, NULL, worker_id);
_cld_roots.cld_do(&clds, worker_id);
_code_roots.code_blobs_do(&update_blobs, worker_id);
}
ShenandoahRootAdjuster::ShenandoahRootAdjuster(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
ShenandoahRootProcessor(phase),
_thread_roots(n_workers > 1) {

View File

@ -306,8 +306,6 @@ public:
template<typename IsAlive, typename KeepAlive>
void roots_do(uint worker_id, IsAlive* is_alive, KeepAlive* keep_alive);
void strong_roots_do(uint worker_id, OopClosure* oops_cl);
};
// Adjuster all roots at a safepoint during full gc

View File

@ -605,8 +605,8 @@ void ShenandoahTraversalGC::final_traversal_collection() {
_heap->set_concurrent_traversal_in_progress(false);
_heap->mark_complete_marking_context();
fixup_roots();
_heap->parallel_cleaning(false);
fixup_roots();
_heap->set_has_forwarded_objects(false);
@ -707,7 +707,8 @@ public:
void work(uint worker_id) {
ShenandoahParallelWorkerSession worker_session(worker_id);
ShenandoahTraversalFixRootsClosure cl;
_rp->strong_roots_do(worker_id, &cl);
ShenandoahForwardedIsAliveClosure is_alive;
_rp->roots_do(worker_id, &is_alive, &cl);
}
};

View File

@ -1,6 +1,6 @@
/*!
JSZip v3.1.5 - A JavaScript class for generating and reading zip files
JSZip v3.2.1 - A JavaScript class for generating and reading zip files
<http://stuartk.com/jszip>
(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
@ -324,7 +324,7 @@ module.exports = {
Promise: ES6Promise
};
},{"lie":58}],7:[function(require,module,exports){
},{"lie":37}],7:[function(require,module,exports){
'use strict';
var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
@ -411,7 +411,7 @@ exports.uncompressWorker = function () {
return new FlateWorker("Inflate", {});
};
},{"./stream/GenericWorker":28,"./utils":32,"pako":59}],8:[function(require,module,exports){
},{"./stream/GenericWorker":28,"./utils":32,"pako":38}],8:[function(require,module,exports){
'use strict';
var utils = require('../utils');
@ -1057,7 +1057,7 @@ JSZip.defaults = require('./defaults');
// TODO find a better way to handle this version,
// a require('package.json').version doesn't work with webpack, see #327
JSZip.version = "3.1.5";
JSZip.version = "3.2.0";
JSZip.loadAsync = function (content, options) {
return new JSZip().loadAsync(content, options);
@ -1287,13 +1287,16 @@ module.exports = {
* @return {Buffer} a new Buffer.
*/
newBufferFrom: function(data, encoding) {
// XXX We can't use `Buffer.from` which comes from `Uint8Array.from`
// in nodejs v4 (< v.4.5). It's not the expected implementation (and
// has a different signature).
// see https://github.com/nodejs/node/issues/8053
// A condition on nodejs' version won't solve the issue as we don't
// control the Buffer polyfills that may or may not be used.
return new Buffer(data, encoding);
if (Buffer.from && Buffer.from !== Uint8Array.from) {
return Buffer.from(data, encoding);
} else {
if (typeof data === "number") {
// Safeguard for old Node.js versions. On newer versions,
// Buffer.from(number) / Buffer(number, encoding) already throw.
throw new Error("The \"data\" argument must not be a number");
}
return new Buffer(data, encoding);
}
},
/**
* Create a new nodejs Buffer with the specified size.
@ -1304,7 +1307,9 @@ module.exports = {
if (Buffer.alloc) {
return Buffer.alloc(size);
} else {
return new Buffer(size);
var buf = new Buffer(size);
buf.fill(0);
return buf;
}
},
/**
@ -3032,7 +3037,7 @@ exports.Utf8EncodeWorker = Utf8EncodeWorker;
var support = require('./support');
var base64 = require('./base64');
var nodejsUtils = require('./nodejsUtils');
var setImmediate = require('core-js/library/fn/set-immediate');
var setImmediate = require('set-immediate-shim');
var external = require("./external");
@ -3504,7 +3509,7 @@ exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinarySt
});
};
},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"core-js/library/fn/set-immediate":36}],33:[function(require,module,exports){
},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"set-immediate-shim":54}],33:[function(require,module,exports){
'use strict';
var readerFor = require('./reader/readerFor');
var utils = require('./utils');
@ -4198,296 +4203,6 @@ for(var i = 0; i < removedMethods.length; i++) {
module.exports = ZipObject;
},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(require,module,exports){
require('../modules/web.immediate');
module.exports = require('../modules/_core').setImmediate;
},{"../modules/_core":40,"../modules/web.immediate":56}],37:[function(require,module,exports){
module.exports = function(it){
if(typeof it != 'function')throw TypeError(it + ' is not a function!');
return it;
};
},{}],38:[function(require,module,exports){
var isObject = require('./_is-object');
module.exports = function(it){
if(!isObject(it))throw TypeError(it + ' is not an object!');
return it;
};
},{"./_is-object":51}],39:[function(require,module,exports){
var toString = {}.toString;
module.exports = function(it){
return toString.call(it).slice(8, -1);
};
},{}],40:[function(require,module,exports){
var core = module.exports = {version: '2.3.0'};
if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
},{}],41:[function(require,module,exports){
// optional / simple context binding
var aFunction = require('./_a-function');
module.exports = function(fn, that, length){
aFunction(fn);
if(that === undefined)return fn;
switch(length){
case 1: return function(a){
return fn.call(that, a);
};
case 2: return function(a, b){
return fn.call(that, a, b);
};
case 3: return function(a, b, c){
return fn.call(that, a, b, c);
};
}
return function(/* ...args */){
return fn.apply(that, arguments);
};
};
},{"./_a-function":37}],42:[function(require,module,exports){
// Thank's IE8 for his funny defineProperty
module.exports = !require('./_fails')(function(){
return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
});
},{"./_fails":45}],43:[function(require,module,exports){
var isObject = require('./_is-object')
, document = require('./_global').document
// in old IE typeof document.createElement is 'object'
, is = isObject(document) && isObject(document.createElement);
module.exports = function(it){
return is ? document.createElement(it) : {};
};
},{"./_global":46,"./_is-object":51}],44:[function(require,module,exports){
var global = require('./_global')
, core = require('./_core')
, ctx = require('./_ctx')
, hide = require('./_hide')
, PROTOTYPE = 'prototype';
var $export = function(type, name, source){
var IS_FORCED = type & $export.F
, IS_GLOBAL = type & $export.G
, IS_STATIC = type & $export.S
, IS_PROTO = type & $export.P
, IS_BIND = type & $export.B
, IS_WRAP = type & $export.W
, exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
, expProto = exports[PROTOTYPE]
, target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
, key, own, out;
if(IS_GLOBAL)source = name;
for(key in source){
// contains in native
own = !IS_FORCED && target && target[key] !== undefined;
if(own && key in exports)continue;
// export native or passed
out = own ? target[key] : source[key];
// prevent global pollution for namespaces
exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
// bind timers to global for call from export context
: IS_BIND && own ? ctx(out, global)
// wrap global constructors for prevent change them in library
: IS_WRAP && target[key] == out ? (function(C){
var F = function(a, b, c){
if(this instanceof C){
switch(arguments.length){
case 0: return new C;
case 1: return new C(a);
case 2: return new C(a, b);
} return new C(a, b, c);
} return C.apply(this, arguments);
};
F[PROTOTYPE] = C[PROTOTYPE];
return F;
// make static versions for prototype methods
})(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
// export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
if(IS_PROTO){
(exports.virtual || (exports.virtual = {}))[key] = out;
// export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
}
}
};
// type bitmap
$export.F = 1; // forced
$export.G = 2; // global
$export.S = 4; // static
$export.P = 8; // proto
$export.B = 16; // bind
$export.W = 32; // wrap
$export.U = 64; // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;
},{"./_core":40,"./_ctx":41,"./_global":46,"./_hide":47}],45:[function(require,module,exports){
module.exports = function(exec){
try {
return !!exec();
} catch(e){
return true;
}
};
},{}],46:[function(require,module,exports){
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
},{}],47:[function(require,module,exports){
var dP = require('./_object-dp')
, createDesc = require('./_property-desc');
module.exports = require('./_descriptors') ? function(object, key, value){
return dP.f(object, key, createDesc(1, value));
} : function(object, key, value){
object[key] = value;
return object;
};
},{"./_descriptors":42,"./_object-dp":52,"./_property-desc":53}],48:[function(require,module,exports){
module.exports = require('./_global').document && document.documentElement;
},{"./_global":46}],49:[function(require,module,exports){
module.exports = !require('./_descriptors') && !require('./_fails')(function(){
return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;
});
},{"./_descriptors":42,"./_dom-create":43,"./_fails":45}],50:[function(require,module,exports){
// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function(fn, args, that){
var un = that === undefined;
switch(args.length){
case 0: return un ? fn()
: fn.call(that);
case 1: return un ? fn(args[0])
: fn.call(that, args[0]);
case 2: return un ? fn(args[0], args[1])
: fn.call(that, args[0], args[1]);
case 3: return un ? fn(args[0], args[1], args[2])
: fn.call(that, args[0], args[1], args[2]);
case 4: return un ? fn(args[0], args[1], args[2], args[3])
: fn.call(that, args[0], args[1], args[2], args[3]);
} return fn.apply(that, args);
};
},{}],51:[function(require,module,exports){
module.exports = function(it){
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
},{}],52:[function(require,module,exports){
var anObject = require('./_an-object')
, IE8_DOM_DEFINE = require('./_ie8-dom-define')
, toPrimitive = require('./_to-primitive')
, dP = Object.defineProperty;
exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if(IE8_DOM_DEFINE)try {
return dP(O, P, Attributes);
} catch(e){ /* empty */ }
if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
if('value' in Attributes)O[P] = Attributes.value;
return O;
};
},{"./_an-object":38,"./_descriptors":42,"./_ie8-dom-define":49,"./_to-primitive":55}],53:[function(require,module,exports){
module.exports = function(bitmap, value){
return {
enumerable : !(bitmap & 1),
configurable: !(bitmap & 2),
writable : !(bitmap & 4),
value : value
};
};
},{}],54:[function(require,module,exports){
var ctx = require('./_ctx')
, invoke = require('./_invoke')
, html = require('./_html')
, cel = require('./_dom-create')
, global = require('./_global')
, process = global.process
, setTask = global.setImmediate
, clearTask = global.clearImmediate
, MessageChannel = global.MessageChannel
, counter = 0
, queue = {}
, ONREADYSTATECHANGE = 'onreadystatechange'
, defer, channel, port;
var run = function(){
var id = +this;
if(queue.hasOwnProperty(id)){
var fn = queue[id];
delete queue[id];
fn();
}
};
var listener = function(event){
run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if(!setTask || !clearTask){
setTask = function setImmediate(fn){
var args = [], i = 1;
while(arguments.length > i)args.push(arguments[i++]);
queue[++counter] = function(){
invoke(typeof fn == 'function' ? fn : Function(fn), args);
};
defer(counter);
return counter;
};
clearTask = function clearImmediate(id){
delete queue[id];
};
// Node.js 0.8-
if(require('./_cof')(process) == 'process'){
defer = function(id){
process.nextTick(ctx(run, id, 1));
};
// Browsers with MessageChannel, includes WebWorkers
} else if(MessageChannel){
channel = new MessageChannel;
port = channel.port2;
channel.port1.onmessage = listener;
defer = ctx(port.postMessage, port, 1);
// Browsers with postMessage, skip WebWorkers
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
} else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
defer = function(id){
global.postMessage(id + '', '*');
};
global.addEventListener('message', listener, false);
// IE8-
} else if(ONREADYSTATECHANGE in cel('script')){
defer = function(id){
html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
html.removeChild(this);
run.call(id);
};
};
// Rest old browsers
} else {
defer = function(id){
setTimeout(ctx(run, id, 1), 0);
};
}
}
module.exports = {
set: setTask,
clear: clearTask
};
},{"./_cof":39,"./_ctx":41,"./_dom-create":43,"./_global":46,"./_html":48,"./_invoke":50}],55:[function(require,module,exports){
// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = require('./_is-object');
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function(it, S){
if(!isObject(it))return it;
var fn, val;
if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
throw TypeError("Can't convert object to primitive value");
};
},{"./_is-object":51}],56:[function(require,module,exports){
var $export = require('./_export')
, $task = require('./_task');
$export($export.G + $export.B, {
setImmediate: $task.set,
clearImmediate: $task.clear
});
},{"./_export":44,"./_task":54}],57:[function(require,module,exports){
(function (global){
'use strict';
var Mutation = global.MutationObserver || global.WebKitMutationObserver;
@ -4560,7 +4275,7 @@ function immediate(task) {
}
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],58:[function(require,module,exports){
},{}],37:[function(require,module,exports){
'use strict';
var immediate = require('immediate');
@ -4587,6 +4302,26 @@ function Promise(resolver) {
}
}
Promise.prototype["finally"] = function (callback) {
if (typeof callback !== 'function') {
return this;
}
var p = this.constructor;
return this.then(resolve, reject);
function resolve(value) {
function yes () {
return value;
}
return p.resolve(callback()).then(yes);
}
function reject(reason) {
function no () {
throw reason;
}
return p.resolve(callback()).then(no);
}
};
Promise.prototype["catch"] = function (onRejected) {
return this.then(null, onRejected);
};
@ -4815,7 +4550,7 @@ function race(iterable) {
}
}
},{"immediate":57}],59:[function(require,module,exports){
},{"immediate":36}],38:[function(require,module,exports){
// Top level file is just a mixin of submodules & constants
'use strict';
@ -4831,7 +4566,7 @@ assign(pako, deflate, inflate, constants);
module.exports = pako;
},{"./lib/deflate":60,"./lib/inflate":61,"./lib/utils/common":62,"./lib/zlib/constants":65}],60:[function(require,module,exports){
},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(require,module,exports){
'use strict';
@ -5233,7 +4968,7 @@ exports.deflate = deflate;
exports.deflateRaw = deflateRaw;
exports.gzip = gzip;
},{"./utils/common":62,"./utils/strings":63,"./zlib/deflate":67,"./zlib/messages":72,"./zlib/zstream":74}],61:[function(require,module,exports){
},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(require,module,exports){
'use strict';
@ -5653,7 +5388,7 @@ exports.inflate = inflate;
exports.inflateRaw = inflateRaw;
exports.ungzip = inflate;
},{"./utils/common":62,"./utils/strings":63,"./zlib/constants":65,"./zlib/gzheader":68,"./zlib/inflate":70,"./zlib/messages":72,"./zlib/zstream":74}],62:[function(require,module,exports){
},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(require,module,exports){
'use strict';
@ -5757,7 +5492,7 @@ exports.setTyped = function (on) {
exports.setTyped(TYPED_OK);
},{}],63:[function(require,module,exports){
},{}],42:[function(require,module,exports){
// String encode/decode helpers
'use strict';
@ -5944,7 +5679,7 @@ exports.utf8border = function (buf, max) {
return (pos + _utf8len[buf[pos]] > max) ? pos : max;
};
},{"./common":62}],64:[function(require,module,exports){
},{"./common":41}],43:[function(require,module,exports){
'use strict';
// Note: adler32 takes 12% for level 0 and 2% for level 6.
@ -5997,7 +5732,7 @@ function adler32(adler, buf, len, pos) {
module.exports = adler32;
},{}],65:[function(require,module,exports){
},{}],44:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -6067,7 +5802,7 @@ module.exports = {
//Z_NULL: null // Use -1 or null inline, depending on var type
};
},{}],66:[function(require,module,exports){
},{}],45:[function(require,module,exports){
'use strict';
// Note: we can't get significant speed boost here.
@ -6128,7 +5863,7 @@ function crc32(crc, buf, len, pos) {
module.exports = crc32;
},{}],67:[function(require,module,exports){
},{}],46:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -8004,7 +7739,7 @@ exports.deflatePrime = deflatePrime;
exports.deflateTune = deflateTune;
*/
},{"../utils/common":62,"./adler32":64,"./crc32":66,"./messages":72,"./trees":73}],68:[function(require,module,exports){
},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -8064,7 +7799,7 @@ function GZheader() {
module.exports = GZheader;
},{}],69:[function(require,module,exports){
},{}],48:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -8411,7 +8146,7 @@ module.exports = function inflate_fast(strm, start) {
return;
};
},{}],70:[function(require,module,exports){
},{}],49:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -9969,7 +9704,7 @@ exports.inflateSyncPoint = inflateSyncPoint;
exports.inflateUndermine = inflateUndermine;
*/
},{"../utils/common":62,"./adler32":64,"./crc32":66,"./inffast":69,"./inftrees":71}],71:[function(require,module,exports){
},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -10314,7 +10049,7 @@ module.exports = function inflate_table(type, lens, lens_index, codes, table, ta
return 0;
};
},{"../utils/common":62}],72:[function(require,module,exports){
},{"../utils/common":41}],51:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -10348,7 +10083,7 @@ module.exports = {
'-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */
};
},{}],73:[function(require,module,exports){
},{}],52:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -11570,7 +11305,7 @@ exports._tr_flush_block = _tr_flush_block;
exports._tr_tally = _tr_tally;
exports._tr_align = _tr_align;
},{"../utils/common":62}],74:[function(require,module,exports){
},{"../utils/common":41}],53:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
@ -11619,5 +11354,14 @@ function ZStream() {
module.exports = ZStream;
},{}],54:[function(require,module,exports){
'use strict';
module.exports = typeof setImmediate === 'function' ? setImmediate :
function setImmediate() {
var args = [].slice.apply(arguments);
args.splice(1, 0, 0);
setTimeout.apply(null, args);
};
},{}]},{},[10])(10)
});

View File

@ -6,7 +6,9 @@
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.
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

View File

@ -1,4 +1,4 @@
## JSZip v3.1.5
## JSZip v3.2.1
### MIT License
<pre>
@ -26,7 +26,7 @@ OTHER DEALINGS IN THE SOFTWARE.
******************************************
The JSZip JavaScript Library v3.1.5 also includes pako
The JSZip JavaScript Library v3.2.1 also includes pako
pako includes the following license:

View File

@ -4,7 +4,9 @@
*
* 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.
* 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

View File

@ -4,7 +4,9 @@
*
* 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.
* 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

View File

@ -69,7 +69,8 @@ s loaded by null classloader.
This behavior can be adjusted with "-compilationLevel" and "-compilationNumber" options. First
one has self-explaining name, latter sets number of optimization/deoptimozation of each class.
- Next aspect is class redefinition.
You can enable classes redefinition with "-redefineClasses" flag.
You can enable classes redefinition with "-redefineClasses" flag. Valid options are "true" and
"false".
Test implementation details:
Test supposed to be ran with G1 gc and -XX:+ExplicitGCProvokesConcurrent option. In the end of exec

View File

@ -48,6 +48,8 @@ JNIEXPORT jclass JNICALL Java_gc_g1_unloading_classloaders_JNIClassloader_loadTh
jbyte * arrayContent = env->GetByteArrayElements(bytecode, NULL);
jsize bytecodeLength = env->GetArrayLength(bytecode);
jclass returnValue = env->DefineClass(classNameChar, classLoader, arrayContent, bytecodeLength);
env->ReleaseByteArrayElements(bytecode, arrayContent, JNI_ABORT);
env->ReleaseStringUTFChars(className, classNameChar);
if (!returnValue) {
printf("ERROR: DefineClass call returned NULL by some reason. Classloading failed.\n");
}
@ -56,12 +58,12 @@ JNIEXPORT jclass JNICALL Java_gc_g1_unloading_classloaders_JNIClassloader_loadTh
}
/*
* Class: gc_g1_unloading_unloading_loading_ClassLoadingThread
* Class: gc_g1_unloading_unloading_loading_ClassLoadingHelper
* Method: makeRedefinition0
* Signature: (ILjava/lang/Class;[B)I
*/
JNIEXPORT jint JNICALL Java_gc_g1_unloading_loading_ClassLoadingThread_makeRedefinition0(JNIEnv *env,
jclass cls, jint fl, jclass redefCls, jbyteArray classBytes) {
JNIEXPORT jint JNICALL Java_gc_g1_unloading_loading_ClassLoadingHelper_makeRedefinition0(JNIEnv *env,
jclass clazz, jint fl, jclass redefCls, jbyteArray classBytes) {
JavaVM * jvm;
jvmtiEnv * jvmti;
jvmtiError err;
@ -99,15 +101,15 @@ JNIEXPORT jint JNICALL Java_gc_g1_unloading_loading_ClassLoadingThread_makeRede
classDef.klass = redefCls;
classDef.class_byte_count =
env->GetArrayLength(classBytes);
classDef.class_bytes = (unsigned char *)
env->GetByteArrayElements(classBytes,
NULL);
jbyte * class_bytes = env->GetByteArrayElements(classBytes, NULL);
classDef.class_bytes = (unsigned char *)class_bytes;
if (fl == 2) {
printf(">>>>>>>> Invoke RedefineClasses():\n");
printf("\tnew class byte count=%d\n", classDef.class_byte_count);
}
err = jvmti->RedefineClasses(1, &classDef);
env->ReleaseByteArrayElements(classBytes, class_bytes, JNI_ABORT);
if (err != JVMTI_ERROR_NONE) {
printf("%s: Failed to call RedefineClasses():\n", __FILE__);
printf("\tthe function returned error %d\n", err);

View File

@ -53,8 +53,8 @@
* -Xlog:gc:gc.log
* -XX:-UseGCOverheadLimit
* gc.g1.unloading.UnloadingTest
* -redefineClasses
* -inMemoryCompilation
* -redefineClasses true
* -inMemoryCompilation true
* -keep classloader
* -numberOfChecksLimit 4
* -stressTime 180

View File

@ -53,8 +53,8 @@
* -Xlog:gc:gc.log
* -XX:-UseGCOverheadLimit
* gc.g1.unloading.UnloadingTest
* -redefineClasses
* -inMemoryCompilation
* -redefineClasses true
* -inMemoryCompilation true
* -keep class
* -numberOfChecksLimit 4
* -stressTime 180

View File

@ -53,8 +53,8 @@
* -Xlog:gc:gc.log
* -XX:-UseGCOverheadLimit
* gc.g1.unloading.UnloadingTest
* -redefineClasses
* -inMemoryCompilation
* -redefineClasses true
* -inMemoryCompilation true
* -keep object
* -numberOfChecksLimit 4
* -stressTime 180

View File

@ -53,7 +53,7 @@
* -Xlog:gc:gc.log
* -XX:-UseGCOverheadLimit
* gc.g1.unloading.UnloadingTest
* -redefineClasses
* -redefineClasses true
* -keep classloader
* -numberOfChecksLimit 4
* -stressTime 180

View File

@ -53,7 +53,7 @@
* -Xlog:gc:gc.log
* -XX:-UseGCOverheadLimit
* gc.g1.unloading.UnloadingTest
* -redefineClasses
* -redefineClasses true
* -keep class
* -numberOfChecksLimit 4
* -stressTime 180

View File

@ -53,7 +53,7 @@
* -Xlog:gc:gc.log
* -XX:-UseGCOverheadLimit
* gc.g1.unloading.UnloadingTest
* -redefineClasses
* -redefineClasses true
* -keep object
* -numberOfChecksLimit 4
* -stressTime 180

View File

@ -25,7 +25,7 @@
* @test
* @bug 8022780
* @summary Test division of large values
* @requires os.maxMemory > 8g
* @requires (sun.arch.data.model == "64" & os.maxMemory > 8g)
* @run main/othervm -Xshare:off -Xmx8g DivisionOverflow
* @author Dmitry Nadezhin
*/

View File

@ -25,7 +25,7 @@
* @test
* @bug 8021204
* @summary Test constructor BigInteger(String val, int radix) on very long string
* @requires os.maxMemory > 8g
* @requires (sun.arch.data.model == "64" & os.maxMemory > 8g)
* @run main/othervm -Xshare:off -Xmx8g StringConstructorOverflow
* @author Dmitry Nadezhin
*/

View File

@ -26,7 +26,7 @@
* @bug 6910473 8021204 8021203 9005933 8074460 8078672
* @summary Test range of BigInteger values (use -Dseed=X to set PRNG seed)
* @library /test/lib
* @requires os.maxMemory > 8g
* @requires (sun.arch.data.model == "64" & os.maxMemory > 8g)
* @run main/timeout=180/othervm -Xmx8g SymmetricRangeTests
* @author Dmitry Nadezhin
* @key randomness

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2017, 2020, 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
@ -259,6 +259,8 @@ public class VerifyCACerts {
{
// Valid until: Tue Jul 09 14:40:36 EDT 2019
add("utnuserfirstobjectca [jdk]");
// Valid until: Tue May 26 00:00:00 GMT 2020
add("keynectisrootca [jdk]");
}
};