< prev index next >

src/jdk.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/CodeCacheProvider.java

Print this page

        

*** 20,59 **** * or visit www.oracle.com if you need additional information or have any * questions. */ package jdk.vm.ci.code; ! import jdk.vm.ci.code.CompilationResult.*; ! import jdk.vm.ci.code.DataSection.*; ! import jdk.vm.ci.meta.*; /** * Access to code cache related details and requirements. */ public interface CodeCacheProvider { /** ! * Adds the given compilation result as an implementation of the given method without making it ! * the default implementation. * ! * @param method a method to which the executable code is begin added * @param compResult the compilation result to be added ! * @param speculationLog the speculation log to be used ! * @return a reference to the compiled and ready-to-run code or throws a ! * {@link BailoutException} if the code installation failed */ ! InstalledCode addMethod(ResolvedJavaMethod method, CompilationResult compResult, SpeculationLog speculationLog, InstalledCode predefinedInstalledCode); /** ! * Sets the given compilation result as the default implementation of the given method. * ! * @param method a method to which the executable code is begin added * @param compResult the compilation result to be added ! * @return a reference to the compiled and ready-to-run code or null if the code installation ! * failed */ ! InstalledCode setDefaultMethod(ResolvedJavaMethod method, CompilationResult compResult); /** * Gets a name for a {@link Mark} mark. */ default String getMarkName(Mark mark) { --- 20,100 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package jdk.vm.ci.code; ! import jdk.vm.ci.code.CompilationResult.Call; ! import jdk.vm.ci.code.CompilationResult.DataPatch; ! import jdk.vm.ci.code.CompilationResult.Mark; ! import jdk.vm.ci.code.DataSection.Data; ! import jdk.vm.ci.meta.Constant; ! import jdk.vm.ci.meta.JavaConstant; ! import jdk.vm.ci.meta.ResolvedJavaMethod; ! import jdk.vm.ci.meta.SpeculationLog; /** * Access to code cache related details and requirements. */ public interface CodeCacheProvider { /** ! * Installs code for a given method based on a given compilation result without making it the ! * default implementation of the method. * ! * @param method a method implemented by the installed code * @param compResult the compilation result to be added ! * @param log the speculation log to be used ! * @param installedCode a predefined {@link InstalledCode} object to use as a reference to the ! * installed code. If {@code null}, a new {@link InstalledCode} object will be ! * created. ! * @return a reference to the ready-to-run code ! * @throws BailoutException if the code installation failed */ ! default InstalledCode addCode(ResolvedJavaMethod method, CompilationResult compResult, SpeculationLog log, InstalledCode installedCode) { ! return installCode(new CompilationRequest(method), compResult, installedCode, log, false); ! } ! ! /** ! * Installs code for a given method based on a given compilation result and makes it the default ! * implementation of the method. ! * ! * @param method a method implemented by the installed code and for which the installed code ! * becomes the default implementation ! * @param compResult the compilation result to be added ! * @return a reference to the ready-to-run code ! * @throws BailoutException if the code installation failed ! */ ! default InstalledCode setDefaultCode(ResolvedJavaMethod method, CompilationResult compResult) { ! return installCode(new CompilationRequest(method), compResult, null, null, true); ! } /** ! * Installs code based on a given compilation result. * ! * @param compRequest details of the method compiled to produce {@code compResult} or ! * {@code null} if the input to {@code compResult} was not a ! * {@link ResolvedJavaMethod} * @param compResult the compilation result to be added ! * @param installedCode a pre-allocated {@link InstalledCode} object to use as a reference to ! * the installed code. If {@code null}, a new {@link InstalledCode} object will be ! * created. ! * @param log the speculation log to be used ! * @param isDefault specifies if the installed code should be made the default implementation of ! * {@code compRequest.getMethod()}. The default implementation for a method is the ! * code executed for standard calls to the method. This argument is ignored if ! * {@code compRequest == null}. ! * @return a reference to the compiled and ready-to-run installed code ! * @throws BailoutException if the code installation failed ! */ ! InstalledCode installCode(CompilationRequest compRequest, CompilationResult compResult, InstalledCode installedCode, SpeculationLog log, boolean isDefault); ! ! /** ! * Invalidates {@code installedCode} such that {@link InvalidInstalledCodeException} will be ! * raised the next time {@code installedCode} is ! * {@linkplain InstalledCode#executeVarargs(Object...) executed}. */ ! void invalidateInstalledCode(InstalledCode installedCode); /** * Gets a name for a {@link Mark} mark. */ default String getMarkName(Mark mark) {
*** 100,105 **** --- 141,158 ---- /** * Create a new speculation log for the target runtime. */ SpeculationLog createSpeculationLog(); + + /** + * Returns the maximum absolute offset of a PC relative call to a given address from any + * position in the code cache or -1 when not applicable. Intended for determining the required + * size of address/offset fields. + */ + long getMaxCallTargetOffset(long address); + + /** + * Determines if debug info should also be emitted at non-safepoint locations. + */ + boolean shouldDebugNonSafepoints(); }
< prev index next >