# HG changeset patch # User Thomas Wuerthinger # Date 1309967585 -7200 # Node ID 80af9762097a74c04bd548f1dc0de5d91c7f7d01 # Parent f9f3059830e994f21205d5f2116f86d811cd306b Generating safepoints. diff -r f9f3059830e9 -r 80af9762097a graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java Wed Jul 06 17:15:43 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java Wed Jul 06 17:53:05 2011 +0200 @@ -129,6 +129,7 @@ public static boolean UseBranchPrediction = true; public static boolean UseExceptionProbability = ____; public static int MatureInvocationCount = 100; + public static boolean GenSafepoints = true; public static boolean UseConstDirectCall = ____; diff -r f9f3059830e9 -r 80af9762097a graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java Wed Jul 06 17:15:43 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java Wed Jul 06 17:53:05 2011 +0200 @@ -1505,6 +1505,9 @@ public void visitLoopEnd(LoopEnd x) { setNoResult(x); moveToPhi(x.loopBegin(), x); + if (GraalOptions.GenSafepoints) { + xir.genSafepoint(site(x)); + } lir.jump(getLIRBlock(x.loopBegin())); } diff -r f9f3059830e9 -r 80af9762097a graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotXirGenerator.java --- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotXirGenerator.java Wed Jul 06 17:15:43 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotXirGenerator.java Wed Jul 06 17:53:05 2011 +0200 @@ -164,8 +164,8 @@ protected XirTemplate create(CiXirAssembler asm, long flags) { asm.restart(CiKind.Void); - // XirOperand temp = asm.createRegister("temp", CiKind.Word, AMD64.rax); - // asm.pload(CiKind.Word, temp, asm.w(config.safepointPollingAddress), true); + XirOperand temp = asm.createRegister("temp", CiKind.Word, AMD64.rax); + asm.pload(CiKind.Word, temp, asm.w(config.safepointPollingAddress), true); return asm.finishTemplate("safepoint"); }