53 base(declaringType, fieldType, name, sig,
modifiers, fi)
55 if (sig !=
"J" && sig !=
"D")
56 throw new ArgumentException($
"{nameof(RuntimeVolatileLongDoubleJavaField)} expects long or double signature.", nameof(sig));
57 if (IsVolatile ==
false)
58 throw new InternalException($
"{nameof(RuntimeVolatileLongDoubleJavaField)} requires volatile type.");
69 il.Emit(OpCodes.Ldsflda, fi);
73 if (DeclaringType.IsNonPrimitiveValueType)
74 il.Emit(OpCodes.Unbox, DeclaringType.TypeAsTBD);
76 il.Emit(OpCodes.Ldflda, fi);
89 throw new InternalException($
"{nameof(RuntimeVolatileLongDoubleJavaField)} expects long or double.");
97 var value = il.DeclareLocal(FieldTypeWrapper.TypeAsSignatureType);
98 il.Emit(OpCodes.Stloc, value);
102 il.Emit(OpCodes.Ldsflda, fi);
106 if (DeclaringType.IsNonPrimitiveValueType)
107 il.Emit(OpCodes.Unbox, DeclaringType.TypeAsTBD);
109 il.Emit(OpCodes.Ldflda, fi);
112 il.Emit(OpCodes.Ldloc, value);
124 throw new InternalException($
"{nameof(RuntimeVolatileLongDoubleJavaField)} expects long or double.");
128 protected override void EmitUnsafeVolatileGetImpl(
CodeEmitter il)
134 il.Emit(OpCodes.Ldsflda, fi);
138 if (DeclaringType.IsNonPrimitiveValueType)
139 il.Emit(OpCodes.Unbox, DeclaringType.TypeAsTBD);
141 il.Emit(OpCodes.Ldflda, fi);
154 throw new InternalException($
"{nameof(RuntimeVolatileLongDoubleJavaField)} expects long or double.");
158 protected override void EmitUnsafeVolatileSetImpl(
CodeEmitter il)
162 var value = il.DeclareLocal(FieldTypeWrapper.TypeAsSignatureType);
163 il.Emit(OpCodes.Stloc, value);
167 il.Emit(OpCodes.Ldsflda, fi);
171 if (DeclaringType.IsNonPrimitiveValueType)
172 il.Emit(OpCodes.Unbox, DeclaringType.TypeAsTBD);
174 il.Emit(OpCodes.Ldflda, fi);
177 il.Emit(OpCodes.Ldloc, value);
189 throw new InternalException($
"{nameof(RuntimeVolatileLongDoubleJavaField)} expects long or double.");
193 protected override void EmitUnsafeCompareAndSwapImpl(
CodeEmitter il)
197 var value = il.DeclareLocal(FieldTypeWrapper.TypeAsSignatureType);
198 il.Emit(OpCodes.Stloc, value);
199 var expect = il.DeclareLocal(FieldTypeWrapper.TypeAsSignatureType);
200 il.Emit(OpCodes.Stloc, expect);
204 il.Emit(OpCodes.Ldsflda, fi);
208 if (DeclaringType.IsNonPrimitiveValueType)
209 il.Emit(OpCodes.Unbox, DeclaringType.TypeAsTBD);
211 il.Emit(OpCodes.Ldflda, fi);
214 il.Emit(OpCodes.Ldloc, expect);
215 il.Emit(OpCodes.Ldloc, value);
227 throw new InternalException($
"{nameof(RuntimeVolatileLongDoubleJavaField)} expects long or double.");
233#if !IMPORTER && !EXPORTER && !FIRST_PASS
235 internal override object GetValue(
object obj)
237 throw new InvalidOperationException();
240 internal override void SetValue(
object obj,
object value)
242 throw new InvalidOperationException();
ByteCodeHelperMethods ByteCodeHelperMethods
Gets the ByteCodeHelperMethods associated with this instance of the runtime.
RuntimePrimitiveJavaTypeFactory PrimitiveJavaTypeFactory
Gets the RuntimePrimitiveJavaTypeFactory associated with this instance of the runtime.