[Swift-commit] r3685 - trunk/src/org/griphyn/vdl/karajan/lib

noreply at svn.ci.uchicago.edu noreply at svn.ci.uchicago.edu
Sun Oct 17 21:46:15 CDT 2010


Author: hategan
Date: 2010-10-17 21:46:15 -0500 (Sun, 17 Oct 2010)
New Revision: 3685

Modified:
   trunk/src/org/griphyn/vdl/karajan/lib/SetFieldValue.java
Log:
attempt to fix deadlock

Modified: trunk/src/org/griphyn/vdl/karajan/lib/SetFieldValue.java
===================================================================
--- trunk/src/org/griphyn/vdl/karajan/lib/SetFieldValue.java	2010-10-17 19:44:22 UTC (rev 3684)
+++ trunk/src/org/griphyn/vdl/karajan/lib/SetFieldValue.java	2010-10-18 02:46:15 UTC (rev 3685)
@@ -33,22 +33,24 @@
 			
 			log(leaf, value);
 			    
-			synchronized (var.getRoot()) {
             // TODO want to do a type check here, for runtime type checking
             // and pull out the appropriate internal value from value if it
             // is a DSHandle. There is no need (I think? maybe numerical casting?)
             // for type conversion here; but would be useful to have
             // type checking.
-				synchronized (value.getRoot()) {
-					if (!value.isClosed()) {
-						throw new FutureNotYetAvailable(addFutureListener(stack, value));
-					}
-					deepCopy(leaf, value, stack);
+			synchronized (value.getRoot()) {
+				if (!value.isClosed()) {
+					throw new FutureNotYetAvailable(addFutureListener(stack, value));
 				}
+			}
+			synchronized (var.getRoot()) {
+				deepCopy(leaf, value, stack);
+				
 				if (var.getParent() != null && var.getParent().getType().isArray()) {
 				    markAsAvailable(stack, leaf.getParent(), leaf.getPathFromRoot().getLast());
 				}
 			}
+			
 			return null;
 		}
 		catch (FutureNotYetAvailable fnya) {




More information about the Swift-commit mailing list