sla [Wed, 06 May 2015 20:37:33 +0200] rev 30668
Merge
sla [Wed, 06 May 2015 16:36:17 +0200] rev 30667
8079345: After 8079248 fixed JDK still fails with "jdk\\bin\\management_ext.dll: The specified procedure could not be found"
Reviewed-by: erikj, sspitsyn, ihse
ykantser [Tue, 05 May 2015 20:09:52 +0200] rev 30666
8076998: BadHandshakeTest.java fails due to warnings in output
Reviewed-by: sla
jbachorik [Thu, 30 Apr 2015 16:44:39 +0200] rev 30665
8072906: sun/management/jmxremote/bootstrap/CustomLauncherTest.java failing on embedded platform
Reviewed-by: sspitsyn, dholmes
ccheung [Sat, 02 May 2015 18:40:59 -0700] rev 30664
Merge
rriggs [Fri, 01 May 2015 18:23:31 +0000] rev 30663
Merge
rriggs [Thu, 30 Apr 2015 09:58:17 -0400] rev 30662
8077743: (rm) Port ResourceManagement to JDK9
Reviewed-by: erikj, mchung, alanb, dholmes
sla [Thu, 30 Apr 2015 09:50:10 +0200] rev 30661
8076473: Remove the jhat code and update makefiles
Reviewed-by: alanb, erikj, sspitsyn
ykantser [Tue, 28 Apr 2015 14:39:21 +0200] rev 30660
8076524: Remove jhat tests and help library from JDK
Reviewed-by: sla, alanb
ykantser [Tue, 28 Apr 2015 14:33:32 +0200] rev 30659
8059047: Extract parser/validator from jhat for use in tests
Reviewed-by: sla
iignatyev [Tue, 19 May 2015 20:04:29 +0300] rev 30658
8055269: java/lang/invoke/MethodHandles/CatchExceptionTest.java fails intermittently
Reviewed-by: vlivanov
amlu [Tue, 19 May 2015 11:05:52 -0400] rev 30657
8080658: Update sun/nio/cs/FindDecoderBugs.java to use random number generator library
Reviewed-by: rriggs
bpb [Tue, 19 May 2015 07:12:10 -0700] rev 30656
8080629: (fs) Re-enable ability to fsync() on directories even though read()s on those directories may fail.
Summary: Revert fix applied to resolve JDK-8066915.
Reviewed-by: alanb
avstepan [Tue, 19 May 2015 16:04:14 +0400] rev 30655
8080422: some docs cleanup for core libs
Summary: some docs cleanup
Reviewed-by: rriggs, lancea
ihse [Tue, 19 May 2015 10:05:02 +0200] rev 30654
8080630: Stop doing sed manipulation of manifest files in SetupJavaCompilation
Reviewed-by: erikj
weijun [Tue, 19 May 2015 09:09:09 +0800] rev 30653
8077102: dns_lookup_realm should be false by default
Reviewed-by: valeriep
jmanson [Mon, 18 May 2015 13:34:56 -0700] rev 30652
8080538: hprof does not work well with multiple agents on non-Solaris platforms
Summary: Never take the address of Agent_OnLoad.
Reviewed-by: sla, martin
asmotrak [Mon, 18 May 2015 19:26:48 +0300] rev 30651
8079140: IgnoreAllErrorHandler should use doPrivileged when it reads system properties
Reviewed-by: mullan
igerasim [Mon, 18 May 2015 19:15:50 +0300] rev 30650
8080535: (ch) Expected size of Character.UnicodeBlock.map is not optimal
Reviewed-by: martin, chegar
igerasim [Mon, 18 May 2015 17:38:38 +0300] rev 30649
8080522: Optimize string operations in java.base/share/classes/sun/security/x509/
Reviewed-by: mullan
asmotrak [Mon, 18 May 2015 17:34:48 +0300] rev 30648
8079138: Additional negative tests for XML signature processing
Reviewed-by: mullan
sundar [Mon, 18 May 2015 18:57:35 +0530] rev 30647
8072853: SimpleScriptContext used by NashornScriptEngine doesn't completely complies to the spec regarding exception throwing
Reviewed-by: psandoz, lagergren
xuelei [Mon, 18 May 2015 02:11:39 +0000] rev 30646
8048820: Implement tests for SecretKeyFactory
Reviewed-by: xuelei
Contributed-by: Zaiyao Liu <zaiyao.liu@oracle.com>
darcy [Sun, 17 May 2015 11:04:01 -0700] rev 30645
8078136: Incorrect figure number in reference to Hacker's Delight book in Long.bitCount() method
Reviewed-by: lancea
plevart [Sun, 17 May 2015 18:49:21 +0200] rev 30644
8074002: java.time.ZoneId.systemDefault() should be faster
Summary: Cache ZoneId inside TimeZone object
Reviewed-by: scolebourne, rriggs, dfuchs
plevart [Sun, 17 May 2015 10:38:36 +0200] rev 30643
8077846: improve locking strategy for readConfiguration(), reset(), and initializeGlobalHandlers()
Reviewed-by: dholmes, alanb, mchung
Contributed-by: daniel.fuchs@oracle.com, peter.levart@gmail.com
igerasim [Fri, 15 May 2015 22:10:29 +0300] rev 30642
8071571: Move substring of same string to slow path
Reviewed-by: martin
igerasim [Fri, 15 May 2015 22:09:49 +0300] rev 30641
8074657: Missing space on a boundary of concatenated strings
Summary: Added missing spaces, fixed indentation, replaced StringBuffer with StringBuilder
Reviewed-by: martin, rriggs
redestad [Fri, 15 May 2015 16:09:55 +0200] rev 30640
8061254: SPECjvm2008-XML performance regressions in 9-b33
Reviewed-by: alanb, shade
katleman [Thu, 21 May 2015 10:07:38 -0700] rev 30639
Added tag jdk9-b65 for changeset 9c04ed826c93
duke [Wed, 05 Jul 2017 20:34:33 +0200] rev 30638
Merge
lana [Thu, 21 May 2015 16:19:49 -0700] rev 30637
Merge
amurillo [Tue, 19 May 2015 11:39:58 -0700] rev 30636
Merge
amurillo [Thu, 14 May 2015 12:05:32 -0700] rev 30635
Merge
thartmann [Thu, 14 May 2015 18:02:35 +0200] rev 30634
8080420: Compilation of TestVectorizationWithInvariant fails with "error: package com.oracle.java.testlibrary does not exist"
Summary: Fixed location of testlibrary package.
Reviewed-by: kvn
thartmann [Thu, 14 May 2015 16:16:06 +0200] rev 30633
Merge
roland [Wed, 13 May 2015 18:06:39 +0200] rev 30632
Merge
roland [Tue, 12 May 2015 09:41:12 +0200] rev 30631
8078436: java/util/stream/boottest/java/util/stream/UnorderedTest.java crashed with an assert in ifnode.cpp
Summary: bad assert in fold_compares code
Reviewed-by: kvn, vlivanov
rbackman [Wed, 13 May 2015 15:23:41 +0200] rev 30630
8080155: field "_pc_offset" not found in type ImmutableOopMapSet
Reviewed-by: roland
roland [Tue, 12 May 2015 10:27:50 +0200] rev 30629
8076188: Optimize arraycopy out for non escaping destination
Summary: if the destination of an arraycopy is non escaping, the arraycopy may be optimized out
Reviewed-by: kvn, vlivanov
rbackman [Mon, 11 May 2015 09:44:07 +0200] rev 30628
8079797: assert(index >= 0 && index < _count) failed: check
Reviewed-by: kvn
thartmann [Mon, 11 May 2015 07:58:02 +0200] rev 30627
Merge
thartmann [Mon, 11 May 2015 07:44:46 +0200] rev 30626
8079343: Crash in PhaseIdealLoop with "assert(!had_error) failed: bad dominance"
Summary: C2 should not try to vectorize loops with loop variant vector base address.
Reviewed-by: kvn
thartmann [Fri, 08 May 2015 12:19:17 +0200] rev 30625
8078497: C2's superword optimization causes unaligned memory accesses
Summary: Prevent vectorization of memory operations with different invariant offsets if unaligned memory accesses are not allowed.
Reviewed-by: kvn
kvn [Fri, 08 May 2015 11:49:20 -0700] rev 30624
8076276: Add support for AVX512
Reviewed-by: kvn, roland
Contributed-by: michael.c.berg@intel.com
hseigel [Wed, 13 May 2015 21:06:30 +0200] rev 30623
Merge
ctornqvi [Tue, 12 May 2015 13:17:54 -0700] rev 30622
8078121: Add 'CreateMinidumpOnCrash' (JDK-8074354) caused many tests failed in nightly testing
Reviewed-by: coleenp, hseigel
ctornqvi [Tue, 12 May 2015 13:16:37 -0700] rev 30621
8075966: Update ProjectCreator to create projects using Visual Studio 2013 toolset
Reviewed-by: sla, lfoltan
ykantser [Tue, 12 May 2015 10:29:10 +0200] rev 30620
8080100: compiler/rtm/* tests fail due to Compilation failed
Reviewed-by: sla
jiangli [Mon, 11 May 2015 15:06:02 -0400] rev 30619
8079840: G1StringDedupTable::deduplicate() reset String hash value unnecessarily.
Summary: Only set hash value if String's hash value was 0.
Reviewed-by: pliden, brutisso
hseigel [Sat, 09 May 2015 07:32:49 -0400] rev 30618
Merge
hseigel [Fri, 08 May 2015 23:51:37 +0200] rev 30617
Merge
hseigel [Fri, 08 May 2015 16:24:46 -0400] rev 30616
8076318: split verifier needs to add TraceClassResolution
Summary: Add print statements to verifier when TraceClassResolution is specified
Reviewed-by: coleenp, acorn
acorn [Fri, 08 May 2015 14:00:24 -0400] rev 30615
8030680: 292 cleanup from default method code assessment
Summary: small code improvements for increased robustness
Reviewed-by: acorn, coleenp
Contributed-by: michael.haupt@oracle.com
jwilhelm [Mon, 11 May 2015 16:30:26 +0200] rev 30614
Merge
pliden [Mon, 11 May 2015 13:57:30 +0200] rev 30613
8079579: Add SuspendibleThreadSetLeaver and make SuspendibleThreadSet::joint()/leave() private
Reviewed-by: brutisso, david
david [Mon, 11 May 2015 10:29:57 +0200] rev 30612
8076542: G1 does not print heap page size information with -XX:+TracePageSizes
Reviewed-by: tschatzl, brutisso
kbarrett [Sun, 10 May 2015 01:11:13 -0400] rev 30611
8079080: ConcurrentMark::mark_stack_push(oop) is unused
Summary: Remove unused functions from ConcurrentMark and CMMarkStack.
Reviewed-by: jmasa, tschatzl
jprovino [Fri, 08 May 2015 09:52:51 -0400] rev 30610
7006810: G1: Introduce peace-of-mind checking in the Suspendible Thread Set
Summary: Add asserts to ensure thread is in the right state.
Reviewed-by: tschatzl, pliden
redestad [Fri, 08 May 2015 15:41:39 +0200] rev 30609
8079263: Suppress warning about disabling adaptive size policy when enabling UseLargePages with UseNUMA when adaptive size policy is disabled
Reviewed-by: jmasa, jwilhelm
brutisso [Fri, 08 May 2015 10:30:16 +0200] rev 30608
8079561: Add a method to convert counters to milliseconds
Reviewed-by: mgerdin, ehelin
hseigel [Fri, 08 May 2015 13:25:11 -0400] rev 30607
Merge
coleenp [Tue, 05 May 2015 16:09:30 -0400] rev 30606
8069005: Hotspot crashes in System.out.println with assert(resolved_method->method_holder()->is_linked()) failed: must be linked
Summary: move java.lang.Class initialization sooner in bootstrapping the jvm
Reviewed-by: dholmes, hseigel
stuefe [Thu, 23 Apr 2015 18:00:50 +0200] rev 30605
8077276: allocating heap with UseLargePages and HugeTLBFS may trash existing memory mappings (linux)
Summary: Remove MAP_FIXED from initial mapping allocation; add tests
Reviewed-by: stefank, coleenp
ykantser [Mon, 04 May 2015 16:30:07 +0200] rev 30604
8067013: Rename the com.oracle.java.testlibary package
Reviewed-by: dholmes, gtriantafill, sla
Contributed-by: alexander.kulyakhtin@oracle.com
ccheung [Sat, 02 May 2015 18:40:37 -0700] rev 30603
Merge
ykantser [Fri, 01 May 2015 09:40:08 +0200] rev 30602
8079120: serviceability/dcmd/gc/HeapDumpAllTest.java: compilation failed
Reviewed-by: sla
stuefe [Thu, 30 Apr 2015 09:09:01 +0200] rev 30601
8078628: linux-zero does not build without precompiled header
Summary: add missing includes
Reviewed-by: coleenp, stefank, sgehwolf
ctornqvi [Thu, 30 Apr 2015 04:01:13 -0700] rev 30600
8079112: [TESTBUG] hotspot_jprt group in TEST.groups refers to non-existent groups
Reviewed-by: gtriantafill, coleenp, dholmes
sspitsyn [Wed, 29 Apr 2015 17:14:40 -0700] rev 30599
8076579: Popping a stack frame after exception breakpoint sets last method param to exception
Summary: Null the InterpreterRuntime::member_name_arg_or_null return value when it is necessary
Reviewed-by: jbachorik, coleenp, twisti
ctornqvi [Wed, 29 Apr 2015 07:03:49 -0700] rev 30598
8078558: [TESTBUG] Merge hotspot_wbapitest with existing jtreg jprt job
Reviewed-by: mikael, lfoltan, hseigel
ykantser [Tue, 28 Apr 2015 14:36:31 +0200] rev 30597
8059047: Extract parser/validator from jhat for use in tests
Reviewed-by: sla
amurillo [Thu, 07 May 2015 15:34:45 -0700] rev 30596
Merge
kvn [Thu, 07 May 2015 11:28:03 -0700] rev 30595
Merge
mikael [Wed, 06 May 2015 17:42:24 -0700] rev 30594
8079545: [TESTBUG] hotspot_basicvmtest doesn't fail even if VM crashes
Reviewed-by: ctornqvi, dholmes
kvn [Tue, 05 May 2015 12:33:57 -0700] rev 30593
8076284: Improve vectorization of parallel streams
Summary: Improve vectorization of java/util/stream/Streams$RangeIntSpliterator::forEachRemaining() method and enable loop vectorization in a given method on demand.
Reviewed-by: kvn
Contributed-by: jan.civlin@intel.com
roland [Tue, 05 May 2015 19:27:08 +0200] rev 30592
Merge
mhaupt [Tue, 05 May 2015 13:06:10 +0200] rev 30591
8075492: adopt recent IGV
Summary: adopted recent sources, updated README, added build and run instructions; ignored IGV build files in Mercurial; adapted HotSpot Ideal graph printer to current IGV's data format schema; reintroduced control flow window and basic block layout
Reviewed-by: kvn, roland
Contributed-by: Andreas Woess <andreas.woess@oracle.com>, Bernhard Urban <bernhard.urban@oracle.com>, Christian Haeubl <christian.haeubl@oracle.com>, Doug Simon <doug.simon@oracle.com>, Gilles Duboscq <gilles.duboscq@oracle.com>, Lukas Stadler <lukas.stadler@oracle.com>, Peter Hofer <peter.hofer@jku.at>, Roland Schatz <roland.schatz@oracle.com>, Thomas Wuerthinger <thomas.wuerthinger@oracle.com>, Tom Rodriguez <tom.rodriguez@oracle.com>
rbackman [Tue, 05 May 2015 16:50:25 +0200] rev 30590
8064458: OopMap class could be more compact
Reviewed-by: kvn, bdelsart
goetz [Fri, 24 Apr 2015 10:49:38 +0200] rev 30589
8078593: [TESTBUG] ppc: Enable jtreg tests for new features
Summary: Also fix a ppc issue in test_env.sh
Reviewed-by: kvn
kvn [Wed, 29 Apr 2015 15:34:04 -0700] rev 30588
8078563: Restrict reduction optimization
Reviewed-by: kvn, twisti
Contributed-by: michael.c.berg@intel.com
simonis [Mon, 04 May 2015 18:41:53 +0200] rev 30587
8079280: Fix format warning/error in vm_version_ppc.cpp
Reviewed-by: stefank
tschatzl [Thu, 07 May 2015 10:32:42 +0200] rev 30586
8079556: BACKOUT - Determining the desired PLAB size adjusts to the the number of threads at the wrong place
Reviewed-by: jwilhelm, brutisso
eistepan [Wed, 29 Apr 2015 15:12:33 +0300] rev 30585
6407976: GC worker number should be unsigned
Reviewed-by: jwilhelm, tschatzl
david [Wed, 06 May 2015 11:04:44 +0200] rev 30584
8079337: Format string issues in workgroup.cpp and taskqueue.cpp
Reviewed-by: jwilhelm, pliden, ehelin
pliden [Tue, 05 May 2015 11:17:12 +0200] rev 30583
8079330: Circular dependency between G1CollectedHeap and G1BlockOffsetSharedArray
Reviewed-by: tschatzl, mgerdin
pliden [Wed, 06 May 2015 09:21:10 +0200] rev 30582
8013171: G1: C1 x86_64 barriers use 32-bit accesses to 64-bit PtrQueue::_index
Reviewed-by: roland, tschatzl
stefank [Mon, 04 May 2015 15:02:37 +0200] rev 30581
8079275: Remove CollectedHeap::use_parallel_gc_threads
Reviewed-by: sjohanss, kbarrett
jwha [Fri, 01 May 2015 10:51:00 -0700] rev 30580
8079091: Remove dictionary NULL check on common path of BlockFreeList methods
Reviewed-by: kbarrett, stefank, dholmes, jmasa
jwilhelm [Mon, 04 May 2015 17:10:50 +0200] rev 30579
Merge
pliden [Mon, 04 May 2015 09:24:03 +0200] rev 30578
8079148: Fix incorrect include guards
Reviewed-by: stefank, ehelin
kbarrett [Fri, 01 May 2015 17:38:12 -0400] rev 30577
8075215: SATB buffer processing found reclaimed humongous object
Summary: Don't assume SATB buffer entries are valid objects
Reviewed-by: brutisso, ecaspole
sjohanss [Thu, 30 Apr 2015 10:14:26 +0200] rev 30576
8078897: Clean out unused code in G1MMUTracker
Reviewed-by: brutisso, jwilhelm, drwhite
ecaspole [Wed, 29 Apr 2015 15:25:41 -0400] rev 30575
8078405: Heap decommit failed in TestShrinkAuxiliaryData tests
Summary: Modified test so options in the code are after the options from the environment, so -ExplicitGCInvokesConcurrent is always used.
Reviewed-by: tschatzl, kbarrett
dfazunen [Wed, 29 Apr 2015 15:32:05 +0400] rev 30574
8073476: G1 logging ignores changes to PrintGC* flags via MXBeans
Reviewed-by: brutisso, jwilhelm
drwhite [Wed, 29 Apr 2015 09:59:51 +0200] rev 30573
8076995: gc/ergonomics/TestDynamicNumberOfGCThreads.java failed with java.lang.RuntimeException: 'new_active_workers' missing from stdout/stderr
Reviewed-by: brutisso, jmasa, jwilhelm
jwilhelm [Tue, 28 Apr 2015 23:37:11 +0200] rev 30572
Merge
sangheki [Tue, 28 Apr 2015 12:02:50 -0700] rev 30571
8073204: Determining the desired PLAB size adjusts to the the number of threads at the wrong place
Summary: Calculate the desired PLAB value for a single thread and then return desired PLAB size according to the current number of threads when needed
Reviewed-by: ysr, jwilhelm, tschatzl
sla [Tue, 28 Apr 2015 20:02:31 +0200] rev 30570
Merge
iaberg [Tue, 28 Apr 2015 07:59:18 +0200] rev 30569
8074016: Add convenient way of adding custom test targets to hotspot's test makefile
Summary: Moved the line including the custom testlist to after variables are defined, allowing custom rules to use them
Reviewed-by: erikj, sla
stefank [Tue, 28 Apr 2015 12:17:56 +0000] rev 30568
Merge
stefank [Mon, 27 Apr 2015 09:51:13 +0200] rev 30567
8078601: print_concurrent_locks should be guarded with INCLUDE_SERVICES
Reviewed-by: mgronlun, sla, dholmes
stefank [Mon, 27 Apr 2015 09:51:06 +0200] rev 30566
8076177: Remove usage of stack.inline.hpp functions from taskqueue.hpp
Reviewed-by: brutisso, goetz
tschatzl [Mon, 27 Apr 2015 10:04:26 +0200] rev 30565
8073632: Make auxiliary data structures know their own translation factor
Summary: Auxiliary data structures should have knowledge of their own requirements for virtual memory reservations instead of getting these values directly from various places.
Reviewed-by: stefank, kbarrett
tschatzl [Wed, 22 Apr 2015 17:05:00 +0200] rev 30564
8071462: Remove G1ParGCAllocator::alloc_buffer_waste
Summary: Removed G1ParGCAllocator::alloc_buffer_waste, added method to obtain waste
Reviewed-by: tschatzl, sjohanss
Contributed-by: Michail Chernov <michail.chernov@oracle.com>
brutisso [Mon, 27 Apr 2015 09:08:07 +0200] rev 30563
8078613: HAS_BEEN_MOVED has been moved
Reviewed-by: stefank, sjohanss
ctornqvi [Thu, 23 Apr 2015 19:01:07 +0000] rev 30562
Merge
ctornqvi [Thu, 23 Apr 2015 17:14:55 +0000] rev 30561
Merge
ctornqvi [Wed, 22 Apr 2015 13:58:42 -0700] rev 30560
8077529: [TESTBUG] Remove hotspot.internalvmtests from jprt config
Reviewed-by: mikael, sla
kbarrett [Thu, 23 Apr 2015 16:44:07 +0000] rev 30559
Merge
kbarrett [Thu, 23 Apr 2015 11:26:32 -0400] rev 30558
8031401: Remove unused code in the reference processor
Summary: Assume pending_list uses discovered field and remove resulting dead code.
Reviewed-by: brutisso, pliden
azakharov [Thu, 23 Apr 2015 15:54:47 +0200] rev 30557
8073669: gc/TestSoftReferencesBehaviorOnOOME.java times out in nightlies
Summary: changed test scenario to more straight-forward one, added tricks to prevent compiler optimizations and added checks when OOME didn't thrown as expected.
Reviewed-by: tschatzl, jwilhelm
stefank [Wed, 22 Apr 2015 10:31:15 +0200] rev 30556
8078345: Move PSParallelCompact::mark_and_push to ParCompactionManager
Reviewed-by: jwilhelm, brutisso
stefank [Wed, 22 Apr 2015 09:09:42 +0200] rev 30555
8078341: Remove the unused PSParallelCompact::_updated_int_array_klass_obj
Reviewed-by: ehelin, tschatzl
stefank [Wed, 22 Apr 2015 08:29:39 +0200] rev 30554
8078340: Remove the unused PSParallelCompact::KeepAliveClosure
Reviewed-by: ehelin, tschatzl
enevill [Mon, 18 May 2015 15:52:33 +0000] rev 30553
8080586: aarch64: hotspot test compiler/codegen/7184394/TestAESMain.java fails
Summary: Return correct length in generate_cipherBlockChaining_encryptAESCrypt
Reviewed-by: roland
enevill [Fri, 15 May 2015 09:21:48 +0000] rev 30552
8079564: Use FP register as proper frame pointer in JIT compiled code on aarch64
Summary: Add support for PreserveFramePointer for debug/profile
Reviewed-by: kvn
katleman [Thu, 21 May 2015 10:07:35 -0700] rev 30551
Added tag jdk9-b65 for changeset 01b7cab6b7b1
lana [Thu, 21 May 2015 16:19:08 -0700] rev 30550
Merge
amurillo [Tue, 19 May 2015 11:39:57 -0700] rev 30549
Merge
amurillo [Thu, 14 May 2015 12:05:31 -0700] rev 30548
Merge
hseigel [Sat, 09 May 2015 07:32:37 -0400] rev 30547
Merge
ykantser [Thu, 07 May 2015 16:11:04 +0200] rev 30546
8079200: Fix heapdump tests to validate heapdump after jhat is removed
Reviewed-by: sla
hseigel [Fri, 08 May 2015 13:23:28 -0400] rev 30545
Merge
ccheung [Sat, 02 May 2015 18:35:36 -0700] rev 30544
Merge
rriggs [Fri, 01 May 2015 09:45:44 -0400] rev 30543
Merge
rriggs [Thu, 30 Apr 2015 09:57:58 -0400] rev 30542
8077743: (rm) Port ResourceManagement to JDK9
Reviewed-by: alanb, erikj, mchung, dholmes
sla [Thu, 30 Apr 2015 09:50:01 +0200] rev 30541
8076473: Remove the jhat code and update makefiles
Reviewed-by: alanb, erikj, sspitsyn