diff options
author | jfrijters <jfrijters> | 2007-06-29 12:48:22 +0400 |
---|---|---|
committer | jfrijters <jfrijters> | 2007-06-29 12:48:22 +0400 |
commit | 42d9acd3330b1fa0dfc9b30daf0be176f3dc2dd4 (patch) | |
tree | 096ac4ac389c675b3787155e91beec376b09bb65 /openjdk/map.xml | |
parent | 506e7a658426d3c9e13ec4414c9285690f7f25c1 (diff) |
- Imported a modified version of AbstractQueuedSynchronizer that is more efficient and doesn't use reflection & unsafe to reduce initialization order dependencies.
- Changed unsafe to use more efficient internal helper class to copy Field and make it accessible (this also reduces initialization order dependencies).
Diffstat (limited to 'openjdk/map.xml')
-rw-r--r-- | openjdk/map.xml | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/openjdk/map.xml b/openjdk/map.xml index 604a6632..20c757ce 100644 --- a/openjdk/map.xml +++ b/openjdk/map.xml @@ -1202,6 +1202,56 @@ </body> </method> </class> + <class name="java.util.concurrent.locks.AbstractQueuedSynchronizer"> + <method name="compareAndSetState" sig="(II)Z"> + <body> + <ldarg_0 /> + <ldflda class="java.util.concurrent.locks.AbstractQueuedSynchronizer" name="state" sig="I" /> + <ldarg_2 /> + <ldarg_1 /> + <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Int32&;System.Int32;System.Int32" /> + <ldarg_1 /> + <ceq /> + <ret /> + </body> + </method> + <method name="compareAndSetHead" sig="(Ljava.util.concurrent.locks.AbstractQueuedSynchronizer$Node;)Z"> + <body> + <ldarg_0 /> + <ldflda class="java.util.concurrent.locks.AbstractQueuedSynchronizer" name="head" sig="Ljava.lang.Object;" /> + <ldarg_1 /> + <ldnull /> + <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Object&;System.Object;System.Object" /> + <ldnull /> + <ceq /> + <ret /> + </body> + </method> + <method name="compareAndSetTail" sig="(Ljava.util.concurrent.locks.AbstractQueuedSynchronizer$Node;Ljava.util.concurrent.locks.AbstractQueuedSynchronizer$Node;)Z"> + <body> + <ldarg_0 /> + <ldflda class="java.util.concurrent.locks.AbstractQueuedSynchronizer" name="tail" sig="Ljava.lang.Object;" /> + <ldarg_2 /> + <ldarg_1 /> + <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Object&;System.Object;System.Object" /> + <ldarg_1 /> + <ceq /> + <ret /> + </body> + </method> + <method name="compareAndSetWaitStatus" sig="(Ljava.util.concurrent.locks.AbstractQueuedSynchronizer$Node;II)Z"> + <body> + <ldarg_0 /> + <ldflda class="java.util.concurrent.locks.AbstractQueuedSynchronizer$Node" name="waitStatus" sig="I" /> + <ldarg_2 /> + <ldarg_1 /> + <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Int32&;System.Int32;System.Int32" /> + <ldarg_1 /> + <ceq /> + <ret /> + </body> + </method> + </class> <class name="java.util.concurrent.locks.LockSupport"> <method name="cmpxchgParkState" sig="(Ljava.lang.Thread;II)I"> <body> |