mchung [Wed, 11 Mar 2015 08:33:12 -0700] rev 29393
8074993: policytool launcher missing
Reviewed-by: weijun
sla [Wed, 11 Mar 2015 08:09:35 +0100] rev 29392
8074841: Resolve disabled warnings for the JVMTI demo compiledMethodLoad
8074842: Resolve disabled warnings for the JVMTI demo waiters
Reviewed-by: alanb, ihse, dsamersoff
okutsu [Wed, 11 Mar 2015 14:33:14 +0900] rev 29391
8074791: Long-form date format incorrect month string for Finnish locale
Reviewed-by: naoto
xuelei [Wed, 11 Mar 2015 04:52:39 +0000] rev 29390
8072385: Only the first DNSName entry is checked for endpoint identification
Reviewed-by: weijun, jnimeh
martin [Tue, 10 Mar 2015 14:23:03 -0700] rev 29389
8074579: Use more efficient and readable way of checking PKZIP signatures
Reviewed-by: sherman
martin [Wed, 04 Mar 2015 17:35:40 -0800] rev 29388
8074577: Modernize Unsafe internal javadoc
Summary: Use modern javadoc style
Reviewed-by: jrose
amurillo [Tue, 10 Mar 2015 14:20:06 -0700] rev 29387
Merge
amurillo [Tue, 10 Mar 2015 14:09:19 -0700] rev 29386
Merge
amurillo [Fri, 06 Mar 2015 04:58:53 -0800] rev 29385
Merge
ctornqvi [Mon, 02 Mar 2015 05:32:14 -0800] rev 29384
Merge
sspitsyn [Wed, 25 Feb 2015 01:02:04 -0800] rev 29383
8046246: the constantPoolCacheOopDesc::adjust_method_entries() used in RedefineClasses does not scale
Summary: add new test java/lang/instrument/ManyMethodsBenchmarkAgent.java
Reviewed-by: coleenp, dcubed
Contributed-by: serguei.spitsyn@oracle.com
darcy [Tue, 10 Mar 2015 13:55:47 -0700] rev 29382
8074870: Really add javax/xml/jaxp/testng/validation to othervm.dirs in TEST.ROOT
Reviewed-by: rriggs
rriggs [Tue, 10 Mar 2015 16:44:45 -0400] rev 29381
8058464: (process spec) ProcessBuilder.redirectXXX throws unspecified NPE
Summary: Add a class level spec for null arguments throwing NPE in ProcessBuilder
Reviewed-by: martin, alanb
amlu [Tue, 10 Mar 2015 13:30:21 +0100] rev 29380
8074674: Doclint regression in java/util/regex/Matcher.java
Reviewed-by: psandoz
darcy [Mon, 09 Mar 2015 18:16:52 -0700] rev 29379
8074788: Javadoc typo in PKCS8EncodedKeySpec
Reviewed-by: xuelei
darcy [Mon, 09 Mar 2015 17:37:34 -0700] rev 29378
8074714: Add javax/xml/jaxp/testng/validation to othervm.dirs in TEST.ROOT
Reviewed-by: lancea
juh [Mon, 09 Mar 2015 17:21:07 -0700] rev 29377
8073430: Deprecate security APIs that have been superseded
Reviewed-by: mullan, weijun
msheppar [Mon, 09 Mar 2015 18:48:40 +0000] rev 29376
8065078: NetworkInterface.getNetworkInterfaces() triggers intermittent test failures
Reviewed-by: chegar
ihse [Mon, 09 Mar 2015 16:18:33 +0100] rev 29375
8074690: Fix for JDK-8074429 was not complete
Reviewed-by: alanb, erikj
ihse [Mon, 09 Mar 2015 10:39:50 +0100] rev 29374
8074096: Disable (most) native warnings in JDK on a per-library basis
Reviewed-by: erikj, tbell
ksrini [Sat, 07 Mar 2015 15:21:36 -0800] rev 29373
8074373: NMT is not enabled if NMT option is specified after class path specifiers
Reviewed-by: dholmes
sherman [Sat, 07 Mar 2015 10:11:03 -0800] rev 29372
8074406: DateTimeFormatter.appendZoneOrOffsetId() fails to resolve a ZoneOffset for OffsetDateTime
Summary: to support resolve OffsetDateTime from DTF.appendZoneOrOffset()
Reviewed-by: rriggs
bpb [Fri, 06 Mar 2015 16:00:58 -0800] rev 29371
8074460: Always print seeds used in [Splittable]Random instances in java.math tests
Summary: Create a utility class which creates a pseudorandom number generator (PRNG) and retains the seed. Use this class in java.math tests which use a PRNG. Always print the seed value before the PRNG is used.
Reviewed-by: darcy
mchung [Fri, 06 Mar 2015 09:11:42 -0800] rev 29370
8074430: Move policytool to jdk.policytool module
Reviewed-by: alanb, weijun, erikj, ihse
mchung [Fri, 06 Mar 2015 09:07:32 -0800] rev 29369
8074429: Move jar, jarsigner tool to jdk.jartool module
Reviewed-by: alanb, weijun, erikj, ihse
mchung [Fri, 06 Mar 2015 09:02:26 -0800] rev 29368
8074428: Move pack200, unpack200, libpack200 to jdk.pack200
Reviewed-by: alanb, weijun, erikj, ihse
igerasim [Fri, 06 Mar 2015 13:30:49 +0300] rev 29367
8073692: (cs) Inconsistent docs for CharsetDecoder.replaceWith and CharsetEncoder.replaceWith
Reviewed-by: martin
valeriep [Fri, 06 Mar 2015 00:49:38 +0000] rev 29366
8044193: Need to add known answer tests for AES cipher
Summary: Added more tests for AES cipher using known test vectors.
Reviewed-by: valeriep
Contributed-by: Zaiyao Liu <zaiyao.liu@oracle.com>
katleman [Thu, 12 Mar 2015 13:35:13 -0700] rev 29365
Added tag jdk9-b54 for changeset 690957fb0862
duke [Wed, 05 Jul 2017 20:23:52 +0200] rev 29364
Merge
lana [Thu, 12 Mar 2015 21:14:33 -0700] rev 29363
Merge
amurillo [Fri, 06 Mar 2015 04:58:52 -0800] rev 29362
Merge
zmajo [Fri, 06 Mar 2015 08:53:22 +0100] rev 29361
Merge
roland [Tue, 03 Mar 2015 12:30:07 +0100] rev 29360
8073957: assert(ary_src != 0) failed: not an array or instance?
Summary: ArrayCopyNode going dead needs better validation of inputs
Reviewed-by: kvn, vlivanov
vlivanov [Mon, 02 Mar 2015 18:12:06 +0000] rev 29359
Merge
vlivanov [Mon, 02 Mar 2015 07:20:09 -0800] rev 29358
Merge
thartmann [Mon, 02 Mar 2015 15:20:38 +0000] rev 29357
Merge
thartmann [Mon, 02 Mar 2015 15:11:55 +0000] rev 29356
Merge
thartmann [Mon, 02 Mar 2015 13:40:40 +0100] rev 29355
8006960: hotspot, "impossible" assertion failure
Summary: Escape state of allocated object should be always adjusted after it was passed to a method.
Reviewed-by: kvn
thartmann [Mon, 02 Mar 2015 13:28:06 +0000] rev 29354
Merge
thartmann [Mon, 02 Mar 2015 13:16:07 +0100] rev 29353
8073956: Escape analysis dump misses args information
Summary: Fixed output of PrintEscapeAnalysis.
Reviewed-by: kvn
iignatyev [Mon, 02 Mar 2015 11:15:09 +0000] rev 29352
Merge
fzhinkin [Fri, 27 Feb 2015 11:41:42 +0300] rev 29351
8073154: NULL-pointer dereferencing in LIR_OpProfileType::print_instr
Reviewed-by: iveresov
skovalev [Tue, 24 Feb 2015 15:42:26 +0300] rev 29350
8067822: test/testlibrary_tests/RandomGeneratorTest.java failed on Assert Unexpected random number sequence for mode: NO_SEED
Summary: On embedded platforms we have a message in std error. We should not take into account the message. Therefore only std out should be used fo verification.
Reviewed-by: iignatyev, kvn
skovalev [Tue, 24 Feb 2015 16:08:25 +0300] rev 29349
8067162: [TESTBUG] runtime/SharedArchiveFile tests fail on compact profiles
Summary: Modified TEST.groups file to exclude two tests from execution on compact profiles.
Reviewed-by: mseledtsov, dholmes, iignatyev
roland [Wed, 25 Feb 2015 12:33:43 +0100] rev 29348
8073796: assert(check_obj_alignment(result)) failed: address not aligned: ...
Summary: Arrays.copyOf intrinsic can deoptimize with uninitialized new array
Reviewed-by: kvn
zmajo [Sat, 28 Feb 2015 12:33:50 +0000] rev 29347
Merge
zmajo [Fri, 27 Feb 2015 13:21:05 +0100] rev 29346
8073670: TypeF::eq and TypeD::eq do not handle NaNs correctly
Summary: Change TypeF:eq and TypeD:eq to compare NaN values using a bitwise comparison.
Reviewed-by: kvn
Contributed-by: Stefan Anzinger <stefan.anzinger@oracle.com>
roland [Wed, 25 Feb 2015 10:44:38 +0100] rev 29345
8073792: assert((get_length_if_constant(phase) == -1) == !ary_src->size()->is_con()) failed: inconsistent
Summary: assert in array copy code broken when array size becomes known during igvn
Reviewed-by: kvn, vlivanov
roland [Tue, 24 Feb 2015 15:23:05 +0100] rev 29344
8073184: Compile of java.lang.Integer::getChars fails with LoopLimitCheck = false after 8054478
Summary: CastII that guards counted loops confuses range check elimination with LoopLimitCheck off
Reviewed-by: kvn, iveresov
iveresov [Tue, 24 Feb 2015 23:31:00 -0800] rev 29343
8073735: compiler/loopopts/CountedLoopProblem.java got OOME
Summary: Ignore OOM in the test
Reviewed-by: kvn
vlivanov [Tue, 24 Feb 2015 17:14:29 +0000] rev 29342
Merge
vlivanov [Tue, 24 Feb 2015 07:39:22 -0800] rev 29341
Merge
simonis [Mon, 23 Feb 2015 10:32:17 +0100] rev 29340
8073624: Fix waring "converting to non-pointer type 'bool' from NULL" in arraycopynode.cpp
Reviewed-by: roland
thartmann [Mon, 23 Feb 2015 10:38:26 +0100] rev 29339
8073257: compiler/codecache/stress/RandomAllocationTest.java + fastdebug + -XX:+LogCompilation, "allocating without ResourceMark"
Summary: Added two missing ResourceMarks to 'NMethodSweeper::log_sweep'.
Reviewed-by: kvn, iignatyev
thartmann [Mon, 23 Feb 2015 07:55:37 +0100] rev 29338
8072774: bigapps/Weblogic+medrec/nowarnings fails due to CodeHeap 'profiled nmethods' exhaustion
Summary: Store profiled code in the non-profiled code heap (and vice versa) if the code cache is really full.
Reviewed-by: kvn, iveresov
roland [Wed, 18 Feb 2015 18:14:07 +0100] rev 29337
6912521: System.arraycopy works slower than the simple loop for little lengths
Summary: convert small array copies to series of loads and stores
Reviewed-by: kvn, vlivanov
dpochepk [Thu, 19 Feb 2015 23:47:01 +0300] rev 29336
8068461: compiler/codecache/jmx/UsageThresholdIncreasedTest.java failed: java.lang.RuntimeException: Usage threshold was hit: 1 times for CodeHeap 'non-nmethods'
Summary: added filter for invalid testcase
Reviewed-by: kvn, iignatyev
ppunegov [Wed, 18 Feb 2015 16:59:56 +0300] rev 29335
8067012: Don't create MDO for constant getters
Summary: Add check if the method is constant getter
Reviewed-by: kvn, iveresov
ppunegov [Wed, 18 Feb 2015 16:19:48 +0300] rev 29334
8067157: Closed compiler tests should not be in hotspot/test/TEST.groups
Summary: Replace closed/compiler tests with sanity/ExecuteInternalVMTests.java to keep the hotspot_compiler_closed group
Reviewed-by: kvn, zmajo
iignatyev [Thu, 19 Feb 2015 23:49:22 +0300] rev 29333
8073499: quarantine compiler/tiered/LevelTransitionTest
Reviewed-by: kvn
jwilhelm [Thu, 05 Mar 2015 17:27:16 +0100] rev 29332
Merge
jwilhelm [Wed, 04 Mar 2015 02:23:38 +0100] rev 29331
8074319: barrier_set_cast defined via friend injection
Summary: Changed the in-class definition to a friend declaration and move the definition to namespace scope
Reviewed-by: jwilhelm, simonis
Contributed-by: kim.barrett@oracle.com
jwilhelm [Tue, 03 Mar 2015 19:21:45 +0100] rev 29330
Merge
jwilhelm [Mon, 02 Mar 2015 16:19:59 +0100] rev 29329
8071335: gc/TestSmallHeap.java throw OOM
Summary: To avoid OOME, do not run with -Xcomp
Reviewed-by: brutisso, tschatzl
tschatzl [Tue, 03 Mar 2015 13:25:23 +0000] rev 29328
Merge
tschatzl [Tue, 03 Mar 2015 12:38:42 +0100] rev 29327
8073466: Remove buffer retaining functionality and clean up in ParGCAllocBuffer
Reviewed-by: jmasa, kbarrett
david [Tue, 03 Mar 2015 12:19:35 +0100] rev 29326
8073464: GC workers do not have thread names
Reviewed-by: brutisso, tschatzl
kbarrett [Fri, 27 Feb 2015 19:52:48 -0500] rev 29325
8069016: Add BarrierSet downcast support
Summary: Add FakeRttiSupport utility and use to provide barrier_set_cast.
Reviewed-by: jmasa, sangheki
jwilhelm [Thu, 26 Feb 2015 21:00:03 +0100] rev 29324
8073883: serviceability/dcmd/gc/RunGCTest.java should not run with -XX:+ExplicitGCInvokesConcurrent
Summary: Don't run test with -XX:+ExplicitGCInvokesConcurrent
Reviewed-by: mgerdin
jwilhelm [Thu, 26 Feb 2015 17:02:48 +0100] rev 29323
8073950: Quarantine failing test: gc/TestSoftReferencesBehaviorOnOOME.java due to JDK-8073669
Summary: Quarantine gc/TestSoftReferencesBehaviorOnOOME.java
Reviewed-by: mgerdin, tschatzl
Contributed-by: andrey.x.zakharov@oracle.com
mgronlun [Tue, 03 Mar 2015 20:17:07 +0100] rev 29322
8073042: jcmd hangs until another jcmd is executed (which, in turn also hangs)
Reviewed-by: jbachorik, dsamersoff, farvidsson
dcubed [Mon, 02 Mar 2015 16:31:25 -0800] rev 29321
8072439: fix for 8047720 may need more work
Summary: Cleanup PeriodTask_lock usage. Also reviewed by varming@gmail.com.
Reviewed-by: dholmes, dcubed, mgronlun, coleenp
Contributed-by: varming@gmail.com, daniel.daugherty@oracle.com
ctornqvi [Mon, 02 Mar 2015 05:32:01 -0800] rev 29320
Merge
hseigel [Fri, 27 Feb 2015 12:48:06 -0500] rev 29319
8073908: Replace hotspot/testlibrary use of sun.management with public API
Summary: use java.lang API's instead of sun.management API's.
Reviewed-by: sla, iignatyev, gtriantafill, mchung
ctornqvi [Thu, 26 Feb 2015 06:11:56 -0800] rev 29318
8069291: [TESTBUG] runtime/threads/Fibonacci: OutOfMemoryError: unable to create native thread
Reviewed-by: dholmes, ctornqvi
Contributed-by: dmitry.dmitriev@oracle.com
ctornqvi [Thu, 26 Feb 2015 06:11:40 -0800] rev 29317
8073718: [TESTBUG] Cleanup test output and skip creating mini dumps
Reviewed-by: sla, ctornqvi
Contributed-by: stefan.sarne@oracle.com
sspitsyn [Wed, 25 Feb 2015 00:30:54 -0800] rev 29316
8046246: the constantPoolCacheOopDesc::adjust_method_entries() used in RedefineClasses does not scale
Summary: optimize the adjust_method_entries functions by using the orig_method_idnum() function
Reviewed-by: coleenp, dcubed
Contributed-by: serguei.spitsyn@oracle.com
katleman [Thu, 12 Mar 2015 13:35:04 -0700] rev 29315
Added tag jdk9-b54 for changeset 2bf25ac4195f
lana [Thu, 12 Mar 2015 21:12:51 -0700] rev 29314
Merge
darcy [Thu, 12 Mar 2015 12:30:36 -0700] rev 29313
8072734: Turn on doclint checking in the build of modules in the jdk repo
Reviewed-by: erikj
erikj [Thu, 12 Mar 2015 12:13:23 +0100] rev 29312
8074988: Reduce boilerplate in Setup* macro definitions
Reviewed-by: tbell, ihse
prr [Wed, 11 Mar 2015 08:25:55 -0700] rev 29311
8074910: hgforest.sh needs an option to bring over a smaller set of extra repos
Reviewed-by: erikj, chegar
amurillo [Tue, 10 Mar 2015 14:09:19 -0700] rev 29310
Merge
amurillo [Fri, 06 Mar 2015 04:58:52 -0800] rev 29309
Merge
vlivanov [Mon, 02 Mar 2015 07:20:09 -0800] rev 29308
Merge
vlivanov [Tue, 24 Feb 2015 07:38:43 -0800] rev 29307
Merge
thartmann [Mon, 23 Feb 2015 08:48:19 +0100] rev 29306
8072774: bigapps/Weblogic+medrec/nowarnings fails due to CodeHeap 'profiled nmethods' exhaustion
Summary: Store profiled code in the non-profiled code heap (and vice versa) if the code cache is really full.
Reviewed-by: kvn, iveresov
erikj [Tue, 10 Mar 2015 14:36:56 +0100] rev 29305
8073021: add native code coverage target into makefiles
Reviewed-by: ihse, tbell, iignatyev
ihse [Mon, 09 Mar 2015 10:39:16 +0100] rev 29304
8074096: Disable (most) native warnings in JDK on a per-library basis
Reviewed-by: erikj, tbell
mchung [Fri, 06 Mar 2015 11:00:42 -0800] rev 29303
8074430: Move policytool to jdk.policytool module
Reviewed-by: alanb, weijun, erikj, ihse
mchung [Fri, 06 Mar 2015 09:11:22 -0800] rev 29302
8074429: Move jar, jarsigner tool to jdk.jartool module
Reviewed-by: alanb, weijun, erikj, ihse
mchung [Fri, 06 Mar 2015 09:02:09 -0800] rev 29301
8074428: Move pack200, unpack200, libpack200 to jdk.pack200
Reviewed-by: alanb, weijun, erikj, ihse
katleman [Thu, 12 Mar 2015 13:35:02 -0700] rev 29300
Added tag jdk9-b54 for changeset 04b3a5821c0d
duke [Wed, 05 Jul 2017 20:23:32 +0200] rev 29299
Added tag jdk9-b54 for changeset 82cd31c5d6ca
duke [Wed, 05 Jul 2017 20:23:32 +0200] rev 29298
Merge
duke [Wed, 05 Jul 2017 20:23:28 +0200] rev 29297
Merge
lana [Thu, 05 Mar 2015 15:24:15 -0800] rev 29296
Merge
mcimadamore [Thu, 05 Mar 2015 15:03:07 +0000] rev 29295
8073432: Object.getClass() throws stackless NPE, due to C2 intrinsic
Summary: Javac should generate NPE checks using Objects.requireNonNull if -target >= 7
Reviewed-by: jlahoda
Contributed-by: aleksey.shipilev@oracle.com
mcimadamore [Thu, 05 Mar 2015 13:10:49 +0000] rev 29294
8073645: Add lambda-based lazy eval versions of Assert.check methods
Summary: Enhance Assert so that lazy string computation can occurr where needed; enhance static roding rule checkers to make sure the right version of the method is called.
Reviewed-by: jlahoda
sadayapalam [Mon, 02 Mar 2015 10:41:08 +0530] rev 29293
8071453: Allow interface methods to be private
Reviewed-by: mcimadamore
Contributed-by: maurizio.cimadamore@oracle.com, srikanth.adayapalam@oracle.com
mcimadamore [Fri, 27 Feb 2015 18:20:33 +0000] rev 29292
8073842: Invalid method reference when referencing a method on a wildcard type
Summary: Method rteference lookup logic doesn't skip type-variables as required by javac.
Reviewed-by: jlahoda
mcimadamore [Fri, 27 Feb 2015 11:51:53 +0000] rev 29291
8073550: java* tools: replace obj.getClass hacks with Assert.checkNonNull or Objects.requireNonNull
Summary: replace getClass() with approapriate NPE checks
Reviewed-by: jjg
Contributed-by: aleksey.shipilev@oracle.com
katleman [Thu, 05 Mar 2015 11:26:21 -0800] rev 29290
Added tag jdk9-b53 for changeset 569659e4dc38
duke [Wed, 05 Jul 2017 20:23:23 +0200] rev 29289
Merge
katleman [Thu, 05 Mar 2015 11:26:16 -0800] rev 29288
Added tag jdk9-b53 for changeset eccafe6808d1
duke [Wed, 05 Jul 2017 20:23:19 +0200] rev 29287
Merge
katleman [Thu, 05 Mar 2015 11:26:16 -0800] rev 29286
Added tag jdk9-b53 for changeset 6be67f434046
duke [Wed, 05 Jul 2017 20:23:16 +0200] rev 29285
Merge
lana [Thu, 05 Mar 2015 15:22:39 -0800] rev 29284
Merge
attila [Thu, 05 Mar 2015 15:43:43 +0100] rev 29283
8035712: Restore some of the RuntimeCallSite specializations
Reviewed-by: hannesw, lagergren
attila [Mon, 02 Mar 2015 14:33:55 +0100] rev 29282
8074031: Canonicalize is-a-JS-string tests
Reviewed-by: hannesw, lagergren
hannesw [Fri, 27 Feb 2015 14:33:47 +0100] rev 29281
8073707: const re-assignment should not reported as a early error
Reviewed-by: sundar, attila
sundar [Fri, 27 Feb 2015 18:03:18 +0530] rev 29280
8074021: Indirect eval fails when used as an element of an array or as a property of an object
Reviewed-by: attila, hannesw
katleman [Thu, 05 Mar 2015 11:26:22 -0800] rev 29279
Added tag jdk9-b53 for changeset 1582f6df75ee
duke [Wed, 05 Jul 2017 20:23:10 +0200] rev 29278
Merge
katleman [Thu, 05 Mar 2015 11:26:13 -0800] rev 29277
Added tag jdk9-b53 for changeset 92bf22ed0621
duke [Wed, 05 Jul 2017 20:23:07 +0200] rev 29276
Merge
lana [Thu, 05 Mar 2015 15:23:22 -0800] rev 29275
Merge
chegar [Thu, 05 Mar 2015 17:04:47 +0000] rev 29274
8005226: java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java fails intermittently
Reviewed-by: rriggs, smarks
sjiang [Thu, 05 Mar 2015 14:54:07 +0100] rev 29273
8073148: "The server has decided to close this client connection" repeated continuously
Reviewed-by: jbachorik
dsamersoff [Thu, 05 Mar 2015 05:06:00 -0800] rev 29272
8030708: warnings from b119 for jdk/src/share/back: JNI exception pending
Summary: Added some more checks for pending exception
Reviewed-by: dholmes, sspitsyn
chegar [Thu, 05 Mar 2015 09:38:45 +0000] rev 29271
8068260: java/io/Serializable/clearHandleTable/ClearHandleTable.java timed out
Reviewed-by: rriggs, smarks
bpb [Wed, 04 Mar 2015 15:05:41 -0800] rev 29270
8073445: (fs) FileSystem.getPathMatcher(...) should check syntax component without regard to case
Summary: Change String equals() to equalsIgnoreCase() where needed.
Reviewed-by: alanb
smarks [Wed, 04 Mar 2015 13:22:45 -0800] rev 29269
8073923: Files.lines() documentation needs clarification
Reviewed-by: darcy, alanb
igerasim [Wed, 04 Mar 2015 13:44:18 +0300] rev 29268
8074067: (bf) Re-examine java.base/share/native/libjava/Bits.c
Reviewed-by: alanb, martin
weijun [Wed, 04 Mar 2015 16:26:49 +0800] rev 29267
8048610: Implement regression test for bug fix of 4686632 in JCE
Reviewed-by: weijun
Contributed-by: Zaiyao Liu <zaiyao.liu@oracle.com>
xuelei [Wed, 04 Mar 2015 08:10:23 +0000] rev 29266
8050371: More MessageDigest tests
Reviewed-by: xuelei
Contributed-by: Zaiyao Liu <zaiyao.liu@oracle.com>