changeset 9138:05a8eb59a154

Merge
author kizune
date Mon, 20 Jan 2014 19:11:57 +0400
parents a3ca39404279 9bf43f25eacd
children 67ea497b8e00
files
diffstat 29 files changed, 91 insertions(+), 79 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/java/lang/invoke/BoundMethodHandle.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/lang/invoke/BoundMethodHandle.java	Mon Jan 20 19:11:57 2014 +0400
@@ -611,7 +611,7 @@
             mv.visitVarInsn(ALOAD, 1);
             mv.visitVarInsn(ALOAD, 2);
 
-            mv.visitMethodInsn(INVOKESPECIAL, BMH, "<init>", makeSignature("", true));
+            mv.visitMethodInsn(INVOKESPECIAL, BMH, "<init>", makeSignature("", true), false);
 
             for (int i = 0, j = 0; i < types.length(); ++i, ++j) {
                 // i counts the arguments, j counts corresponding argument slots
@@ -662,7 +662,7 @@
             // put fields on the stack
             emitPushFields(types, className, mv);
             // finally, invoke the constructor and return
-            mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types, false));
+            mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types, false), false);
             mv.visitInsn(ARETURN);
             mv.visitMaxs(0, 0);
             mv.visitEnd();
@@ -678,7 +678,7 @@
                 int iconstInsn = ICONST_0 + extensionIndex(t);
                 assert(iconstInsn <= ICONST_5);
                 mv.visitInsn(iconstInsn);
-                mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, "extendWithIndex", BMHSPECIES_DATA_EWI_SIG);
+                mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, "extendWithIndex", BMHSPECIES_DATA_EWI_SIG, false);
                 mv.visitFieldInsn(GETFIELD, SPECIES_DATA, "constructor", "[" + MH_SIG);
                 mv.visitInsn(ICONST_0);
                 mv.visitInsn(AALOAD);
@@ -690,7 +690,7 @@
                 // put narg on stack
                 mv.visitVarInsn(typeLoadOp(t), 3);
                 // finally, invoke the constructor and return
-                mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types + t, false));
+                mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types + t, false), false);
                 mv.visitInsn(ARETURN);
                 mv.visitMaxs(0, 0);
                 mv.visitEnd();
@@ -701,7 +701,7 @@
             mv.visitCode();
             mv.visitLdcInsn(types);
             mv.visitLdcInsn(Type.getObjectType(className));
-            mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG);
+            mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG, false);
             mv.visitFieldInsn(PUTSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG);
             mv.visitInsn(RETURN);
             mv.visitMaxs(0, 0);
