135 if (offset == ((HotSpotResolvedJavaField) field).offset()) {
136 return field;
137 }
138 }
139 }
140
141 throw new JVMCIError("unresolved field %s", reflectionField);
142 }
143
144 private static int intMaskRight(int n) {
145 assert n <= 32;
146 return n == 32 ? -1 : (1 << n) - 1;
147 }
148
149 @Override
150 public JavaConstant encodeDeoptActionAndReason(DeoptimizationAction action, DeoptimizationReason reason, int debugId) {
151 HotSpotVMConfig config = runtime.getConfig();
152 int actionValue = convertDeoptAction(action);
153 int reasonValue = convertDeoptReason(reason);
154 int debugValue = debugId & intMaskRight(config.deoptimizationDebugIdBits);
155 JavaConstant c = JavaConstant.forInt(~((debugValue << config.deoptimizationDebugIdShift) | (reasonValue << config.deoptimizationReasonShift) | (actionValue << config.deoptimizationActionShift)));
156 assert c.asInt() < 0;
157 return c;
158 }
159
160 public DeoptimizationReason decodeDeoptReason(JavaConstant constant) {
161 HotSpotVMConfig config = runtime.getConfig();
162 int reasonValue = ((~constant.asInt()) >> config.deoptimizationReasonShift) & intMaskRight(config.deoptimizationReasonBits);
163 DeoptimizationReason reason = convertDeoptReason(reasonValue);
164 return reason;
165 }
166
167 public DeoptimizationAction decodeDeoptAction(JavaConstant constant) {
168 HotSpotVMConfig config = runtime.getConfig();
169 int actionValue = ((~constant.asInt()) >> config.deoptimizationActionShift) & intMaskRight(config.deoptimizationActionBits);
170 DeoptimizationAction action = convertDeoptAction(actionValue);
171 return action;
172 }
173
174 public int decodeDebugId(JavaConstant constant) {
175 HotSpotVMConfig config = runtime.getConfig();
|
135 if (offset == ((HotSpotResolvedJavaField) field).offset()) {
136 return field;
137 }
138 }
139 }
140
141 throw new JVMCIError("unresolved field %s", reflectionField);
142 }
143
144 private static int intMaskRight(int n) {
145 assert n <= 32;
146 return n == 32 ? -1 : (1 << n) - 1;
147 }
148
149 @Override
150 public JavaConstant encodeDeoptActionAndReason(DeoptimizationAction action, DeoptimizationReason reason, int debugId) {
151 HotSpotVMConfig config = runtime.getConfig();
152 int actionValue = convertDeoptAction(action);
153 int reasonValue = convertDeoptReason(reason);
154 int debugValue = debugId & intMaskRight(config.deoptimizationDebugIdBits);
155 JavaConstant c = JavaConstant.forInt(
156 ~((debugValue << config.deoptimizationDebugIdShift) | (reasonValue << config.deoptimizationReasonShift) | (actionValue << config.deoptimizationActionShift)));
157 assert c.asInt() < 0;
158 return c;
159 }
160
161 public DeoptimizationReason decodeDeoptReason(JavaConstant constant) {
162 HotSpotVMConfig config = runtime.getConfig();
163 int reasonValue = ((~constant.asInt()) >> config.deoptimizationReasonShift) & intMaskRight(config.deoptimizationReasonBits);
164 DeoptimizationReason reason = convertDeoptReason(reasonValue);
165 return reason;
166 }
167
168 public DeoptimizationAction decodeDeoptAction(JavaConstant constant) {
169 HotSpotVMConfig config = runtime.getConfig();
170 int actionValue = ((~constant.asInt()) >> config.deoptimizationActionShift) & intMaskRight(config.deoptimizationActionBits);
171 DeoptimizationAction action = convertDeoptAction(actionValue);
172 return action;
173 }
174
175 public int decodeDebugId(JavaConstant constant) {
176 HotSpotVMConfig config = runtime.getConfig();
|