VM.sysWrite(" ip = ");                    VM.sysWrite(ip);	VM.sysWrite(".\n");
VM.sysWrite(" ip = ");                    VM.sysWrite(ip); VM.sysWrite("\n");
    static void scanStack(VM_Thread t) {	int stack_ref_count = 0;	// start stack processing at frame of caller of allocate	// (could start at allocateScalar or allocateArray, to capture the passed	// in TIB ptr...but assume for now that this TIB will be found by some	// other path)	int fp = t.contextRegisters.gprs[FRAME_POINTER];	int ip = VM_Magic.getNextInstructionAddress(fp);	// get the iterator from our VM_CollectorThread object	VM_CollectorThread collector = VM_Magic.threadAsCollectorThread(VM_Thread.getCurrentThread());	VM_GCMapIteratorGroup iteratorGroup = collector.iteratorGroup;	iteratorGroup.newStackWalk(t);	if (VM_Allocator.GC_TRACEALLOCATOR || GC_TRACESCANSTACK) { 	    VM.sysWrite("||||    scanStack for thread ");	    VM.sysWrite(t.getIndex(),false);	    if (t.isIdleThread) VM.sysWrite(" (idleThread)");	    VM.sysWrite("\n");	}	int prevFp = 0;	// start scan using fp & ip in threads saved context registers	ip = t.contextRegisters.getInnermostInstructionAddress();	fp = t.contextRegisters.getInnermostFramePointer();	// At start of loop:	//   fp -> frame for method invocation being processed	//   ip -> instruction pointer in the method (normally a call site)	while (VM_Magic.getCallerFramePointer(fp) != STACKFRAME_SENTINAL_FP) {	    if (GC_TRACESCANSTACK) {		VM.sysWrite("----- FRAME ----- fp = ");   VM.sysWrite(fp);		VM.sysWrite(" ip = ");                    VM.sysWrite(ip);	VM.sysWrite(".\n");	    }             int compiledMethodId = VM_Magic.getCompiledMethodID(fp);	    if (compiledMethodId != INVISIBLE_METHOD_ID) {		// Scan the stack frame and add refs to the stack buffer		int refs = scanStackFrame(fp, ip, compiledMethodId, iteratorGroup, t);		if (GC_TRACESCANSTACK) stack_ref_count += refs; 	    }	    else {               // Assembler frame: no corresponding VM_Method               if (GC_TRACESCANSTACK) VM_Scheduler.trace("----- METHOD -----", "INVISIBLE_METHOD_ID");            }	    // Position fp & ip for next frame to be processed	    prevFp = fp;	    ip = VM_Magic.getReturnAddress(fp);	    fp = VM_Magic.getCallerFramePointer(fp);	}	if (GC_TRACESCANSTACK) {	    VM.sysWrite("||||    scanStack: end of stack.  stack_ref_count = ");	    VM.sysWrite(stack_ref_count);	    VM.sysWrite(".\n");	}    }