NodeIntrinsificationPhase getIntrinsifier() {
   if (intrinsifier == null) {
     HotSpotProviders providers = runtime.getHostProviders();
     intrinsifier = new NodeIntrinsificationPhase(providers, providers.getSnippetReflection());
   }
   return intrinsifier;
 }
  public Suites createSuites() {
    Suites ret = Suites.createDefaultSuites();

    if (ImmutableCode.getValue()) {
      // lowering introduces class constants, therefore it must be after lowering
      ret.getHighTier()
          .appendPhase(
              new LoadJavaMirrorWithKlassPhase(
                  runtime.getConfig().classMirrorOffset, runtime.getConfig().getOopEncoding()));
      if (VerifyPhases.getValue()) {
        ret.getHighTier().appendPhase(new AheadOfTimeVerificationPhase());
      }
    }

    ret.getMidTier().appendPhase(new WriteBarrierAdditionPhase(runtime.getConfig()));
    if (VerifyPhases.getValue()) {
      ret.getMidTier().appendPhase(new WriteBarrierVerificationPhase());
    }

    return ret;
  }
 MetaAccessProvider getMetaAccess() {
   return runtime.getHostProviders().getMetaAccess();
 }