Esempio n. 1
0
 public void ToTypedReference(VMContext ctx, TypedRefPtr typedRef, Type type)
 {
     if (_ptr != null)
     {
         *(TypedReference *)typedRef = *(TypedReference *)_ptr.Value;
     }
     else
     {
         *(PseudoTypedRef *)typedRef = _typedRef;
     }
 }
Esempio n. 2
0
 public unsafe void ToTypedReferenceObject(TypedRefPtr typedRef, Type type)
 {
     if (o is ValueType && type.IsValueType)
     {
         TypedReferenceHelpers.UnboxTypedRef(o, typedRef);
     }
     else
     {
         *(TypedReference *)typedRef = __makeref(o);
     }
 }
Esempio n. 3
0
        public void ToTypedReference(uint pos, TypedRefPtr typedRef, Type type)
        {
            if (pos > topPos)
            {
                throw new ExecutionEngineException();
            }
            var  section = sections[(int)(pos >> SectionSize)];
            uint index   = pos & IndexMask;

            if (type.IsEnum)
            {
                type = Enum.GetUnderlyingType(type);
            }
            if (type.IsPrimitive || type.IsPointer)
            {
                section[index].ToTypedReferencePrimitive(typedRef);
                TypedReferenceHelpers.CastTypedRef(typedRef, type);
            }
            else
            {
                section[index].ToTypedReferenceObject(typedRef, type);
            }
        }
Esempio n. 4
0
 public void ToTypedReference(VMContext ctx, TypedRefPtr typedRef, Type type)
 {
     TypedReferenceHelpers.MakeTypedRef(ptr, typedRef, type);
 }
Esempio n. 5
0
 public unsafe void ToTypedReferencePrimitive(TypedRefPtr typedRef)
 {
     *(TypedReference *)typedRef = __makeref(u4);
 }
Esempio n. 6
0
 public void ToTypedReference(VMContext ctx, TypedRefPtr typedRef, Type type)
 {
     ctx.Stack.ToTypedReference(StackPos, typedRef, type);
 }
Esempio n. 7
0
 public void ToTypedReference(VMContext ctx, TypedRefPtr typedRef, Type type)
 {
     TypedReferenceHelpers.GetFieldAddr(ctx, instance, field, typedRef);
 }
Esempio n. 8
0
 public TypedRef(TypedRefPtr ptr)
 {
     _ptr = ptr;
 }