當前位置: 首頁>>代碼示例>>Java>>正文


Java InvokeTarget類代碼示例

本文整理匯總了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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:23,代碼來源:AArch64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:19,代碼來源:AMD64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:18,代碼來源:SPARCCall.java

示例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);
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:14,代碼來源:InfopointProcessor.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:9,代碼來源:AArch64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:9,代碼來源:AArch64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:8,代碼來源:AArch64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:8,代碼來源:AArch64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:8,代碼來源:AMD64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:8,代碼來源:AMD64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:9,代碼來源:AMD64Call.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:10,代碼來源:SPARCCall.java

示例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();
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:9,代碼來源:SPARCCall.java

示例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);
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:5,代碼來源:CompilationResultBuilder.java

示例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);
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:5,代碼來源:CompilationResultBuilder.java


注:本文中的jdk.vm.ci.meta.InvokeTarget類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。