8302158: PPC: test/jdk/jdk/internal/vm/Continuation/Fuzz.java: AssertionError: res: false shouldPin: false
Reviewed-by: goetz, mdoerr
This commit is contained in:
parent
dc55a7fc87
commit
b8c9d6cdf6
src/hotspot/cpu/ppc
test/jdk/jdk/internal/vm/Continuation
@ -421,8 +421,12 @@ void frame::describe_pd(FrameValues& values, int frame_no) {
|
||||
#endif
|
||||
|
||||
intptr_t *frame::initial_deoptimization_info() {
|
||||
// unused... but returns fp() to minimize changes introduced by 7087445
|
||||
return fp();
|
||||
// `this` is the caller of the deoptee. We want to trim it, if compiled, to
|
||||
// unextended_sp. This is necessary if the deoptee frame is the bottom frame
|
||||
// of a continuation on stack (more frames could be in a StackChunk) as it
|
||||
// will pop its stack args. Otherwise the recursion in
|
||||
// FreezeBase::recurse_freeze_java_frame() would not stop at the bottom frame.
|
||||
return is_compiled_frame() ? unextended_sp() : sp();
|
||||
}
|
||||
|
||||
#ifndef PRODUCT
|
||||
|
@ -3092,6 +3092,13 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
|
||||
// stack: (caller_of_deoptee, ...).
|
||||
|
||||
// Freezing continuation frames requires that the caller is trimmed to unextended sp if compiled.
|
||||
// If not compiled the loaded value is equal to the current SP (see frame::initial_deoptimization_info())
|
||||
// and the frame is effectively not resized.
|
||||
Register caller_sp = R23_tmp3;
|
||||
__ ld_ptr(caller_sp, Deoptimization::UnrollBlock::initial_info_offset_in_bytes(), unroll_block_reg);
|
||||
__ resize_frame_absolute(caller_sp, R24_tmp4, R25_tmp5);
|
||||
|
||||
// Loop through the `UnrollBlock' info and create interpreter frames.
|
||||
push_skeleton_frames(masm, true/*deopt*/,
|
||||
unroll_block_reg,
|
||||
@ -3227,6 +3234,13 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
__ asm_assert_eq("SharedRuntime::generate_deopt_blob: expected Unpack_uncommon_trap");
|
||||
#endif
|
||||
|
||||
// Freezing continuation frames requires that the caller is trimmed to unextended sp if compiled.
|
||||
// If not compiled the loaded value is equal to the current SP (see frame::initial_deoptimization_info())
|
||||
// and the frame is effectively not resized.
|
||||
Register caller_sp = R23_tmp3;
|
||||
__ ld_ptr(caller_sp, Deoptimization::UnrollBlock::initial_info_offset_in_bytes(), unroll_block_reg);
|
||||
__ resize_frame_absolute(caller_sp, R24_tmp4, R25_tmp5);
|
||||
|
||||
// Allocate new interpreter frame(s) and possibly a c2i adapter
|
||||
// frame.
|
||||
push_skeleton_frames(masm, false/*deopt*/,
|
||||
|
@ -23,7 +23,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-1-without-gc-with-verification
|
||||
* @test id=COMP_NONE
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -40,11 +40,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 1 0
|
||||
* BasicExt COMP_NONE
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-2-without-gc-with-verification
|
||||
* @test id=COMP_WINDOW_LENGTH_1
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -61,11 +61,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 2 0
|
||||
* BasicExt COMP_WINDOW_LENGTH_1
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-3-without-gc-with-verification
|
||||
* @test id=COMP_WINDOW_LENGTH_2
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -82,11 +82,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 3 0
|
||||
* BasicExt COMP_WINDOW_LENGTH_2
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-4-without-gc-with-verification
|
||||
* @test id=COMP_WINDOW_LENGTH_3
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -103,11 +103,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 4 0
|
||||
* BasicExt COMP_WINDOW_LENGTH_3
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-5-without-gc-with-verification
|
||||
* @test id=COMP_ALL
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -124,11 +124,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 5 0
|
||||
* BasicExt COMP_ALL
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-1-with-gc-without-verification
|
||||
* @test id=COMP_NONE-GC_AFTER_YIELD
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -145,11 +145,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 1 1
|
||||
* BasicExt COMP_NONE GC_AFTER_YIELD
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-2-with-gc-without-verification
|
||||
* @test id=COMP_WINDOW_LENGTH_1-GC_AFTER_YIELD
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -166,11 +166,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 2 1
|
||||
* BasicExt COMP_WINDOW_LENGTH_1 GC_AFTER_YIELD
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-3-with-gc-without-verification
|
||||
* @test id=COMP_WINDOW_LENGTH_2-GC_AFTER_YIELD
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -187,11 +187,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 3 1
|
||||
* BasicExt COMP_WINDOW_LENGTH_2 GC_AFTER_YIELD
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-4-with-gc-without-verification
|
||||
* @test id=COMP_WINDOW_LENGTH_3-GC_AFTER_YIELD
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -208,11 +208,11 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 4 1
|
||||
* BasicExt COMP_WINDOW_LENGTH_3 GC_AFTER_YIELD
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test id=policy-5-with-gc-without-verification
|
||||
* @test id=COMP_ALL-GC_AFTER_YIELD
|
||||
* @summary Collection of basic continuation tests. CompilationPolicy controls which frames in a sequence should be compiled when calling Continuation.yield().
|
||||
* @requires vm.continuations
|
||||
* @requires vm.flavor == "server" & vm.opt.TieredCompilation != true
|
||||
@ -229,7 +229,7 @@
|
||||
* -XX:CompileCommand=dontinline,*::*dontjit*
|
||||
* -XX:CompileCommand=exclude,*::*dontjit*
|
||||
* -XX:CompileCommand=dontinline,java/lang/String*.*
|
||||
* BasicExt 5 1
|
||||
* BasicExt COMP_ALL GC_AFTER_YIELD
|
||||
*/
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
@ -251,12 +251,13 @@ import jdk.test.whitebox.WhiteBox;
|
||||
public class BasicExt {
|
||||
static final ContinuationScope THE_SCOPE = new ContinuationScope() {};
|
||||
|
||||
public static final Pattern COMP_NONE = Pattern.compile("COMP_NONE");
|
||||
public static final Pattern COMP_ALL = Pattern.compile("COMP_ALL");
|
||||
public static final Pattern CONT_METHS = Pattern.compile("^(enter|enter0|yield|yield0)$");
|
||||
public static final Pattern PAT_COMP_NONE = Pattern.compile("COMP_NONE");
|
||||
public static final Pattern PAT_COMP_ALL = Pattern.compile("COMP_ALL");
|
||||
public static final Pattern PAT_CONT_METHS = Pattern.compile("^(enter|enter0|yield|yield0)$");
|
||||
|
||||
public static int compPolicySelection;
|
||||
public static boolean triggerGCAfterYield;
|
||||
public static CompilationPolicy compPolicySelection;
|
||||
public static DeoptBehaviour deoptBehaviour;
|
||||
public static GCBehaviour gcBehaviour;
|
||||
public static int compLevel;
|
||||
|
||||
public static final WhiteBox WB = WhiteBox.getWhiteBox();
|
||||
@ -272,6 +273,16 @@ public class BasicExt {
|
||||
EXPR_STACK_NOT_EMPTY,
|
||||
}
|
||||
|
||||
enum GCBehaviour {
|
||||
GC_AFTER_YIELD,
|
||||
NO_GC_AFTER_YIELD,
|
||||
}
|
||||
|
||||
enum DeoptBehaviour {
|
||||
DEOPT_AFTER_YIELD,
|
||||
NO_DEOPT_AFTER_YIELD,
|
||||
}
|
||||
|
||||
public static class HandledException extends Exception { }
|
||||
public static class UnhandledException extends Error { }
|
||||
|
||||
@ -282,35 +293,41 @@ public class BasicExt {
|
||||
// // Run tests with C1 compilations
|
||||
// compLevel = CompilerWhiteBoxTest.COMP_LEVEL_FULL_PROFILE;
|
||||
|
||||
compPolicySelection = Integer.parseInt(args[0]);
|
||||
triggerGCAfterYield = Integer.parseInt(args[1]) == 1;
|
||||
parseArgument(args);
|
||||
runTests();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
throw t;
|
||||
}
|
||||
}
|
||||
|
||||
public static void parseArgument(String[] args) {
|
||||
compPolicySelection = CompilationPolicy.COMP_NONE;
|
||||
deoptBehaviour = DeoptBehaviour.NO_DEOPT_AFTER_YIELD;
|
||||
gcBehaviour = GCBehaviour.NO_GC_AFTER_YIELD;
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
try {
|
||||
compPolicySelection = CompilationPolicy.valueOf(args[i]);
|
||||
} catch(IllegalArgumentException e) { /* ignored */ }
|
||||
try {
|
||||
deoptBehaviour = DeoptBehaviour.valueOf(args[i]);
|
||||
} catch(IllegalArgumentException e) { /* ignored */ }
|
||||
try {
|
||||
gcBehaviour = GCBehaviour.valueOf(args[i]);
|
||||
} catch(IllegalArgumentException e) { /* ignored */ }
|
||||
}
|
||||
}
|
||||
|
||||
public static void runTests() {
|
||||
System.out.println("$$$0 Running test cases with the following settings:");
|
||||
System.out.println("compLevel=" + compLevel);
|
||||
System.out.println("callSystemGC=" + triggerGCAfterYield);
|
||||
System.out.println("compPolicySelection=" + compPolicySelection);
|
||||
System.out.println("deoptbehaviour=" + deoptBehaviour);
|
||||
System.out.println("gcBehaviour=" + gcBehaviour);
|
||||
System.out.println();
|
||||
|
||||
WB.deoptimizeAll();
|
||||
|
||||
boolean all = compPolicySelection == 0;
|
||||
if (compPolicySelection == 1 || all)
|
||||
runTests(new CompilationPolicy(7 /*warmup*/, COMP_NONE, COMP_NONE /*Cont. pattern*/));
|
||||
if (compPolicySelection == 2 || all)
|
||||
runTests(new CompilationPolicy(7 /*warmup*/, 1 /* length comp. window */));
|
||||
if (compPolicySelection == 3 || all)
|
||||
runTests(new CompilationPolicy(7 /*warmup*/, 2 /* length comp. window */));
|
||||
if (compPolicySelection == 4 || all)
|
||||
runTests(new CompilationPolicy(7 /*warmup*/, 3 /* length comp. window */));
|
||||
if (compPolicySelection == 5 || all)
|
||||
runTests(new CompilationPolicy(7 /*warmup*/, COMP_ALL, CONT_METHS /*Cont. pattern*/));
|
||||
if (compPolicySelection >= 6)
|
||||
throw new Error("CompilationPolicy with number " + compPolicySelection + " does not exist");
|
||||
runTests(compPolicySelection);
|
||||
}
|
||||
|
||||
public static void runTests(CompilationPolicy compPolicy) {
|
||||
@ -328,6 +345,16 @@ public class BasicExt {
|
||||
new ContinuationYieldReduceStackYield().runTestCase(1, compPolicy);
|
||||
new ContinuationCompiledFramesWithStackArgs_3c0().runTestCase(1, compPolicy);
|
||||
new ContinuationCompiledFramesWithStackArgs_3c4().runTestCase(1, compPolicy);
|
||||
if (deoptBehaviour == DeoptBehaviour.NO_DEOPT_AFTER_YIELD) {
|
||||
DeoptBehaviour savedDeoptBehaviour = deoptBehaviour;
|
||||
try {
|
||||
// run at least the following test case with deoptimization
|
||||
deoptBehaviour = DeoptBehaviour.DEOPT_AFTER_YIELD;
|
||||
new ContinuationCompiledFramesWithStackArgs_3c4().runTestCase(1, compPolicy);
|
||||
} finally {
|
||||
deoptBehaviour = savedDeoptBehaviour;
|
||||
}
|
||||
}
|
||||
new ContinuationCompiledFramesWithStackArgs().runTestCase(1, compPolicy);
|
||||
new ContinuationDeepRecursion().runTestCase(3, compPolicy);
|
||||
new ContinuationDeepRecursionStackargs().runTestCase(3, compPolicy);
|
||||
@ -338,7 +365,12 @@ public class BasicExt {
|
||||
// are interpreted. With DEOPT_WINDOW vice versa.
|
||||
// The methods that are subject to the CompilationPolicy are set with setMethods().
|
||||
// Their order has to correspond to the stack order when calling yield().
|
||||
public static class CompilationPolicy {
|
||||
public static enum CompilationPolicy {
|
||||
COMP_NONE(7 /*warmup*/, PAT_COMP_NONE, PAT_COMP_NONE /*Cont. pattern*/),
|
||||
COMP_WINDOW_LENGTH_1(7 /*warmup*/, 1 /* length comp. window */),
|
||||
COMP_WINDOW_LENGTH_2(7 /*warmup*/, 2 /* length comp. window */),
|
||||
COMP_WINDOW_LENGTH_3(7 /*warmup*/, 3 /* length comp. window */),
|
||||
COMP_ALL(7 /*warmup*/, PAT_COMP_ALL, PAT_CONT_METHS /*Cont. pattern*/);
|
||||
public int warmupIterations;
|
||||
public Pattern methodPattern;
|
||||
public Pattern contMethPattern;
|
||||
@ -353,19 +385,19 @@ public class BasicExt {
|
||||
NO_COMP_WINDOW, COMP_WINDOW, DEOPT_WINDOW
|
||||
}
|
||||
|
||||
public CompilationPolicy(int warmupIterations, Pattern methodPattern,
|
||||
CompilationPolicy(int warmupIterations, Pattern methodPattern,
|
||||
Pattern contMethPattern) {
|
||||
this(warmupIterations, 0, methodPattern, contMethPattern,
|
||||
CompWindowMode.NO_COMP_WINDOW);
|
||||
}
|
||||
|
||||
public CompilationPolicy(int warmupIterations, int windowLength,
|
||||
CompilationPolicy(int warmupIterations, int windowLength,
|
||||
Pattern methodPattern, Pattern contMethPattern) {
|
||||
this(warmupIterations, windowLength, methodPattern, contMethPattern,
|
||||
CompWindowMode.COMP_WINDOW);
|
||||
}
|
||||
|
||||
public CompilationPolicy(int warmupIterations, int windowLength,
|
||||
CompilationPolicy(int warmupIterations, int windowLength,
|
||||
Pattern methodPattern, Pattern contMethPattern,
|
||||
CompWindowMode startMode) {
|
||||
this.warmupIterations = warmupIterations;
|
||||
@ -376,8 +408,8 @@ public class BasicExt {
|
||||
this.compWindowMode = startMode;
|
||||
}
|
||||
|
||||
public CompilationPolicy(int warmupIterations, int windowLength) {
|
||||
this(warmupIterations, windowLength, COMP_ALL, CONT_METHS);
|
||||
CompilationPolicy(int warmupIterations, int windowLength) {
|
||||
this(warmupIterations, windowLength, PAT_COMP_ALL, PAT_CONT_METHS);
|
||||
}
|
||||
|
||||
public int warmupIterations() {
|
||||
@ -518,11 +550,11 @@ public class BasicExt {
|
||||
this.compPolicy = compPolicy;
|
||||
ArrayList<Method> selectedMethods = new ArrayList<Method>();
|
||||
Pattern p = compPolicy.methodPattern;
|
||||
if (p != COMP_NONE) {
|
||||
if (p != PAT_COMP_NONE) {
|
||||
Class<? extends TestCaseBase> c = getClass();
|
||||
Method methods[] = c.getDeclaredMethods();
|
||||
for (Method meth : methods) {
|
||||
if (p == COMP_ALL || p.matcher(meth.getName()).matches()) {
|
||||
if (p == PAT_COMP_ALL || p.matcher(meth.getName()).matches()) {
|
||||
if (!meth.getName().contains("dontjit")) {
|
||||
selectedMethods.add(meth);
|
||||
}
|
||||
@ -531,7 +563,7 @@ public class BasicExt {
|
||||
}
|
||||
|
||||
p = compPolicy.contMethPattern;
|
||||
if (compPolicy.contMethPattern != COMP_NONE) {
|
||||
if (compPolicy.contMethPattern != PAT_COMP_NONE) {
|
||||
Class<?> c = Continuation.class;
|
||||
Method methods[] = c .getDeclaredMethods();
|
||||
for (Method meth : methods) {
|
||||
@ -584,7 +616,7 @@ public class BasicExt {
|
||||
} catch (UnhandledException e) {
|
||||
log_dontjit("Exc: " + e);
|
||||
}
|
||||
if (triggerGCAfterYield) WB.youngGC();
|
||||
if (gcBehaviour == GCBehaviour.GC_AFTER_YIELD) WB.youngGC();
|
||||
checkFrames_dontjit(cont);
|
||||
} while (!cont.isDone());
|
||||
}
|
||||
@ -625,6 +657,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + i);
|
||||
String s1 = "str1";
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
String s2 = s1 + "str2";
|
||||
sField = s2;
|
||||
}
|
||||
@ -639,6 +674,9 @@ public class BasicExt {
|
||||
public void run() {
|
||||
log_dontjit("Continuation running on thread " + Thread.currentThread());
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("Back from 1st yield. Now call a method to make the stack larger.");
|
||||
ord101_callYieldWithLargerStackAgain_dontinline();
|
||||
}
|
||||
@ -646,6 +684,9 @@ public class BasicExt {
|
||||
private void ord101_callYieldWithLargerStackAgain_dontinline() {
|
||||
log_dontjit("Now there's a new frame on stack. Call yield again.");
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("Back again after 2nd yield.");
|
||||
}
|
||||
}
|
||||
@ -661,11 +702,17 @@ public class BasicExt {
|
||||
ord101_methodWithFirstYield_dontinline();
|
||||
log_dontjit("The frame of ord101_methodWithFirstYield_dontinline has been removed now. Call yield again.");
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("Back again after 2nd yield.");
|
||||
}
|
||||
|
||||
public void ord101_methodWithFirstYield_dontinline() {
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("Back from 1st yield. Now return to reduce stack size.");
|
||||
}
|
||||
}
|
||||
@ -735,6 +782,9 @@ public class BasicExt {
|
||||
String s3 = s2 + "str3";
|
||||
log_dontjit("Yield #" + yieldCount++);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount);
|
||||
if (testVariant == TestCaseVariants.THROW_HANDLED_EXCEPTION) {
|
||||
log_dontjit("Exc: throw handled");
|
||||
@ -812,6 +862,9 @@ public class BasicExt {
|
||||
public void ord102_yield_dontinline(int depth) {
|
||||
if (depth >= 2) {
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
return;
|
||||
}
|
||||
ord102_yield_dontinline(depth + 1);
|
||||
@ -880,6 +933,9 @@ public class BasicExt {
|
||||
long l6, long l7, long l8, long l9, long l10, long l11) {
|
||||
if (depth >= 2) {
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
return l1 + l2 + l3 + l4 + l5 + l6 + l7 + l8 + l9 + l10 + l11;
|
||||
}
|
||||
long res = ord102_yield_dontinline(depth + 1, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11);
|
||||
@ -910,6 +966,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
log_dontjit("ord108_testMethod_dontinline res=" + res);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("a/y ord108_testMethod_dontinline res=" + res);
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
@ -924,6 +983,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
log_dontjit("ord109_testMethod_dontinline res=" + res);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("a/y ord109_testMethod_dontinline res=" + res);
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
@ -950,6 +1012,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
log_dontjit("ord108_testMethod_dontinline res=" + res);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("a/y ord108_testMethod_dontinline res=" + res);
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
@ -965,6 +1030,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
log_dontjit("ord109_testMethod_dontinline res=" + res);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("a/y ord109_testMethod_dontinline res=" + res);
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
@ -980,6 +1048,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
log_dontjit("ord109_testMethod_dontinline res=" + res);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("a/y ord109_testMethod_dontinline res=" + res);
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
@ -1004,6 +1075,9 @@ public class BasicExt {
|
||||
long res = ord102_testMethod_dontinline(a1, i2);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1012,6 +1086,9 @@ public class BasicExt {
|
||||
long res = ord103_testMethod_dontinline(a1, a2, i3);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1020,6 +1097,9 @@ public class BasicExt {
|
||||
long res = ord104_testMethod_dontinline(a1, a2, a3, i4);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1028,6 +1108,9 @@ public class BasicExt {
|
||||
long res = ord105_testMethod_dontinline(a1, a2, a3, a4, i5);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1036,6 +1119,9 @@ public class BasicExt {
|
||||
long res = ord106_testMethod_dontinline(a1, a2, a3, a4, a5, i6);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1044,6 +1130,9 @@ public class BasicExt {
|
||||
long res = ord107_testMethod_dontinline(a1, a2, a3, a4, a5, a6, i7);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1054,6 +1143,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
log_dontjit("ord108_testMethod_dontinline res=" + res);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("a/y ord108_testMethod_dontinline res=" + res);
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
@ -1065,6 +1157,9 @@ public class BasicExt {
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
log_dontjit("ord109_testMethod_dontinline res=" + res);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("a/y ord109_testMethod_dontinline res=" + res);
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
@ -1074,13 +1169,21 @@ public class BasicExt {
|
||||
long a7, long a8, long a9) {
|
||||
long res = ord110_testMethod_dontinline(a1, a2, a3, a4, a5, a6, a7, a8, a9, i10);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public long ord110_testMethod_dontinline(long a1, long a2, long a3, long a4, long a5, long a6,
|
||||
long a7, long a8, long a9, long a10) {
|
||||
long res = ord111_testMethod_dontinline(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, i11);
|
||||
log_dontjit("Yield #" + yieldCount); Continuation.yield(THE_SCOPE); log_dontjit("/Yield #" + yieldCount++);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -1089,6 +1192,9 @@ public class BasicExt {
|
||||
long res = ord112_testMethod_dontinline(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, i12);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1098,6 +1204,9 @@ public class BasicExt {
|
||||
long res = ord113_testMethod_dontinline(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, i13);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1108,6 +1217,9 @@ public class BasicExt {
|
||||
long res = ord114_testMethod_dontinline(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, i14);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1118,6 +1230,9 @@ public class BasicExt {
|
||||
long res = ord115_testMethod_dontinline(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, i15);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1128,6 +1243,9 @@ public class BasicExt {
|
||||
long res = ord116_testMethod_dontinline(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, i16);
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
return res;
|
||||
}
|
||||
@ -1138,6 +1256,9 @@ public class BasicExt {
|
||||
long res = a2 + a4 + a6 + a8 + a10 + a12 + a14 + a16;
|
||||
log_dontjit("Yield #" + yieldCount);
|
||||
Continuation.yield(THE_SCOPE);
|
||||
if (deoptBehaviour == DeoptBehaviour.DEOPT_AFTER_YIELD) {
|
||||
WB.deoptimizeFrames(false /* makeNotEntrant */);
|
||||
}
|
||||
log_dontjit("/Yield #" + yieldCount++);
|
||||
res += a1 + a3 + a5 + a7 + a9 + a11 + a13 + a15;
|
||||
return res;
|
||||
|
Loading…
x
Reference in New Issue
Block a user