public class org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy extends org.graalvm.compiler.lir.SwitchStrategy$PrimitiveStrategy
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy
super_class: org.graalvm.compiler.lir.SwitchStrategy$PrimitiveStrategy
{
private static final double MIN_PROBABILITY;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1.0E-5
private final double[] probabilitySums;
descriptor: [D
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/lir/SwitchStrategy;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(double[], jdk.vm.ci.meta.JavaConstant[]);
descriptor: ([D[Ljdk/vm/ci/meta/JavaConstant;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokespecial org.graalvm.compiler.lir.SwitchStrategy$PrimitiveStrategy.<init>:([D[Ljdk/vm/ci/meta/JavaConstant;)V
1: aload 0
aload 1
arraylength
iconst_1
iadd
newarray 7
putfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.probabilitySums:[D
2: dconst_0
dstore 3
start local 3 3: iconst_0
istore 5
start local 5 4: goto 8
5: StackMap locals: org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy double[] jdk.vm.ci.meta.JavaConstant[] double int
StackMap stack:
dload 3
aload 1
iload 5
daload
ldc 1.0E-5
invokestatic java.lang.Math.max:(DD)D
dadd
dstore 3
6: aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.probabilitySums:[D
iload 5
iconst_1
iadd
dload 3
dastore
7: iinc 5 1
StackMap locals:
StackMap stack:
8: iload 5
aload 2
arraylength
if_icmplt 5
end local 5 9: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/lir/SwitchStrategy$BinaryStrategy;
0 10 1 keyProbabilities [D
0 10 2 keyConstants [Ljdk/vm/ci/meta/JavaConstant;
3 10 3 sum D
4 9 5 i I
MethodParameters:
Name Flags
keyProbabilities
keyConstants
public void run(org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure);
descriptor: (Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
arraylength
iconst_1
isub
iconst_0
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.recurseBinarySwitch:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;III)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/SwitchStrategy$BinaryStrategy;
0 2 1 closure Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;
MethodParameters:
Name Flags
closure
private void recurseBinarySwitch(org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure, int, int, int);
descriptor: (Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;III)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=14, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.$assertionsDisabled:Z
ifne 1
iload 4
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
arraylength
iconst_3
imul
if_icmplt 1
new java.lang.AssertionError
dup
ldc "runaway recursion in binary switch"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
iload 4
istore 5
start local 5 2: iload 2
ifne 3
iconst_1
goto 4
StackMap locals: int
StackMap stack:
3: iconst_0
StackMap locals:
StackMap stack: int
4: istore 6
start local 6 5: iload 3
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
arraylength
iconst_1
isub
if_icmpne 6
iconst_1
goto 7
StackMap locals: int
StackMap stack:
6: iconst_0
StackMap locals:
StackMap stack: int
7: istore 7
start local 7 8: iload 2
iconst_1
iadd
iload 3
if_icmpne 21
9: iload 6
ifne 10
iload 7
ifne 10
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 3
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lconst_1
ladd
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 3
iconst_1
iadd
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lcmp
ifne 10
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 2
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lconst_1
ladd
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 3
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lcmp
ifeq 16
10: StackMap locals: int
StackMap stack:
aload 1
iload 2
getstatic org.graalvm.compiler.core.common.calc.Condition.EQ:Lorg/graalvm/compiler/core/common/calc/Condition;
iconst_0
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
11: aload 0
iload 2
iload 2
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
12: aload 1
iload 3
getstatic org.graalvm.compiler.core.common.calc.Condition.EQ:Lorg/graalvm/compiler/core/common/calc/Condition;
iload 7
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJumpOrDefault:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
13: aload 0
iload 3
iload 3
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
14: aload 0
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerDefaultEffort:(I)V
15: goto 20
16: StackMap locals:
StackMap stack:
aload 1
iload 2
getstatic org.graalvm.compiler.core.common.calc.Condition.EQ:Lorg/graalvm/compiler/core/common/calc/Condition;
iconst_0
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
17: aload 0
iload 2
iload 2
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
18: aload 1
iload 3
aconst_null
iconst_0
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
19: aload 0
iload 3
iload 3
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
20: StackMap locals:
StackMap stack:
return
21: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.probabilitySums:[D
iload 2
daload
dstore 8
start local 8 22: dload 8
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.probabilitySums:[D
iload 3
iconst_1
iadd
daload
dadd
ldc 2.0
ddiv
dstore 10
start local 10 23: getstatic org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.$assertionsDisabled:Z
ifne 24
dload 10
dload 8
dcmpl
ifge 24
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
24: StackMap locals: double double
StackMap stack:
iload 2
istore 12
start local 12 25: goto 27
26: StackMap locals: int
StackMap stack:
aload 0
aload 1
iload 12
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.getSliceEnd:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;I)I
istore 12
27: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 12
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.getSliceEnd:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;I)I
iload 3
if_icmpge 28
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.probabilitySums:[D
aload 0
aload 1
iload 12
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.getSliceEnd:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;I)I
daload
dload 10
dcmpg
iflt 26
28: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 12
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.getSliceEnd:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;I)I
istore 12
29: getstatic org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.$assertionsDisabled:Z
ifne 30
iload 12
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
arraylength
iconst_1
isub
if_icmplt 30
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
30: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.getSliceEnd:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;I)I
iload 12
if_icmpne 55
31: iload 2
ifne 34
32: aload 1
iconst_0
getstatic org.graalvm.compiler.core.common.calc.Condition.LT:Lorg/graalvm/compiler/core/common/calc/Condition;
iconst_1
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
33: aload 0
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerDefaultEffort:(I)V
34: StackMap locals:
StackMap stack:
aload 1
iload 12
getstatic org.graalvm.compiler.core.common.calc.Condition.LE:Lorg/graalvm/compiler/core/common/calc/Condition;
iconst_0
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
35: aload 0
iload 2
iload 12
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
36: iload 12
iconst_1
iadd
iload 3
if_icmpne 41
37: aload 1
iload 3
getstatic org.graalvm.compiler.core.common.calc.Condition.EQ:Lorg/graalvm/compiler/core/common/calc/Condition;
iload 7
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJumpOrDefault:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
38: aload 0
iload 3
iload 3
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
39: aload 0
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerDefaultEffort:(I)V
40: goto 68
41: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 12
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lconst_1
ladd
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 12
iconst_1
iadd
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lcmp
ifeq 44
42: aload 1
iload 12
iconst_1
iadd
getstatic org.graalvm.compiler.core.common.calc.Condition.LT:Lorg/graalvm/compiler/core/common/calc/Condition;
iconst_1
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
43: aload 0
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerDefaultEffort:(I)V
44: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 12
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.getSliceEnd:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;I)I
iload 3
if_icmpne 53
45: iload 3
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
arraylength
iconst_1
isub
if_icmpeq 46
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 3
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lconst_1
ladd
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 3
iconst_1
iadd
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lcmp
ifeq 50
46: StackMap locals:
StackMap stack:
aload 1
iload 3
getstatic org.graalvm.compiler.core.common.calc.Condition.LE:Lorg/graalvm/compiler/core/common/calc/Condition;
iload 7
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJumpOrDefault:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
47: aload 0
iload 12
iconst_1
iadd
iload 3
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
48: aload 0
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerDefaultEffort:(I)V
49: goto 68
50: StackMap locals:
StackMap stack:
aload 1
iload 12
iconst_1
iadd
aconst_null
iconst_0
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
51: aload 0
iload 12
iconst_1
iadd
iload 3
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
52: goto 68
53: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 12
iconst_1
iadd
iload 3
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.recurseBinarySwitch:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;III)V
54: goto 68
StackMap locals:
StackMap stack:
55: aload 0
aload 1
iload 12
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.getSliceEnd:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;I)I
iload 3
if_icmpne 63
56: iload 7
ifne 57
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 3
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lconst_1
ladd
aload 0
getfield org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.keyConstants:[Ljdk/vm/ci/meta/JavaConstant;
iload 3
iconst_1
iadd
aaload
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lcmp
ifeq 59
57: StackMap locals:
StackMap stack:
aload 1
iload 3
getstatic org.graalvm.compiler.core.common.calc.Condition.GT:Lorg/graalvm/compiler/core/common/calc/Condition;
iconst_1
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
58: aload 0
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerDefaultEffort:(I)V
59: StackMap locals:
StackMap stack:
aload 1
iload 12
iconst_1
iadd
getstatic org.graalvm.compiler.core.common.calc.Condition.GE:Lorg/graalvm/compiler/core/common/calc/Condition;
iconst_0
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;Z)V
60: aload 0
iload 12
iconst_1
iadd
iload 3
iinc 5 1
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.registerEffort:(III)V
61: aload 0
aload 1
iload 2
iload 12
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.recurseBinarySwitch:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;III)V
62: goto 68
63: StackMap locals:
StackMap stack:
aload 1
iload 12
iconst_1
iadd
getstatic org.graalvm.compiler.core.common.calc.Condition.GE:Lorg/graalvm/compiler/core/common/calc/Condition;
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.conditionalJump:(ILorg/graalvm/compiler/core/common/calc/Condition;)Lorg/graalvm/compiler/asm/Label;
astore 13
start local 13 64: iinc 5 1
65: aload 0
aload 1
iload 2
iload 12
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.recurseBinarySwitch:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;III)V
66: aload 1
aload 13
invokeinterface org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure.bind:(Lorg/graalvm/compiler/asm/Label;)V
67: aload 0
aload 1
iload 12
iconst_1
iadd
iload 3
iload 5
invokevirtual org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy.recurseBinarySwitch:(Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;III)V
end local 13 68: StackMap locals:
StackMap stack:
return
end local 12 end local 10 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 69 0 this Lorg/graalvm/compiler/lir/SwitchStrategy$BinaryStrategy;
0 69 1 closure Lorg/graalvm/compiler/lir/SwitchStrategy$SwitchClosure;
0 69 2 left I
0 69 3 right I
0 69 4 startDepth I
2 69 5 depth I
5 69 6 leftBorder Z
8 69 7 rightBorder Z
22 69 8 probabilityStart D
23 69 10 probabilityMiddle D
25 69 12 middle I
64 68 13 label Lorg/graalvm/compiler/asm/Label;
MethodParameters:
Name Flags
closure
left
right
startDepth
public jdk.vm.ci.meta.JavaConstant[] getKeyConstants();
descriptor: ()[Ljdk/vm/ci/meta/JavaConstant;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokespecial org.graalvm.compiler.lir.SwitchStrategy$PrimitiveStrategy.getKeyConstants:()[Ljdk/vm/ci/meta/JavaConstant;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "SwitchStrategy.java"
NestHost: org.graalvm.compiler.lir.SwitchStrategy
InnerClasses:
public BinaryStrategy = org.graalvm.compiler.lir.SwitchStrategy$BinaryStrategy of org.graalvm.compiler.lir.SwitchStrategy
private abstract PrimitiveStrategy = org.graalvm.compiler.lir.SwitchStrategy$PrimitiveStrategy of org.graalvm.compiler.lir.SwitchStrategy
private abstract SwitchClosure = org.graalvm.compiler.lir.SwitchStrategy$SwitchClosure of org.graalvm.compiler.lir.SwitchStrategy