116 protected AMD64HotSpotLIRGenerator(HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes) {
117 this(providers, config, lirGenRes, new BackupSlotProvider(lirGenRes.getFrameMapBuilder()));
118 }
119
120 private AMD64HotSpotLIRGenerator(HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes, BackupSlotProvider backupSlotProvider) {
121 this(new AMD64HotSpotLIRKindTool(), new AMD64ArithmeticLIRGenerator(null, new AMD64HotSpotMaths()), new AMD64HotSpotMoveFactory(backupSlotProvider), providers, config, lirGenRes);
122 }
123
124 protected AMD64HotSpotLIRGenerator(LIRKindTool lirKindTool, AMD64ArithmeticLIRGenerator arithmeticLIRGen, MoveFactory moveFactory, HotSpotProviders providers, GraalHotSpotVMConfig config,
125 LIRGenerationResult lirGenRes) {
126 super(lirKindTool, arithmeticLIRGen, moveFactory, providers, lirGenRes);
127 assert config.basicLockSize == 8;
128 this.config = config;
129 }
130
131 @Override
132 public HotSpotProviders getProviders() {
133 return (HotSpotProviders) super.getProviders();
134 }
135
136 /**
137 * Utility for emitting the instruction to save RBP.
138 */
139 class SaveRbp {
140
141 final NoOp placeholder;
142
143 /**
144 * The slot reserved for saving RBP.
145 */
146 final StackSlot reservedSlot;
147
148 SaveRbp(NoOp placeholder) {
149 this.placeholder = placeholder;
150 AMD64FrameMapBuilder frameMapBuilder = (AMD64FrameMapBuilder) getResult().getFrameMapBuilder();
151 this.reservedSlot = frameMapBuilder.allocateRBPSpillSlot();
152 }
153
154 /**
155 * Replaces this operation with the appropriate move for saving rbp.
|
116 protected AMD64HotSpotLIRGenerator(HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes) {
117 this(providers, config, lirGenRes, new BackupSlotProvider(lirGenRes.getFrameMapBuilder()));
118 }
119
120 private AMD64HotSpotLIRGenerator(HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes, BackupSlotProvider backupSlotProvider) {
121 this(new AMD64HotSpotLIRKindTool(), new AMD64ArithmeticLIRGenerator(null, new AMD64HotSpotMaths()), new AMD64HotSpotMoveFactory(backupSlotProvider), providers, config, lirGenRes);
122 }
123
124 protected AMD64HotSpotLIRGenerator(LIRKindTool lirKindTool, AMD64ArithmeticLIRGenerator arithmeticLIRGen, MoveFactory moveFactory, HotSpotProviders providers, GraalHotSpotVMConfig config,
125 LIRGenerationResult lirGenRes) {
126 super(lirKindTool, arithmeticLIRGen, moveFactory, providers, lirGenRes);
127 assert config.basicLockSize == 8;
128 this.config = config;
129 }
130
131 @Override
132 public HotSpotProviders getProviders() {
133 return (HotSpotProviders) super.getProviders();
134 }
135
136 @Override
137 protected int getMaxVectorSize() {
138 return config.maxVectorSize;
139 }
140
141 /**
142 * Utility for emitting the instruction to save RBP.
143 */
144 class SaveRbp {
145
146 final NoOp placeholder;
147
148 /**
149 * The slot reserved for saving RBP.
150 */
151 final StackSlot reservedSlot;
152
153 SaveRbp(NoOp placeholder) {
154 this.placeholder = placeholder;
155 AMD64FrameMapBuilder frameMapBuilder = (AMD64FrameMapBuilder) getResult().getFrameMapBuilder();
156 this.reservedSlot = frameMapBuilder.allocateRBPSpillSlot();
157 }
158
159 /**
160 * Replaces this operation with the appropriate move for saving rbp.
|