final synchronized INSTRUCTION[] compile() {
final synchronized void compile() {
  final synchronized INSTRUCTION[] compile() {    if (VM.VerifyAssertions) VM.assert(isLoaded());    if (isCompiled())      return mostRecentlyGeneratedInstructions;    if (VM.BuildForEventLogging && VM.EventLoggingEnabled) VM_EventLogger.logCompilationEvent();    if (VM.VerifyAssertions)   VM.assert(declaringClass.isResolved());    if (VM.TraceClassLoading && VM.runningVM)  VM.sysWrite("VM_Method: (begin) compiling " + this + "\n");    if (isAbstract())      mostRecentlyGeneratedInstructions = getUnexpectedAbstractMethodInstructions();    else if (isNative()             && !resolveNativeMethod()            )      // if fail to resolve native, get code to throw unsatifiedLinkError      mostRecentlyGeneratedInstructions = getUnexpectedNativeMethodInstructions();    else    {      // generate machine code      //      VM_CompiledMethod compiledMethod;      if (VM.writingBootImage)        compiledMethod = VM_BootImageCompiler.compile(this); // use compiler specified by RVM_BOOT_IMAGE_COMPILER_PATH      else if (VM.runningVM)        compiledMethod = VM_RuntimeCompiler.compile(this);   // use compiler specified by RVM_RUNTIME_COMPILER_PATH      else        compiledMethod = VM_BaselineCompiler.compile(this);  // use baseline compiler (assumption: we're producing information for debugger)      // save it away      //      VM_CompiledMethods.setCompiledMethod(compiledMethod.getId(), compiledMethod);      mostRecentlyGeneratedInstructions = compiledMethod.getInstructions();      mostRecentlyGeneratedCompiledMethod = compiledMethod;    }    if (VM.TraceClassLoading && VM.runningVM)  VM.sysWrite("VM_Method: (end)   compiling " + this + "\n");    return mostRecentlyGeneratedInstructions;  }