[X86][MC][NFC] Reduce the parameters of functions in X86MCCodeEmitter(Part III)
authorShengchen Kan <shengchen.kan@intel.com>
Sat, 18 Apr 2020 08:52:50 +0000 (16:52 +0800)
committerShengchen Kan <shengchen.kan@intel.com>
Mon, 20 Apr 2020 02:03:41 +0000 (10:03 +0800)
commitb78c3c89c26652b2219ecc92be9587b20593ec22
tree0f40de452b39d0ccc5dc5691cd2a05f12f3381c4
parent4ecc8fb7ebda3633fd855c0f50503e2b39d82d1c
[X86][MC][NFC] Reduce the parameters of functions in X86MCCodeEmitter(Part III)

Summary:
When we encode an instruction, we need to know the number of bytes being
emitted to determine the fixups in `X86MCCodeEmitter::emitImmediate`.
There are only two callers for `emitImmediate`: `emitMemModRMByte` and
`encodeInstruction`.

Before this patch, we kept track of the current byte being emitted
by passing a reference parameter `CurByte` across all the `emit*`
funtions, which is ugly and unnecessary. For example, we don't have any
fixups when emitting prefixes, so we don't need to track this value.

In this patch, we use `StartByte` to record the initial status of the
streamer, and use `OS.tell()` to get the current status of the streamer
when we need to know the number of bytes being emitted. On one hand,
this eliminates the parameter `CurByte` for most `emit*` functions, on
the other hand, this make things clear: Only pass the parameter when we
really need it.

Reviewers: craig.topper, pengfei, MaskRay

Reviewed By: craig.topper, MaskRay

Subscribers: hiraditya, llvm-commits, annita.zhang

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D78419
llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp