示例#1
0
 public static HLFieldLocation Create(HLLocation pInstance, HLField pField)
 {
     HLFieldLocation location = new HLFieldLocation(pField.Type);
     location.mInstance = pInstance;
     location.mField = pField;
     return location;
 }
示例#2
0
        public static HLStaticFieldLocation Create(HLField pStaticField)
        {
            HLStaticFieldLocation location = new HLStaticFieldLocation(pStaticField.Type);

            location.mStaticField = pStaticField;
            return(location);
        }
 public static HLFieldAddressLocation Create(HLLocation pInstance, HLField pField)
 {
     HLFieldAddressLocation location = new HLFieldAddressLocation(HLDomain.GetOrCreateType(MutableModelHelper.GetManagedPointerTypeReference(pField.Type.Definition, HLDomain.Host.InternFactory, pField.Type.Definition)));
     location.mInstance = pInstance;
     location.mField = pField;
     return location;
 }
        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);
        }
示例#5
0
        public static HLFieldLocation Create(HLLocation pInstance, HLField pField)
        {
            HLFieldLocation location = new HLFieldLocation(pField.Type);

            location.mInstance = pInstance;
            location.mField    = pField;
            return(location);
        }
 internal static LLLocation LoadInstanceFieldPointer(LLFunction pFunction, HLLocation pInstance, HLField pField)
 {
     LLLocation locationInstance = pInstance.Load(pFunction);
     locationInstance = pFunction.CurrentBlock.EmitConversion(locationInstance, LLModule.GetOrCreatePointerType(LLModule.GetOrCreateUnsignedType(8), 1));
     LLLocation locationFieldPointer = locationInstance;
     if (pField.Offset > 0)
     {
         locationFieldPointer = LLTemporaryLocation.Create(pFunction.CreateTemporary(locationFieldPointer.Type));
         pFunction.CurrentBlock.EmitGetElementPointer(locationFieldPointer, locationInstance, LLLiteralLocation.Create(LLLiteral.Create(LLModule.GetOrCreateUnsignedType(32), pField.Offset.ToString())));
     }
     return pFunction.CurrentBlock.EmitConversion(locationFieldPointer, pField.Type.LLType.PointerDepthPlusOne);
 }
        internal static LLLocation LoadInstanceFieldPointer(LLFunction pFunction, HLLocation pInstance, HLField pField)
        {
            LLLocation locationInstance = pInstance.Load(pFunction);

            locationInstance = pFunction.CurrentBlock.EmitConversion(locationInstance, LLModule.GetOrCreatePointerType(LLModule.GetOrCreateUnsignedType(8), 1));
            LLLocation locationFieldPointer = locationInstance;

            if (pField.Offset > 0)
            {
                locationFieldPointer = LLTemporaryLocation.Create(pFunction.CreateTemporary(locationFieldPointer.Type));
                pFunction.CurrentBlock.EmitGetElementPointer(locationFieldPointer, locationInstance, LLLiteralLocation.Create(LLLiteral.Create(LLModule.GetOrCreateUnsignedType(32), pField.Offset.ToString())));
            }
            return(pFunction.CurrentBlock.EmitConversion(locationFieldPointer, pField.Type.LLType.PointerDepthPlusOne));
        }
 public static HLStaticFieldLocation Create(HLField pStaticField)
 {
     HLStaticFieldLocation location = new HLStaticFieldLocation(pStaticField.Type);
     location.mStaticField = pStaticField;
     return location;
 }