< prev index next >

src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/CodeSectionProcessor.java

Print this page

        

*** 30,39 **** --- 30,41 ---- import jdk.tools.jaotc.binformat.Symbol; import jdk.tools.jaotc.StubInformation; import org.graalvm.compiler.code.CompilationResult; import org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage; + import jdk.vm.ci.aarch64.AArch64; + import jdk.vm.ci.amd64.AMD64; import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.code.site.Call; import jdk.vm.ci.code.site.Infopoint; import jdk.vm.ci.code.site.InfopointReason; import jdk.vm.ci.meta.ResolvedJavaMethod;
*** 70,80 **** // Step through all foreign calls, for every call, clear destination. // Otherwise libelf may not patch them correctly. for (Infopoint infopoint : compResult.getInfopoints()) { if (infopoint.reason == InfopointReason.CALL) { final Call callInfopoint = (Call) infopoint; ! if (callInfopoint.target instanceof HotSpotForeignCallLinkage) { // TODO 4 is x86 size of relative displacement. // For SPARC need something different. int destOffset = infopoint.pcOffset + callInfopoint.size - 4; targetCode[destOffset + 0] = 0; targetCode[destOffset + 1] = 0; --- 72,83 ---- // Step through all foreign calls, for every call, clear destination. // Otherwise libelf may not patch them correctly. for (Infopoint infopoint : compResult.getInfopoints()) { if (infopoint.reason == InfopointReason.CALL) { final Call callInfopoint = (Call) infopoint; ! if (callInfopoint.target instanceof HotSpotForeignCallLinkage && ! target.arch instanceof AMD64) { // TODO 4 is x86 size of relative displacement. // For SPARC need something different. int destOffset = infopoint.pcOffset + callInfopoint.size - 4; targetCode[destOffset + 0] = 0; targetCode[destOffset + 1] = 0;
< prev index next >