--- a/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java	Mon Jan 20 19:11:57 2014 +0400
@@ -193,10 +193,10 @@
     CallSite buildCallSite() throws LambdaConversionException {
         final Class<?> innerClass = spinInnerClass();
         if (invokedType.parameterCount() == 0) {
-            final Constructor[] ctrs = AccessController.doPrivileged(
-                    new PrivilegedAction<Constructor[]>() {
+            final Constructor<?>[] ctrs = AccessController.doPrivileged(
+                    new PrivilegedAction<Constructor<?>[]>() {
                 @Override
-                public Constructor[] run() {
+                public Constructor<?>[] run() {
                     Constructor<?>[] ctrs = innerClass.getDeclaredConstructors();
                     if (ctrs.length == 1) {
                         // The lambda implementing inner class constructor is private, set
@@ -338,7 +338,7 @@
             m.visitVarInsn(getLoadOpcode(argType), varIndex);
             varIndex += getParameterSize(argType);
         }
-        m.visitMethodInsn(INVOKESPECIAL, lambdaClassName, NAME_CTOR, constructorType.toMethodDescriptorString());
+        m.visitMethodInsn(INVOKESPECIAL, lambdaClassName, NAME_CTOR, constructorType.toMethodDescriptorString(), false);
         m.visitInsn(ARETURN);
         m.visitMaxs(-1, -1);
         m.visitEnd();
@@ -354,7 +354,7 @@
         ctor.visitCode();
         ctor.visitVarInsn(ALOAD, 0);
         ctor.visitMethodInsn(INVOKESPECIAL, JAVA_LANG_OBJECT, NAME_CTOR,
-                             METHOD_DESCRIPTOR_VOID);
+                             METHOD_DESCRIPTOR_VOID, false);
         int parameterCount = invokedType.parameterCount();
         for (int i = 0, lvIndex = 0; i < parameterCount; i++) {
             ctor.visitVarInsn(ALOAD, 0);
@@ -402,7 +402,7 @@
             mv.visitInsn(AASTORE);
         }
         mv.visitMethodInsn(INVOKESPECIAL, NAME_SERIALIZED_LAMBDA, NAME_CTOR,
-                DESCR_CTOR_SERIALIZED_LAMBDA);
+                DESCR_CTOR_SERIALIZED_LAMBDA, false);
         mv.visitInsn(ARETURN);
         // Maxs computed by ClassWriter.COMPUTE_MAXS, these arguments ignored
         mv.visitMaxs(-1, -1);
@@ -421,7 +421,7 @@
         mv.visitInsn(DUP);
         mv.visitLdcInsn("Non-serializable lambda");
         mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR,
-                           DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION);
+                           DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false);
         mv.visitInsn(ATHROW);
         mv.visitMaxs(-1, -1);
         mv.visitEnd();
@@ -434,7 +434,7 @@
         mv.visitInsn(DUP);
         mv.visitLdcInsn("Non-serializable lambda");
         mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR,
-                           DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION);
+                           DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false);
         mv.visitInsn(ATHROW);
         mv.visitMaxs(-1, -1);
         mv.visitEnd();
--- a/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	Mon Jan 20 19:11:57 2014 +0400
@@ -403,7 +403,7 @@
         String owner = "java/lang/" + wrapper.wrapperType().getSimpleName();
         String name  = "valueOf";
         String desc  = "(" + wrapper.basicTypeChar() + ")L" + owner + ";";
-        mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc);
+        mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, false);
     }
 
     /**
@@ -417,7 +417,7 @@
         String name  = wrapper.primitiveSimpleName() + "Value";
         String desc  = "()" + wrapper.basicTypeChar();
         mv.visitTypeInsn(Opcodes.CHECKCAST, owner);
-        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc);
+        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc, false);
     }
 
     /**
@@ -437,7 +437,7 @@
                 mv.visitLdcInsn(constantPlaceholder(pclass));
                 mv.visitTypeInsn(Opcodes.CHECKCAST, CLS);
                 mv.visitInsn(Opcodes.SWAP);
-                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG);
+                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG, false);
                 if (pclass.isArray())
                     mv.visitTypeInsn(Opcodes.CHECKCAST, OBJARY);
             }
@@ -570,7 +570,7 @@
 
         // invocation
         MethodType type = name.function.methodType();
-        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString());
+        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString(), false);
     }
 
     static private Class<?>[] STATICALLY_INVOCABLE_PACKAGES = {
@@ -944,7 +944,7 @@
         emitAloadInsn(0);
         mv.visitFieldInsn(Opcodes.GETFIELD, MH, "form", "Ljava/lang/invoke/LambdaForm;");
         mv.visitInsn(Opcodes.SWAP);  // swap form and array; avoid local variable
-        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;");
+        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;", false);
 
         // maybe unbox
         Class<?> rtype = invokerType.returnType();
@@ -1007,7 +1007,7 @@
 
         // Invoke
         String targetDesc = dstType.basicType().toMethodDescriptorString();
-        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc);
+        mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc, false);
 
         // Box primitive types
         Class<?> rtype = dstType.returnType();
--- a/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java	Mon Jan 20 19:11:57 2014 +0400
@@ -158,19 +158,19 @@
         visitMethodInsn(Opcodes.INVOKESTATIC,
                 wrapperName(w),
                 NAME_BOX_METHOD,
-                boxingDescriptor(w));
+                boxingDescriptor(w), false);
     }
 
     /**
      * Convert types by unboxing. The source type is known to be a primitive wrapper.
-     * @param ws A primitive wrapper corresponding to wrapped reference source type
+     * @param sname A primitive wrapper corresponding to wrapped reference source type
      * @param wt A primitive wrapper being converted to
      */
     void unbox(String sname, Wrapper wt) {
         visitMethodInsn(Opcodes.INVOKEVIRTUAL,
                 sname,
                 unboxMethod(wt),
-                unboxingDescriptor(wt));
+                unboxingDescriptor(wt), false);
     }
 
     private String descriptorToName(String desc) {
--- a/src/share/classes/java/util/stream/ForEachOps.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/util/stream/ForEachOps.java	Mon Jan 20 19:11:57 2014 +0400
@@ -32,6 +32,7 @@
 import java.util.function.Consumer;
 import java.util.function.DoubleConsumer;
 import java.util.function.IntConsumer;
+import java.util.function.IntFunction;
 import java.util.function.LongConsumer;
 
 /**
@@ -471,9 +472,11 @@
             if (task.getPendingCount() > 0) {
                 // Cannot complete just yet so buffer elements into a Node
                 // for use when completion occurs
+                @SuppressWarnings("unchecked")
+                IntFunction<T[]> generator = size -> (T[]) new Object[size];
                 Node.Builder<T> nb = task.helper.makeNodeBuilder(
                         task.helper.exactOutputSizeIfKnown(rightSplit),
-                        size -> (T[]) new Object[size]);
+                        generator);
                 task.node = task.helper.wrapAndCopyInto(nb, rightSplit).build();
                 task.spliterator = null;
             }
--- a/src/share/classes/java/util/stream/Nodes.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/util/stream/Nodes.java	Mon Jan 20 19:11:57 2014 +0400
@@ -63,7 +63,7 @@
     // IllegalArgumentException messages
     static final String BAD_SIZE = "Stream size exceeds max array size";
 
-    @SuppressWarnings("raw")
+    @SuppressWarnings("rawtypes")
     private static final Node EMPTY_NODE = new EmptyNode.OfRef();
     private static final Node.OfInt EMPTY_INT_NODE = new EmptyNode.OfInt();
     private static final Node.OfLong EMPTY_LONG_NODE = new EmptyNode.OfLong();
@@ -956,6 +956,7 @@
          * Initiate a stack containing, in left-to-right order, the child nodes
          * covered by this spliterator
          */
+        @SuppressWarnings("unchecked")
         protected final Deque<N> initStack() {
             // Bias size to the case where leaf nodes are close to this node
             // 8 is the minimum initial capacity for the ArrayDeque implementation
@@ -969,6 +970,7 @@
          * Depth first search, in left-to-right order, of the node tree, using
          * an explicit stack, to find the next non-empty leaf node.
          */
+        @SuppressWarnings("unchecked")
         protected final N findNextLeafNode(Deque<N> stack) {
             N n = null;
             while ((n = stack.pollFirst()) != null) {
@@ -984,6 +986,7 @@
             return null;
         }
 
+        @SuppressWarnings("unchecked")
         protected final boolean initTryAdvance() {
             if (curNode == null)
                 return false;
@@ -1870,6 +1873,7 @@
             }
 
             assert task.offset + task.length < MAX_ARRAY_SIZE;
+            @SuppressWarnings("unchecked")
             T_SINK sink = (T_SINK) task;
             task.helper.wrapAndCopyInto(sink, rightSplit);
             task.propagateCompletion();
@@ -2173,6 +2177,7 @@
         }
 
         @Override
+        @SuppressWarnings("unchecked")
         protected T_NODE doLeaf() {
             T_BUILDER builder = builderFactory.apply(helper.exactOutputSizeIfKnown(spliterator));
             return (T_NODE) helper.wrapAndCopyInto(builder, spliterator).build();
--- a/src/share/classes/java/util/stream/SortedOps.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/util/stream/SortedOps.java	Mon Jan 20 19:11:57 2014 +0400
@@ -29,7 +29,6 @@
 import java.util.Comparator;
 import java.util.Objects;
 import java.util.Spliterator;
-import java.util.concurrent.ForkJoinTask;
 import java.util.function.IntFunction;
 
 
@@ -113,7 +112,9 @@
                   StreamOpFlag.IS_ORDERED | StreamOpFlag.IS_SORTED);
             this.isNaturalSort = true;
             // Will throw CCE when we try to sort if T is not Comparable
-            this.comparator = (Comparator<? super T>) Comparator.naturalOrder();
+            @SuppressWarnings("unchecked")
+            Comparator<? super T> comp = (Comparator<? super T>) Comparator.naturalOrder();
+            this.comparator = comp;
         }
 
         /**
@@ -170,7 +171,7 @@
         }
 
         @Override
-        public Sink<Integer> opWrapSink(int flags, Sink sink) {
+        public Sink<Integer> opWrapSink(int flags, Sink<Integer> sink) {
             Objects.requireNonNull(sink);
 
             if (StreamOpFlag.SORTED.isKnown(flags))
@@ -291,6 +292,7 @@
         }
 
         @Override
+        @SuppressWarnings("unchecked")
         public void begin(long size) {
             if (size >= Nodes.MAX_ARRAY_SIZE)
                 throw new IllegalArgumentException(Nodes.BAD_SIZE);
--- a/src/share/classes/java/util/stream/SpinedBuffer.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/util/stream/SpinedBuffer.java	Mon Jan 20 19:11:57 2014 +0400
@@ -92,6 +92,7 @@
      * @throws IllegalArgumentException if the specified initial capacity
      *         is negative
      */
+    @SuppressWarnings("unchecked")
     SpinedBuffer(int initialCapacity) {
         super(initialCapacity);
         curChunk = (E[]) new Object[1 << initialChunkPower];
@@ -100,6 +101,7 @@
     /**
      * Constructs an empty list with an initial capacity of sixteen.
      */
+    @SuppressWarnings("unchecked")
     SpinedBuffer() {
         super();
         curChunk = (E[]) new Object[1 << initialChunkPower];
@@ -114,6 +116,7 @@
                : priorElementCount[spineIndex] + spine[spineIndex].length;
     }
 
+    @SuppressWarnings("unchecked")
     private void inflateSpine() {
         if (spine == null) {
             spine = (E[][]) new Object[MIN_SPINE_SIZE][];
@@ -125,6 +128,7 @@
     /**
      * Ensure that the buffer has at least capacity to hold the target size
      */
+    @SuppressWarnings("unchecked")
     protected final void ensureCapacity(long targetSize) {
         long capacity = capacity();
         if (targetSize > capacity) {
--- a/src/share/classes/java/util/stream/StreamSpliterators.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/util/stream/StreamSpliterators.java	Mon Jan 20 19:11:57 2014 +0400
@@ -516,6 +516,7 @@
         }
 
         @Override
+        @SuppressWarnings("unchecked")
         public T_SPLITR trySplit() {
             return (T_SPLITR) get().trySplit();
         }
@@ -643,6 +644,7 @@
             // existing and additionally created F/J tasks that perform
             // redundant work on no elements.
             while (true) {
+                @SuppressWarnings("unchecked")
                 T_SPLITR leftSplit = (T_SPLITR) s.trySplit();
                 if (leftSplit == null)
                     return null;
@@ -970,6 +972,7 @@
             // Stop splitting when there are no more limit permits
             if (permits.get() == 0)
                 return null;
+            @SuppressWarnings("unchecked")
             T_SPLITR split = (T_SPLITR) s.trySplit();
             return split == null ? null : makeSpliterator(split);
         }
@@ -1068,16 +1071,18 @@
                 super(s, skip, limit);
             }
 
-            OfPrimitive(T_SPLITR s, UnorderedSliceSpliterator.OfPrimitive parent) {
+            OfPrimitive(T_SPLITR s, UnorderedSliceSpliterator.OfPrimitive<T, T_CONS, T_BUFF, T_SPLITR> parent) {
                 super(s, parent);
             }
 
             @Override
             public boolean tryAdvance(T_CONS action) {
                 Objects.requireNonNull(action);
+                @SuppressWarnings("unchecked")
+                T_CONS consumer = (T_CONS) this;
 
                 while (permitStatus() != PermitStatus.NO_MORE) {
-                    if (!s.tryAdvance((T_CONS) this))
+                    if (!s.tryAdvance(consumer))
                         return false;
                     else if (acquirePermits(1) == 1) {
                         acceptConsumed(action);
@@ -1316,7 +1321,7 @@
      * estimate size is 0.
      *
      * <p>The {@code forEachRemaining} method if invoked will never terminate.
-     * The {@coe tryAdvance} method always returns true.
+     * The {@code tryAdvance} method always returns true.
      *
      */
     static abstract class InfiniteSupplyingSpliterator<T> implements Spliterator<T> {
--- a/src/share/classes/java/util/stream/Streams.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/src/share/classes/java/util/stream/Streams.java	Mon Jan 20 19:11:57 2014 +0400
@@ -715,6 +715,7 @@
 
         @Override
         public T_SPLITR trySplit() {
+            @SuppressWarnings("unchecked")
             T_SPLITR ret = beforeSplit ? aSpliterator : (T_SPLITR) bSpliterator.trySplit();
             beforeSplit = false;
             return ret;
--- a/test/ProblemList.txt	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/ProblemList.txt	Mon Jan 20 19:11:57 2014 +0400
@@ -123,11 +123,6 @@
 # 8029415
 java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java generic-all
 
-# 8030656
-java/lang/reflect/Parameter/GetAnnotatedTypeTest.java generic-all
-java/lang/reflect/Parameter/WithParameters.java generic-all
-java/lang/reflect/Parameter/BadClassFiles.java generic-all
-
 ############################################################################
 
 # jdk_management
--- a/test/com/sun/jdi/BadHandshakeTest.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/com/sun/jdi/BadHandshakeTest.java	Mon Jan 20 19:11:57 2014 +0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, 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
@@ -85,7 +85,7 @@
                 success.set(line.contains("Listening for transport dt_socket at address:"));
                 return true;
             },
-            1500,
+            Integer.MAX_VALUE,
             TimeUnit.MILLISECONDS
         );
 
--- a/test/java/net/ipv6tests/UdpTest.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/net/ipv6tests/UdpTest.java	Mon Jan 20 19:11:57 2014 +0400
@@ -147,6 +147,7 @@
         final InetAddress ia6 = ia6addr;
         final int port = s1.getLocalPort();
 
+        s1.setSoTimeout(10000);
         runAfter (2000, new Runnable () {
             public void run () {
                 try {
@@ -157,7 +158,7 @@
         });
         t1 = System.currentTimeMillis();
         s1.receive (new DatagramPacket (new byte [128], 128));
-        checkTime (System.currentTimeMillis() - t1, 2000);
+        checkTime (System.currentTimeMillis() - t1, 4000);
         s1.close ();
         s2.close ();
         System.out.println ("Test2: OK");
--- a/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 CancelledProducerConsumerLoops.java
  * @run main/timeout=7000 CancelledProducerConsumerLoops
  * @summary Checks for responsiveness of blocking queues to cancellation.
  * Runs under the assumption that ITERS computations require more than
--- a/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 MultipleProducersSingleConsumerLoops.java
  * @run main/timeout=3600 MultipleProducersSingleConsumerLoops
  * @summary  multiple producers and single consumer using blocking queues
  */
--- a/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 ProducerConsumerLoops.java
  * @run main/timeout=3600 ProducerConsumerLoops
  * @summary  multiple producers and consumers using blocking queues
  */
--- a/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 SingleProducerMultipleConsumerLoops.java
  * @run main/timeout=600 SingleProducerMultipleConsumerLoops
  * @summary  check ordering for blocking queues with 1 producer and multiple consumers
  */
--- a/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 MapCheck.java
  * @run main/timeout=240 MapCheck
  * @summary Times and checks basic map operations
  */
--- a/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 MapLoops.java
  * @run main/timeout=1600 MapLoops
  * @summary Exercise multithreaded maps, by default ConcurrentHashMap.
  * Multithreaded hash table test.  Each thread does a random walk
--- a/test/java/util/concurrent/Exchanger/ExchangeLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/Exchanger/ExchangeLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 ExchangeLoops.java
  * @run main/timeout=720 ExchangeLoops
  * @summary checks to make sure a pipeline of exchangers passes data.
  */
--- a/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4965960
- * @compile -source 1.5 ExecutorCompletionServiceLoops.java
  * @run main/timeout=3600 ExecutorCompletionServiceLoops
  * @summary  Exercise ExecutorCompletionServiceLoops
  */
--- a/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 CancelledFutureLoops.java
  * @run main/timeout=2000 CancelledFutureLoops
  * @summary Checks for responsiveness of futures to cancellation.
  * Runs under the assumption that ITERS computations require more than
--- a/test/java/util/concurrent/atomic/VMSupportsCS8.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/atomic/VMSupportsCS8.java	Mon Jan 20 19:11:57 2014 +0400
@@ -24,7 +24,6 @@
 /*
  * @test
  * @bug 4992443 4994819
- * @compile -source 1.5 VMSupportsCS8.java
  * @run main VMSupportsCS8
  * @summary Checks that the value of VMSupportsCS8 matches system properties.
  */
--- a/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 CancelledLockLoops.java
  * @run main/timeout=2800 CancelledLockLoops
  * @summary tests lockInterruptibly.
  * Checks for responsiveness of locks to interrupts. Runs under that
--- a/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 LockOncePerThreadLoops.java
  * @run main/timeout=15000 LockOncePerThreadLoops
  * @summary Checks for missed signals by locking and unlocking each of an array of locks once per thread
  */
--- a/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 SimpleReentrantLockLoops.java
  * @run main/timeout=4500 SimpleReentrantLockLoops
  * @summary multiple threads using a single lock
  */
--- a/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658 5031862
- * @compile -source 1.5 TimeoutLockLoops.java
  * @run main TimeoutLockLoops
  * @summary Checks for responsiveness of locks to timeouts.
  * Runs under the assumption that ITERS computations require more than
--- a/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java	Mon Jan 20 19:11:57 2014 +0400
@@ -34,7 +34,6 @@
 /*
  * @test
  * @bug 4486658
- * @compile -source 1.5 MapLoops.java
  * @run main/timeout=4700 MapLoops
  * @summary Exercise multithreaded maps, by default ConcurrentHashMap.
  * Multithreaded hash table test.  Each thread does a random walk
--- a/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java	Thu Jan 16 21:44:18 2014 -0800
+++ b/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java	Mon Jan 20 19:11:57 2014 +0400
@@ -44,6 +44,7 @@
 
     private static final SynchronousQueue<Exception> queue =
             new SynchronousQueue<Exception>();
+    private static volatile boolean isRunning = true;
 
     static final class Result extends Exception {
 
@@ -91,19 +92,23 @@
         Thread t = new Thread() {
 
             public void run() {
-                while (true) {
+                while (isRunning) {
                     Exception error = Result.SUCCESS;
                     try {
                         System.err.println("Accepting: ");
                         final Socket ss = s.accept();
                         System.err.println(ss.getInetAddress() + " accepted");
                     } catch (Exception x) {
-                        x.printStackTrace();
+                        if (isRunning) {
+                            x.printStackTrace();
+                        }
                         error = x;
                     } finally {
                         try {
-                            // wait for the client to get the exception.
-                            queue.put(error);
+                            if (isRunning) {
+                                // wait for the client to get the exception.
+                                queue.put(error);
+                            }
                         } catch (Exception x) {
                             // too bad!
                             System.err.println("Could't send result to client!");
@@ -114,32 +119,38 @@
                 }
             }
         };
-        t.setDaemon(true);
-        t.start();
 
-        System.err.println("new Socket((String)null, port)");
-        final Socket s1 = new Socket((String) null, port);
-        checkError("new Socket((String)null, port)");
-        s1.close();
-        System.err.println("new Socket((String)null, port): PASSED");
+        try {
+            t.start();
 
-        System.err.println("new Socket(InetAddress.getByName(null), port)");
-        final Socket s2 = new Socket(InetAddress.getByName(null), port);
-        checkError("new Socket(InetAddress.getByName(null), port)");
-        s2.close();
-        System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
+            System.err.println("new Socket((String)null, port)");
+            final Socket s1 = new Socket((String) null, port);
+            checkError("new Socket((String)null, port)");
+            s1.close();
+            System.err.println("new Socket((String)null, port): PASSED");
 
-        System.err.println("new Socket(localhost, port)");
-        final Socket s3 = new Socket("localhost", port);
-        checkError("new Socket(localhost, port)");
-        s3.close();
-        System.err.println("new Socket(localhost, port): PASSED");
+            System.err.println("new Socket(InetAddress.getByName(null), port)");
+            final Socket s2 = new Socket(InetAddress.getByName(null), port);
+            checkError("new Socket(InetAddress.getByName(null), port)");
+            s2.close();
+            System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
 
-        System.err.println("new Socket(127.0.0.1, port)");
-        final Socket s4 = new Socket("127.0.0.1", port);
-        checkError("new Socket(127.0.0.1, port)");
-        s4.close();
-        System.err.println("new Socket(127.0.0.1, port): PASSED");
+            System.err.println("new Socket(localhost, port)");
+            final Socket s3 = new Socket("localhost", port);
+            checkError("new Socket(localhost, port)");
+            s3.close();
+            System.err.println("new Socket(localhost, port): PASSED");
 
+            System.err.println("new Socket(127.0.0.1, port)");
+            final Socket s4 = new Socket("127.0.0.1", port);
+            checkError("new Socket(127.0.0.1, port)");
+            s4.close();
+            System.err.println("new Socket(127.0.0.1, port): PASSED");
+        }
+        finally {
+            isRunning = false;
+            s.close();
+            t.join();
+        }
     }
 }