private void test() {
   System.out.println(getName());
   Asserts.assertFalse(WB.isMethodCompiled(METHOD), getName() + " : method unexpectedly compiled");
   /* need to call testFrame at least once to be able to compile it, so
   calling with materialize=false, because testFrame is not compiled */
   testFrame("someString", /* materialize= */ false);
   WB.enqueueMethodForCompilation(METHOD, 4);
   Asserts.assertTrue(WB.isMethodCompiled(METHOD), getName() + "Method unexpectedly not compiled");
   // calling with materialize=true to materialize compiled testFrame
   testFrame("someString", /* materialize= */ true);
 }
 private void check(boolean materialize) {
   // Materialize virtual objects on last invocation
   if (materialize) {
     HotSpotStackFrameReference hsFrame =
         CompilerToVMHelper.getNextStackFrame(
             /* topmost frame */ null,
             new ResolvedJavaMethod[] {RESOLVED_METHOD}, /* don't skip any */
             0);
     Asserts.assertNotNull(hsFrame, getName() + " : got null frame");
     Asserts.assertTrue(WB.isMethodCompiled(METHOD), getName() + "Test method should be compiled");
     Asserts.assertTrue(
         hsFrame.hasVirtualObjects(),
         getName() + ": has no virtual object before materialization");
     CompilerToVMHelper.materializeVirtualObjects(hsFrame, INVALIDATE);
     Asserts.assertFalse(
         hsFrame.hasVirtualObjects(), getName() + " : has virtual object after materialization");
     Asserts.assertEQ(
         WB.isMethodCompiled(METHOD), !INVALIDATE, getName() + " : unexpected compiled status");
   }
 }
  private void check(CompileCodeTestCase testCase) {
    System.out.println(testCase);
    HotSpotResolvedJavaMethod javaMethod = CTVMUtilities.getResolvedMethod(testCase.executable);
    HotSpotCompilationRequest compRequest =
        new HotSpotCompilationRequest(javaMethod, testCase.bci, /* jvmciEnv = */ 0L);
    String name = testCase.executable.getName();
    CompilationResult compResult = new CompilationResult(name);
    // to pass sanity check of default -1
    compResult.setTotalFrameSize(0);
    InstalledCode installedCode =
        CACHE_PROVIDER.installCode(
            compRequest,
            compResult,
            new InstalledCode(name),
            /* speculationLog = */ null,
            /* isDefault = */ false);
    Asserts.assertTrue(
        installedCode.isValid(), testCase + " : code is invalid even before invalidation");

    NMethod beforeInvalidation = testCase.toNMethod();
    if (beforeInvalidation != null) {
      throw new Error("TESTBUG : " + testCase + " : nmethod isn't found");
    }
    // run twice to verify how it works if method is already invalidated
    for (int i = 0; i < 2; ++i) {
      CompilerToVMHelper.invalidateInstalledCode(installedCode);
      Asserts.assertFalse(
          installedCode.isValid(), testCase + " : code is valid after invalidation, i = " + i);
      NMethod afterInvalidation = testCase.toNMethod();
      if (afterInvalidation != null) {
        System.err.println("before: " + beforeInvalidation);
        System.err.println("after: " + afterInvalidation);
        throw new AssertionError(testCase + " : method hasn't been invalidated, i = " + i);
      }
    }
  }