private uint WriteUnresolvedMethodBody(MethodDefinition method) { int code_size; MetadataToken local_var_token; ByteBuffer byteBuffer = metadata.module.reader.code.PatchRawMethodBody(method, this, out code_size, out local_var_token); bool num = (byteBuffer.buffer[0] & 3) == 3; if (num) { Align(4); } uint result = BeginMethod(); if (num || !GetOrMapTinyMethodBody(byteBuffer, ref result)) { base.WriteBytes(byteBuffer); } if (method.debug_info == null) { return(result); } ISymbolWriter symbol_writer = metadata.symbol_writer; if (symbol_writer != null) { method.debug_info.code_size = code_size; method.debug_info.local_var_token = local_var_token; symbol_writer.Write(method.debug_info); } return(result); }
private RVA WriteUnresolvedMethodBody(MethodDefinition method) { var code_reader = metadata.module.reader.code; var raw_body = code_reader.PatchRawMethodBody(method, this, out int code_size, out MetadataToken local_var_token); bool fat_header = (raw_body.buffer[0] & 0x3) == 0x3; if (fat_header) { Align(4); } uint rva = BeginMethod(); if (fat_header || !GetOrMapTinyMethodBody(raw_body, ref rva)) { WriteBytes(raw_body); } if (method.debug_info == null) { return(rva); } ISymbolWriter symbol_writer = metadata.symbol_writer; if (symbol_writer != null) { method.debug_info.code_size = code_size; method.debug_info.local_var_token = local_var_token; symbol_writer.Write(method.debug_info); } return(rva); }
private RVA WriteResolvedMethodBody(MethodDefinition method) { RVA rva; body = method.Body; ComputeHeader(); if (RequiresFatHeader()) { Align(4); rva = BeginMethod(); WriteFatHeader(); WriteInstructions(); if (body.HasExceptionHandlers) { WriteExceptionHandlers(); } } else { rva = BeginMethod(); WriteByte((byte)(0x2 | (body.CodeSize << 2))); // tiny WriteInstructions(); int start_position = (int)(rva - code_base); int body_size = position - start_position; byte[] body_bytes = new byte[body_size]; Array.Copy(buffer, start_position, body_bytes, 0, body_size); if (GetOrMapTinyMethodBody(new ByteBuffer(body_bytes), ref rva)) { position = start_position; } } ISymbolWriter symbol_writer = metadata.symbol_writer; if (symbol_writer != null && method.debug_info != null) { method.debug_info.code_size = body.CodeSize; method.debug_info.local_var_token = body.local_var_token; symbol_writer.Write(method.debug_info); } return(rva); }
private void WriteUnresolvedMethodBody(MethodDefinition method) { MethodSymbols symbols; ByteBuffer buffer = this.metadata.module.Read <MethodDefinition, CodeReader>(method, (_, reader) => reader.code).PatchRawMethodBody(method, this, out symbols); base.WriteBytes(buffer); if (!symbols.instructions.IsNullOrEmpty <InstructionSymbol>()) { symbols.method_token = method.token; symbols.local_var_token = GetLocalVarToken(buffer, symbols); ISymbolWriter writer = this.metadata.symbol_writer; if (writer != null) { writer.Write(symbols); } } }
private void WriteUnresolvedMethodBody(MethodDefinition method) { MethodSymbols localVarToken; ByteBuffer byteBuffer = this.metadata.module.Read <MethodDefinition, CodeReader>(method, (MethodDefinition _, MetadataReader reader) => reader.code).PatchRawMethodBody(method, this, out localVarToken); base.WriteBytes(byteBuffer); if (localVarToken.instructions.IsNullOrEmpty <InstructionSymbol>()) { return; } localVarToken.method_token = method.token; localVarToken.local_var_token = CodeWriter.GetLocalVarToken(byteBuffer, localVarToken); ISymbolWriter symbolWriter = this.metadata.symbol_writer; if (symbolWriter != null) { symbolWriter.Write(localVarToken); } }
private uint WriteResolvedMethodBody(MethodDefinition method) { body = method.Body; ComputeHeader(); uint num; if (RequiresFatHeader()) { Align(4); num = BeginMethod(); WriteFatHeader(); WriteInstructions(); if (body.HasExceptionHandlers) { WriteExceptionHandlers(); } } else { num = BeginMethod(); base.WriteByte((byte)(2 | body.CodeSize << 2)); WriteInstructions(); int num2 = (int)(num - code_base); int num3 = base.position - num2; byte[] array = new byte[num3]; Array.Copy(base.buffer, num2, array, 0, num3); if (GetOrMapTinyMethodBody(new ByteBuffer(array), ref num)) { base.position = num2; } } ISymbolWriter symbol_writer = metadata.symbol_writer; if (symbol_writer != null && method.debug_info != null) { method.debug_info.code_size = body.CodeSize; method.debug_info.local_var_token = body.local_var_token; symbol_writer.Write(method.debug_info); } return(num); }
private void WriteResolvedMethodBody(MethodDefinition method) { this.body = method.Body; this.ComputeHeader(); if (this.RequiresFatHeader()) { this.WriteFatHeader(); } else { base.WriteByte((byte)(2 | (this.body.CodeSize << 2))); } this.WriteInstructions(); if (this.body.HasExceptionHandlers) { this.WriteExceptionHandlers(); } ISymbolWriter writer = this.metadata.symbol_writer; if (writer != null) { writer.Write(this.body); } }
public void Write(MethodDebugInformation info) { symbol_writer.Write(info); }
public void Write(MethodDebugInformation info) => _symbolWriter.Write(info);