private static VM_Address slowPath1(int size) throws OutOfMemoryError, VM_PragmaInline  {
private static VM_Address slowPath1(int size) throws OutOfMemoryError, VM_PragmaNoInline  {
  private static VM_Address slowPath1(int size) throws OutOfMemoryError, VM_PragmaInline  {    // Detect Java-level allocations during GC or while GC disabled     // and trap as a fatal error.    if (VM.VerifyAssertions) {      VM_Thread t = VM_Thread.getCurrentThread();      VM.assert(!VM_Allocator.gcInProgress);      VM.assert(!t.disallowAllocationsByThisThread);    }    // Try to get a chunk from the backing heap.    int count = 0;    while (true) {      VM_Processor st = VM_Processor.getCurrentProcessor();      VM_Address oldCurrent = st.currentChunk1;      VM_Address newCurrent = oldCurrent.add(size);      if (newCurrent.LE(st.endChunk1)) {	st.currentChunk1 = newCurrent;	// if the backing heap didn't zero the chunk when it gave it to	// us, then we must zero it now.	if (!ZERO_CHUNKS_ON_ALLOCATION) VM_Memory.zeroTemp(oldCurrent, size);	return oldCurrent;      }      VM_Address chunk = st.backingHeapChunk1.allocateRawMemory(CHUNK_SIZE);      if (!chunk.isZero()) {	// Normal case; we successfully got a chunk.  	// Update our data structures and allocate size bytes from it	if (ZERO_CHUNKS_ON_ALLOCATION) VM_Memory.zeroPages(chunk, CHUNK_SIZE);	st.startChunk1 = chunk;	st.currentChunk1 = chunk.add(size);	st.endChunk1 = chunk.add(CHUNK_SIZE);	return chunk;      }      // Backing heap exhausted; let the allocator attempt      // to do something (usual some kind of GC) to handle the situation.        // Then back to the top of the loop to try again.      VM_Allocator.heapExhausted(st.backingHeapChunk1, size, count++);    }  }