comparison jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java @ 23996:11f0412408cd

8173912: [JVMCI] fix memory overhead of JVMCI
author Doug Simon <doug.simon@oracle.com>
date Fri, 03 Feb 2017 21:08:05 +0100
parents ebce30b702eb
children 26a414946c56
comparison
equal deleted inserted replaced
23995:988dc143e0bf 23996:11f0412408cd
337 * VMField[] vmFields, 337 * VMField[] vmFields,
338 * [String name, Long size, ...] vmTypeSizes, 338 * [String name, Long size, ...] vmTypeSizes,
339 * [String name, Long value, ...] vmConstants, 339 * [String name, Long value, ...] vmConstants,
340 * [String name, Long value, ...] vmAddresses, 340 * [String name, Long value, ...] vmAddresses,
341 * VMFlag[] vmFlags 341 * VMFlag[] vmFlags
342 * VMIntrinsicMethod[] vmIntrinsics
342 * ] 343 * ]
343 * </pre> 344 * </pre>
344 * 345 *
345 * @return VM info as encoded above 346 * @return VM info as encoded above
346 */ 347 */
492 493
493 /** 494 /**
494 * Gets the value of {@code metaspaceSymbol} as a String. 495 * Gets the value of {@code metaspaceSymbol} as a String.
495 */ 496 */
496 native String getSymbol(long metaspaceSymbol); 497 native String getSymbol(long metaspaceSymbol);
497
498 /**
499 * Gets the name of the field at index {@code index} in the fields array of {@code type}.
500 *
501 * @throws ArrayIndexOutOfBoundsException if {@code index} is out of bounds of the fields array
502 */
503 native String getFieldName(HotSpotResolvedObjectTypeImpl holder, int index);
504
505 /**
506 * Gets the name of {@code method}.
507 */
508 native String getMethodName(HotSpotResolvedJavaMethodImpl method);
509 498
510 /** 499 /**
511 * Looks for the next Java stack frame matching an entry in {@code methods}. 500 * Looks for the next Java stack frame matching an entry in {@code methods}.
512 * 501 *
513 * @param frame the starting point of the search, where {@code null} refers to the topmost frame 502 * @param frame the starting point of the search, where {@code null} refers to the topmost frame
615 * @throws IllegalArgumentException if an out of range position is given 604 * @throws IllegalArgumentException if an out of range position is given
616 */ 605 */
617 native int methodDataProfileDataSize(long metaspaceMethodData, int position); 606 native int methodDataProfileDataSize(long metaspaceMethodData, int position);
618 607
619 /** 608 /**
620 * Invokes non-public method {@code java.lang.invoke.LambdaForm.compileToBytecode()} on
621 * {@code lambdaForm} (which must be a {@code java.lang.invoke.LambdaForm} instance).
622 */
623 native void compileToBytecode(Object lambdaForm);
624
625 /**
626 * Return the amount of native stack required for the interpreter frames represented by 609 * Return the amount of native stack required for the interpreter frames represented by
627 * {@code frame}. This is used when emitting the stack banging code to ensure that there is 610 * {@code frame}. This is used when emitting the stack banging code to ensure that there is
628 * enough space for the frames during deoptimization. 611 * enough space for the frames during deoptimization.
629 * 612 *
630 * @param frame 613 * @param frame
631 * @return the number of bytes required for deoptimization of this frame state 614 * @return the number of bytes required for deoptimization of this frame state
632 */ 615 */
633 native int interpreterFrameSize(BytecodeFrame frame); 616 native int interpreterFrameSize(BytecodeFrame frame);
634 617
635 /** 618 /**
636 * Gets the value of the VM flag named {@code name} boxed in an Object. 619 * Invokes non-public method {@code java.lang.invoke.LambdaForm.compileToBytecode()} on
620 * {@code lambdaForm} (which must be a {@code java.lang.invoke.LambdaForm} instance).
621 */
622 native void compileToBytecode(Object lambdaForm);
623
624 /**
625 * Gets the value of the VM flag named {@code name}.
637 * 626 *
638 * @param name name of a VM option 627 * @param name name of a VM option
639 * @return {@code null} if the named VM option doesn't exist 628 * @return {@code this} if the named VM option doesn't exist, a {@link String} or {@code null}
629 * if its type is {@code ccstr} or {@code ccstrlist}, a {@link Double} if its type is
630 * {@code double}, a {@link Boolean} if its type is {@code bool} otherwise a
631 * {@link Long}
640 */ 632 */
641 native Object getFlagValue(String name); 633 native Object getFlagValue(String name);
642 } 634 }