1010 |
1010 |
1011 // 3: allocate a block of new ObjectMonitors |
1011 // 3: allocate a block of new ObjectMonitors |
1012 // Both the local and global free lists are empty -- resort to malloc(). |
1012 // Both the local and global free lists are empty -- resort to malloc(). |
1013 // In the current implementation objectMonitors are TSM - immortal. |
1013 // In the current implementation objectMonitors are TSM - immortal. |
1014 assert (_BLOCKSIZE > 1, "invariant") ; |
1014 assert (_BLOCKSIZE > 1, "invariant") ; |
1015 ObjectMonitor * temp; |
1015 ObjectMonitor * temp = new ObjectMonitor[_BLOCKSIZE]; |
1016 NEW_C_HEAP_OBJECT_ARRAY(temp, ObjectMonitor, _BLOCKSIZE, mtInternal, 0, AllocFailStrategy::RETURN_NULL); |
|
1017 |
1016 |
1018 // NOTE: (almost) no way to recover if allocation failed. |
1017 // NOTE: (almost) no way to recover if allocation failed. |
1019 // 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 |
1020 // objectMonitors to permit progress. |
1019 // objectMonitors to permit progress. |
1021 if (temp == NULL) { |
1020 if (temp == NULL) { |