本文整理汇总了Java中jdk.vm.ci.meta.InvokeTarget类的典型用法代码示例。如果您正苦于以下问题:Java InvokeTarget类的具体用法?Java InvokeTarget怎么用?Java InvokeTarget使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
InvokeTarget类属于jdk.vm.ci.meta包,在下文中一共展示了InvokeTarget类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: directCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void directCall(CompilationResultBuilder crb, AArch64MacroAssembler masm, InvokeTarget callTarget, Register scratch, LIRFrameState info, Label label) {
int before = masm.position();
if (scratch != null) {
/*
* Offset might not fit into a 28-bit immediate, generate an indirect call with a 64-bit
* immediate address which is fixed up by HotSpot.
*/
masm.movNativeAddress(scratch, 0L);
masm.blr(scratch);
} else {
// Address is fixed up by HotSpot.
masm.bl(0);
}
if (label != null) {
// We need this label to be the return address.
masm.bind(label);
}
int after = masm.position();
crb.recordDirectCall(before, after, callTarget, info);
crb.recordExceptionHandlers(after, info);
masm.ensureUniquePC();
}
示例2: directCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void directCall(CompilationResultBuilder crb, AMD64MacroAssembler masm, InvokeTarget callTarget, Register scratch, boolean align, LIRFrameState info) {
if (align) {
emitAlignmentForDirectCall(crb, masm);
}
int before = masm.position();
if (scratch != null) {
// offset might not fit a 32-bit immediate, generate an
// indirect call with a 64-bit immediate
masm.movq(scratch, 0L);
masm.call(scratch);
} else {
masm.call();
}
int after = masm.position();
crb.recordDirectCall(before, after, callTarget, info);
crb.recordExceptionHandlers(after, info);
masm.ensureUniquePC();
}
示例3: directCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void directCall(CompilationResultBuilder crb, SPARCMacroAssembler masm, InvokeTarget callTarget, Register scratch, LIRFrameState info) {
int before;
if (scratch != null) {
// offset might not fit a 30-bit displacement, generate an
// indirect call with a 64-bit immediate
before = masm.position();
masm.sethix(0L, scratch, true);
masm.jmpl(scratch, 0, o7);
} else {
before = masm.call(0);
}
masm.nop(); // delay slot
int after = masm.position();
crb.recordDirectCall(before, after, callTarget, info);
crb.recordExceptionHandlers(after, info);
masm.ensureUniquePC();
}
示例4: getCallSiteRelocationInfo
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
/**
* Get information about the call site. Name of the callee and relocation call type.
*/
private static CallSiteRelocationInfo getCallSiteRelocationInfo(Call call) {
InvokeTarget callTarget = call.target;
if (callTarget instanceof HotSpotResolvedJavaMethod) {
return new JavaCallSiteRelocationInfo(call, (HotSpotResolvedJavaMethod) callTarget);
} else if (callTarget instanceof HotSpotForeignCallLinkage) {
return new ForeignCallSiteRelocationInfo(call, (HotSpotForeignCallLinkage) callTarget);
} else {
throw new InternalError("Unhandled call type found in infopoint: " + callTarget);
}
}
示例5: indirectCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void indirectCall(CompilationResultBuilder crb, AArch64MacroAssembler masm, Register dst, InvokeTarget callTarget, LIRFrameState info) {
int before = masm.position();
masm.blr(dst);
int after = masm.position();
crb.recordIndirectCall(before, after, callTarget, info);
crb.recordExceptionHandlers(after, info);
masm.ensureUniquePC();
}
示例6: directJmp
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void directJmp(CompilationResultBuilder crb, AArch64MacroAssembler masm, InvokeTarget target) {
int before = masm.position();
// Address is fixed up later by c++ code.
masm.jmp();
int after = masm.position();
crb.recordDirectCall(before, after, target, null);
masm.ensureUniquePC();
}
示例7: indirectJmp
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void indirectJmp(CompilationResultBuilder crb, AArch64MacroAssembler masm, Register dst, InvokeTarget target) {
int before = masm.position();
masm.jmp(dst);
int after = masm.position();
crb.recordIndirectCall(before, after, target, null);
masm.ensureUniquePC();
}
示例8: directConditionalJmp
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void directConditionalJmp(CompilationResultBuilder crb, AArch64MacroAssembler masm, InvokeTarget target, AArch64Assembler.ConditionFlag cond) {
int before = masm.position();
masm.branchConditionally(cond);
int after = masm.position();
crb.recordDirectCall(before, after, target, null);
masm.ensureUniquePC();
}
示例9: directJmp
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void directJmp(CompilationResultBuilder crb, AMD64MacroAssembler masm, InvokeTarget target) {
int before = masm.position();
masm.jmp(0, true);
int after = masm.position();
crb.recordDirectCall(before, after, target, null);
masm.ensureUniquePC();
}
示例10: directConditionalJmp
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void directConditionalJmp(CompilationResultBuilder crb, AMD64MacroAssembler masm, InvokeTarget target, ConditionFlag cond) {
int before = masm.position();
masm.jcc(cond, 0, true);
int after = masm.position();
crb.recordDirectCall(before, after, target, null);
masm.ensureUniquePC();
}
示例11: indirectCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void indirectCall(CompilationResultBuilder crb, AMD64MacroAssembler masm, Register dst, InvokeTarget callTarget, LIRFrameState info) {
int before = masm.position();
masm.call(dst);
int after = masm.position();
crb.recordIndirectCall(before, after, callTarget, info);
crb.recordExceptionHandlers(after, info);
masm.ensureUniquePC();
}
示例12: indirectJmp
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void indirectJmp(CompilationResultBuilder crb, SPARCMacroAssembler masm, Register dst, InvokeTarget target) {
int before = masm.position();
masm.sethix(0L, dst, true);
masm.jmp(new SPARCAddress(dst, 0));
masm.nop(); // delay slot
int after = masm.position();
crb.recordIndirectCall(before, after, target, null);
masm.ensureUniquePC();
}
示例13: indirectCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public static void indirectCall(CompilationResultBuilder crb, SPARCMacroAssembler masm, Register dst, InvokeTarget callTarget, LIRFrameState info) {
int before = masm.jmpl(dst, 0, o7);
masm.nop(); // delay slot
int after = masm.position();
crb.recordIndirectCall(before, after, callTarget, info);
crb.recordExceptionHandlers(after, info);
masm.ensureUniquePC();
}
示例14: recordDirectCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public void recordDirectCall(int posBefore, int posAfter, InvokeTarget callTarget, LIRFrameState info) {
DebugInfo debugInfo = info != null ? info.debugInfo() : null;
compilationResult.recordCall(posBefore, posAfter - posBefore, callTarget, debugInfo, true);
}
示例15: recordIndirectCall
import jdk.vm.ci.meta.InvokeTarget; //导入依赖的package包/类
public void recordIndirectCall(int posBefore, int posAfter, InvokeTarget callTarget, LIRFrameState info) {
DebugInfo debugInfo = info != null ? info.debugInfo() : null;
compilationResult.recordCall(posBefore, posAfter - posBefore, callTarget, debugInfo, false);
}