355 * The behavior of this method is undefined if {@code ccpi} is an invalid constant pool cache
356 * index.
357 */
358 native int constantPoolRemapInstructionOperandFromCache(HotSpotConstantPool constantPool, int cpci);
359
360 /**
361 * Gets the appendix object (if any) associated with the entry at index {@code cpi} in
362 * {@code constantPool}.
363 */
364 native HotSpotObjectConstantImpl lookupAppendixInPool(HotSpotConstantPool constantPool, int cpi);
365
366 /**
367 * Installs the result of a compilation into the code cache.
368 *
369 * @param target the target where this code should be installed
370 * @param compiledCode the result of a compilation
371 * @param code the details of the installed CodeBlob are written to this object
372 * @return the outcome of the installation which will be one of
373 * {@link HotSpotVMConfig#codeInstallResultOk},
374 * {@link HotSpotVMConfig#codeInstallResultCacheFull},
375 * {@link HotSpotVMConfig#codeInstallResultCodeTooLarge},
376 * {@link HotSpotVMConfig#codeInstallResultDependenciesFailed} or
377 * {@link HotSpotVMConfig#codeInstallResultDependenciesInvalid}.
378 * @throws JVMCIError if there is something wrong with the compiled code or the associated
379 * metadata.
380 */
381 native int installCode(TargetDescription target, HotSpotCompiledCode compiledCode, InstalledCode code, long failedSpeculationsAddress, byte[] speculations);
382
383 /**
384 * Generates the VM metadata for some compiled code and copies them into {@code metaData}. This
385 * method does not install anything into the code cache.
386 *
387 * @param target the target where this code would be installed
388 * @param compiledCode the result of a compilation
389 * @param metaData the metadata is written to this object
390 * @return the outcome of the installation which will be one of
391 * {@link HotSpotVMConfig#codeInstallResultOk},
392 * {@link HotSpotVMConfig#codeInstallResultCacheFull},
393 * {@link HotSpotVMConfig#codeInstallResultCodeTooLarge},
394 * {@link HotSpotVMConfig#codeInstallResultDependenciesFailed} or
395 * {@link HotSpotVMConfig#codeInstallResultDependenciesInvalid}.
396 * @throws JVMCIError if there is something wrong with the compiled code or the metadata
397 */
398 native int getMetadata(TargetDescription target, HotSpotCompiledCode compiledCode, HotSpotMetaData metaData);
399
400 /**
401 * Resets all compilation statistics.
402 */
403 native void resetCompilationStatistics();
404
405 /**
406 * Reads the database of VM info. The return value encodes the info in a nested object array
407 * that is described by the pseudo Java object {@code info} below:
408 *
409 * <pre>
410 * info = [
411 * VMField[] vmFields,
412 * [String name, Long size, ...] vmTypeSizes,
413 * [String name, Long value, ...] vmConstants,
414 * [String name, Long value, ...] vmAddresses,
415 * VMFlag[] vmFlags
|
355 * The behavior of this method is undefined if {@code ccpi} is an invalid constant pool cache
356 * index.
357 */
358 native int constantPoolRemapInstructionOperandFromCache(HotSpotConstantPool constantPool, int cpci);
359
360 /**
361 * Gets the appendix object (if any) associated with the entry at index {@code cpi} in
362 * {@code constantPool}.
363 */
364 native HotSpotObjectConstantImpl lookupAppendixInPool(HotSpotConstantPool constantPool, int cpi);
365
366 /**
367 * Installs the result of a compilation into the code cache.
368 *
369 * @param target the target where this code should be installed
370 * @param compiledCode the result of a compilation
371 * @param code the details of the installed CodeBlob are written to this object
372 * @return the outcome of the installation which will be one of
373 * {@link HotSpotVMConfig#codeInstallResultOk},
374 * {@link HotSpotVMConfig#codeInstallResultCacheFull},
375 * {@link HotSpotVMConfig#codeInstallResultCodeTooLarge} or
376 * {@link HotSpotVMConfig#codeInstallResultDependenciesFailed}.
377 * @throws JVMCIError if there is something wrong with the compiled code or the associated
378 * metadata.
379 */
380 native int installCode(TargetDescription target, HotSpotCompiledCode compiledCode, InstalledCode code, long failedSpeculationsAddress, byte[] speculations);
381
382 /**
383 * Generates the VM metadata for some compiled code and copies them into {@code metaData}. This
384 * method does not install anything into the code cache.
385 *
386 * @param target the target where this code would be installed
387 * @param compiledCode the result of a compilation
388 * @param metaData the metadata is written to this object
389 * @return the outcome of the installation which will be one of
390 * {@link HotSpotVMConfig#codeInstallResultOk},
391 * {@link HotSpotVMConfig#codeInstallResultCacheFull},
392 * {@link HotSpotVMConfig#codeInstallResultCodeTooLarge} or
393 * {@link HotSpotVMConfig#codeInstallResultDependenciesFailed}.
394 * @throws JVMCIError if there is something wrong with the compiled code or the metadata
395 */
396 native int getMetadata(TargetDescription target, HotSpotCompiledCode compiledCode, HotSpotMetaData metaData);
397
398 /**
399 * Resets all compilation statistics.
400 */
401 native void resetCompilationStatistics();
402
403 /**
404 * Reads the database of VM info. The return value encodes the info in a nested object array
405 * that is described by the pseudo Java object {@code info} below:
406 *
407 * <pre>
408 * info = [
409 * VMField[] vmFields,
410 * [String name, Long size, ...] vmTypeSizes,
411 * [String name, Long value, ...] vmConstants,
412 * [String name, Long value, ...] vmAddresses,
413 * VMFlag[] vmFlags
|