public static HLStaticFieldAddressLocation Create(HLField pStaticField) { HLStaticFieldAddressLocation location = new HLStaticFieldAddressLocation(HLDomain.GetOrCreateType(MutableModelHelper.GetManagedPointerTypeReference(pStaticField.Type.Definition, HLDomain.Host.InternFactory, pStaticField.Type.Definition))); location.mStaticField = pStaticField; return(location); }
internal override void Store(LLFunction pFunction, LLLocation pSource) { HLStaticFieldAddressLocation.CheckStaticConstructorCalled(pFunction, StaticField.Container); LLLocation locationFieldPointer = LLGlobalLocation.Create(LLModule.GetGlobal(StaticField.Container.ToString() + "." + StaticField.ToString())); LLLocation locationSource = pFunction.CurrentBlock.EmitConversion(pSource, locationFieldPointer.Type.PointerDepthMinusOne); pFunction.CurrentBlock.EmitStore(locationFieldPointer, locationSource); }
internal override LLLocation Load(LLFunction pFunction) { HLStaticFieldAddressLocation.CheckStaticConstructorCalled(pFunction, StaticField.Container); LLLocation locationFieldPointer = LLGlobalLocation.Create(LLModule.GetGlobal(StaticField.Container.ToString() + "." + StaticField.ToString())); LLLocation locationTemporary = LLTemporaryLocation.Create(pFunction.CreateTemporary(locationFieldPointer.Type.PointerDepthMinusOne)); pFunction.CurrentBlock.EmitLoad(locationTemporary, locationFieldPointer); return(locationTemporary); }
internal override HLLocation AddressOf() { return(HLStaticFieldAddressLocation.Create(mStaticField)); }
public static HLStaticFieldAddressLocation Create(HLField pStaticField) { HLStaticFieldAddressLocation location = new HLStaticFieldAddressLocation(HLDomain.GetOrCreateType(MutableModelHelper.GetManagedPointerTypeReference(pStaticField.Type.Definition, HLDomain.Host.InternFactory, pStaticField.Type.Definition))); location.mStaticField = pStaticField; return location; }