Esempio n. 1
0
void CLR_RT_StackFrame::Relocate()
{
    NATIVE_PROFILE_CLR_CORE();
    CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_call.m_assm   );
    CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_call.m_target );
    CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_nativeMethod  );
    CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_IPstart       );
    CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_IP            );

    CLR_RT_GarbageCollector::Heap_Relocate( m_arguments, m_call.m_target->numArgs   );
    CLR_RT_GarbageCollector::Heap_Relocate( m_locals   , m_call.m_target->numLocals );
    CLR_RT_GarbageCollector::Heap_Relocate( m_evalStack, TopValuePosition()         );
}
void CLR_RT_StackFrame::Relocate()
{
    NATIVE_PROFILE_CLR_CORE();

#ifndef TINYCLR_NO_IL_INLINE
    if(m_inlineFrame)
    {
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_inlineFrame->m_frame.m_call.m_assm   );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_inlineFrame->m_frame.m_call.m_target );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_inlineFrame->m_frame.m_IPStart       );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_inlineFrame->m_frame.m_IP            );

        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_call.m_assm   );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_call.m_target );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_nativeMethod  );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_IPstart       );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_IP            );

        CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_args     , m_inlineFrame->m_frame.m_call.m_target->numArgs   );
        CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_locals   , m_inlineFrame->m_frame.m_call.m_target->numLocals );
        CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_evalStack, (int)(m_evalStackPos - m_inlineFrame->m_frame.m_evalStack) );
        CLR_RT_GarbageCollector::Heap_Relocate( m_locals, m_call.m_target->numLocals );
    }
    else
#endif
    {
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_call.m_assm   );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_call.m_target );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_nativeMethod  );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_IPstart       );
        CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_IP            );

        CLR_RT_GarbageCollector::Heap_Relocate( m_arguments, m_call.m_target->numArgs   );
        CLR_RT_GarbageCollector::Heap_Relocate( m_locals   , m_call.m_target->numLocals );
        CLR_RT_GarbageCollector::Heap_Relocate( m_evalStack, TopValuePosition()         );
    }
}