protected SnippetReflectionProvider createSnippetReflectionProvider() { return new SubstrateSnippetReflectionProvider(getWordTypes()); }
@Override public <T> T asObject(Class<T> type, JavaConstant constant) { if ((type == Class.class || type == Object.class) && constant instanceof SubstrateObjectConstant) { Object objectValue = SubstrateObjectConstant.asObject(constant); if (objectValue instanceof DynamicHub) { return type.cast(interceptClass((DynamicHub) objectValue)); } } return super.asObject(type, constant); }
@Override public JavaConstant forObject(Object object) { if (object instanceof WordBase) { return JavaConstant.forIntegerKind(FrameAccess.getWordKind(), ((WordBase) object).rawValue()); } return super.forObject(object); }
private static AnalysisUniverse setupAnalysisUniverse(OptionValues options, HostVM hostVM, TargetDescription target, Platform platform, SnippetReflectionProvider originalSnippetReflection, MetaAccessProvider originalMetaAccess, SubstitutionProcessor substitutions) { AnalysisPolicy analysisPolicy = PointstoOptions.AllocationSiteSensitiveHeap.getValue(options) ? new AllocationSiteSensitiveAnalysisPolicy(options) : new ContextInsensitiveAnalysisPolicy(options); return new AnalysisUniverse(hostVM, target.wordJavaKind, platform, analysisPolicy, substitutions, originalMetaAccess, originalSnippetReflection, new SubstrateSnippetReflectionProvider(new WordTypes(originalMetaAccess, FrameAccess.getWordKind()))); }