Mercurial > hg > truffle
comparison src/share/vm/runtime/synchronizer.cpp @ 10408:836a62f43af9
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 19 Jun 2013 10:45:56 +0200 |
parents | 89e4d67fdd2a f2110083203d |
children | cefad50507d8 |
comparison
equal
deleted
inserted
replaced
10086:e0fb8a213650 | 10408:836a62f43af9 |
---|---|
211 TEVENT (fast_exit: release stacklock) ; | 211 TEVENT (fast_exit: release stacklock) ; |
212 return; | 212 return; |
213 } | 213 } |
214 } | 214 } |
215 | 215 |
216 ObjectSynchronizer::inflate(THREAD, object)->exit (THREAD) ; | 216 ObjectSynchronizer::inflate(THREAD, object)->exit (true, THREAD) ; |
217 } | 217 } |
218 | 218 |
219 // ----------------------------------------------------------------------------- | 219 // ----------------------------------------------------------------------------- |
220 // Interpreter/Compiler Slow Case | 220 // Interpreter/Compiler Slow Case |
221 // This routine is used to handle interpreter/compiler slow case | 221 // This routine is used to handle interpreter/compiler slow case |
341 | 341 |
342 ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj); | 342 ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj); |
343 // If this thread has locked the object, exit the monitor. Note: can't use | 343 // If this thread has locked the object, exit the monitor. Note: can't use |
344 // monitor->check(CHECK); must exit even if an exception is pending. | 344 // monitor->check(CHECK); must exit even if an exception is pending. |
345 if (monitor->check(THREAD)) { | 345 if (monitor->check(THREAD)) { |
346 monitor->exit(THREAD); | 346 monitor->exit(true, THREAD); |
347 } | 347 } |
348 } | 348 } |
349 | 349 |
350 // ----------------------------------------------------------------------------- | 350 // ----------------------------------------------------------------------------- |
351 // Internal VM locks on java objects | 351 // Internal VM locks on java objects |
1016 | 1016 |
1017 // NOTE: (almost) no way to recover if allocation failed. | 1017 // NOTE: (almost) no way to recover if allocation failed. |
1018 // We might be able to induce a STW safepoint and scavenge enough | 1018 // We might be able to induce a STW safepoint and scavenge enough |
1019 // objectMonitors to permit progress. | 1019 // objectMonitors to permit progress. |
1020 if (temp == NULL) { | 1020 if (temp == NULL) { |
1021 vm_exit_out_of_memory (sizeof (ObjectMonitor[_BLOCKSIZE]), "Allocate ObjectMonitors") ; | 1021 vm_exit_out_of_memory (sizeof (ObjectMonitor[_BLOCKSIZE]), OOM_MALLOC_ERROR, |
1022 "Allocate ObjectMonitors"); | |
1022 } | 1023 } |
1023 | 1024 |
1024 // Format the block. | 1025 // Format the block. |
1025 // initialize the linked list, each monitor points to its next | 1026 // initialize the linked list, each monitor points to its next |
1026 // forming the single linked free list, the very first monitor | 1027 // forming the single linked free list, the very first monitor |