diff options
Diffstat (limited to 'src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/AssemblyStubNode.cs')
-rw-r--r-- | src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/AssemblyStubNode.cs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/AssemblyStubNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/AssemblyStubNode.cs index df7322c46..930dfaff1 100644 --- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/AssemblyStubNode.cs +++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/AssemblyStubNode.cs @@ -34,11 +34,28 @@ namespace ILCompiler.DependencyAnalysis x64Emitter.Builder.Alignment = factory.Target.MinimumFunctionAlignment; x64Emitter.Builder.DefinedSymbols.Add(this); return x64Emitter.Builder.ToObjectData(); + + case TargetArchitecture.X86: + X86.X86Emitter x86Emitter = new X86.X86Emitter(factory); + EmitCode(factory, ref x86Emitter, relocsOnly); + x86Emitter.Builder.Alignment = factory.Target.MinimumFunctionAlignment; + x86Emitter.Builder.DefinedSymbols.Add(this); + return x86Emitter.Builder.ToObjectData(); + + case TargetArchitecture.ARM: + ARM.ARMEmitter armEmitter = new ARM.ARMEmitter(factory); + EmitCode(factory, ref armEmitter, relocsOnly); + armEmitter.Builder.Alignment = factory.Target.MinimumFunctionAlignment; + armEmitter.Builder.DefinedSymbols.Add(this); + return armEmitter.Builder.ToObjectData(); + default: throw new NotImplementedException(); } } protected abstract void EmitCode(NodeFactory factory, ref X64.X64Emitter instructionEncoder, bool relocsOnly); + protected abstract void EmitCode(NodeFactory factory, ref X86.X86Emitter instructionEncoder, bool relocsOnly); + protected abstract void EmitCode(NodeFactory factory, ref ARM.ARMEmitter instructionEncoder, bool relocsOnly); } } |