diff options
Diffstat (limited to 'gold/int_encoding.h')
-rw-r--r-- | gold/int_encoding.h | 40 |
1 files changed, 4 insertions, 36 deletions
diff --git a/gold/int_encoding.h b/gold/int_encoding.h index 467d2244ce..6485a93107 100644 --- a/gold/int_encoding.h +++ b/gold/int_encoding.h @@ -38,48 +38,16 @@ namespace gold // // Read a ULEB 128 encoded integer from BUFFER. Return the length of the -// encoded integer at the location PLEN. The common case of a single-byte -// value is handled inline, and multi-byte values are processed by the _x -// routine, where BYTE is the first byte of the value. +// encoded integer at the location PLEN. uint64_t -read_unsigned_LEB_128_x(const unsigned char* buffer, size_t* plen, - unsigned char byte); - -inline uint64_t -read_unsigned_LEB_128(const unsigned char* buffer, size_t* plen) -{ - unsigned char byte = *buffer++; - - if ((byte & 0x80) != 0) - return read_unsigned_LEB_128_x(buffer, plen, byte); - - *plen = 1; - return static_cast<uint64_t>(byte); -} +read_unsigned_LEB_128(const unsigned char* buffer, size_t* plen); // Read an SLEB 128 encoded integer from BUFFER. Return the length of the -// encoded integer at the location PLEN. The common case of a single-byte -// value is handled inline, and multi-byte values are processed by the _x -// routine, where BYTE is the first byte of the value. +// encoded integer at the location PLEN. int64_t -read_signed_LEB_128_x(const unsigned char* buffer, size_t* plen, - unsigned char byte); - -inline int64_t -read_signed_LEB_128(const unsigned char* buffer, size_t* plen) -{ - unsigned char byte = *buffer++; - - if ((byte & 0x80) != 0) - return read_signed_LEB_128_x(buffer, plen, byte); - - *plen = 1; - if (byte & 0x40) - return -(static_cast<int64_t>(1) << 7) | static_cast<int64_t>(byte); - return static_cast<int64_t>(byte); -} +read_signed_LEB_128(const unsigned char* buffer, size_t* plen); // Write a ULEB 128 encoded VALUE to BUFFER. |