GetSymbol() 공개 메소드

public GetSymbol ( string name, SectionKind kind ) : LinkerSymbol
name string
kind SectionKind
리턴 LinkerSymbol
예제 #1
0
        /// <summary>
        /// Initializes a new instance of <see cref="BaseCodeEmitter" />.
        /// </summary>
        /// <param name="methodName">Name of the method.</param>
        /// <param name="linker">The linker.</param>
        /// <param name="codeStream">The stream the machine code is written to.</param>
        public void Initialize(string methodName, BaseLinker linker, Stream codeStream)
        {
            Debug.Assert(codeStream != null);
            Debug.Assert(linker != null);

            MethodName = methodName;
            this.linker = linker;
            this.codeStream = codeStream;

            // only necessary if method is being recompiled (due to inline optimization, for example)
            var symbol = linker.GetSymbol(MethodName, SectionKind.Text);
            symbol.RemovePatches();
        }
예제 #2
0
        public void Resolve(TypeSystem typeSystem, BaseLinker linker)
        {
            // Find the test method to execute
            RuntimeMethod = FindMethod(
                typeSystem,
                MethodNamespaceName,
                MethodTypeName,
                MethodName,
                Parameters
            );

            Debug.Assert(RuntimeMethod != null, MethodNamespaceName + "." + MethodTypeName + "." + MethodName);

            var symbol = linker.GetSymbol(RuntimeMethod.FullName, SectionKind.Text);

            Address = symbol.VirtualAddress;
        }