426 @Override
427 public double getBranchTakenProbability(HotSpotMethodData data, int position) {
428 return getExecutionCount(data, position) != 0 ? 1 : 0;
429 }
430
431 @Override
432 public int getExecutionCount(HotSpotMethodData data, int position) {
433 return data.readUnsignedIntAsSignedInt(position, state.takenCountOffset);
434 }
435
436 public int getTakenDisplacement(HotSpotMethodData data, int position) {
437 return data.readInt(position, state.takenDisplacementOffset);
438 }
439
440 @Override
441 public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
442 return sb.append(format("taken(%d) displacement(%d)", getExecutionCount(data, pos), getTakenDisplacement(data, pos)));
443 }
444 }
445
446 static class RawItemProfile<T> {
447 final int entries;
448 final T[] items;
449 final long[] counts;
450 final long totalCount;
451
452 RawItemProfile(int entries, T[] items, long[] counts, long totalCount) {
453 this.entries = entries;
454 this.items = items;
455 this.counts = counts;
456 this.totalCount = totalCount;
457 }
458 }
459
460 abstract static class AbstractTypeData extends CounterData {
461
462 protected AbstractTypeData(VMState state, int tag, int staticSize) {
463 super(state, tag, staticSize);
464 }
465
466 @Override
467 public JavaTypeProfile getTypeProfile(HotSpotMethodData data, int position) {
468 return createTypeProfile(getNullSeen(data, position), getRawTypeProfile(data, position));
469 }
470
471 private RawItemProfile<ResolvedJavaType> getRawTypeProfile(HotSpotMethodData data, int position) {
472 int typeProfileWidth = config.typeProfileWidth;
473
474 ResolvedJavaType[] types = new ResolvedJavaType[typeProfileWidth];
475 long[] counts = new long[typeProfileWidth];
476 long totalCount = 0;
477 int entries = 0;
478
|
426 @Override
427 public double getBranchTakenProbability(HotSpotMethodData data, int position) {
428 return getExecutionCount(data, position) != 0 ? 1 : 0;
429 }
430
431 @Override
432 public int getExecutionCount(HotSpotMethodData data, int position) {
433 return data.readUnsignedIntAsSignedInt(position, state.takenCountOffset);
434 }
435
436 public int getTakenDisplacement(HotSpotMethodData data, int position) {
437 return data.readInt(position, state.takenDisplacementOffset);
438 }
439
440 @Override
441 public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
442 return sb.append(format("taken(%d) displacement(%d)", getExecutionCount(data, pos), getTakenDisplacement(data, pos)));
443 }
444 }
445
446 record RawItemProfile<T>(int entries, T[] items, long[] counts, long totalCount) {}
447
448 abstract static class AbstractTypeData extends CounterData {
449
450 protected AbstractTypeData(VMState state, int tag, int staticSize) {
451 super(state, tag, staticSize);
452 }
453
454 @Override
455 public JavaTypeProfile getTypeProfile(HotSpotMethodData data, int position) {
456 return createTypeProfile(getNullSeen(data, position), getRawTypeProfile(data, position));
457 }
458
459 private RawItemProfile<ResolvedJavaType> getRawTypeProfile(HotSpotMethodData data, int position) {
460 int typeProfileWidth = config.typeProfileWidth;
461
462 ResolvedJavaType[] types = new ResolvedJavaType[typeProfileWidth];
463 long[] counts = new long[typeProfileWidth];
464 long totalCount = 0;
465 int entries = 0;
466
|