mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-23 16:19:52 +00:00
Don't inline get[S|U]LEB128Size() until they are proved to be hot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201939 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -91,29 +91,10 @@ inline uint64_t decodeULEB128(const uint8_t *p, unsigned *n = 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Utility function to get the size of the ULEB128-encoded value.
|
/// Utility function to get the size of the ULEB128-encoded value.
|
||||||
inline unsigned getULEB128Size(uint64_t Value) {
|
extern unsigned getULEB128Size(uint64_t Value);
|
||||||
unsigned Size = 0;
|
|
||||||
do {
|
|
||||||
Value >>= 7;
|
|
||||||
Size += sizeof(int8_t);
|
|
||||||
} while (Value);
|
|
||||||
return Size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Utility function to get the size of the SLEB128-encoded value.
|
/// Utility function to get the size of the SLEB128-encoded value.
|
||||||
inline unsigned getSLEB128Size(int64_t Value) {
|
extern unsigned getSLEB128Size(int64_t Value);
|
||||||
unsigned Size = 0;
|
|
||||||
int Sign = Value >> (8 * sizeof(Value) - 1);
|
|
||||||
bool IsMore;
|
|
||||||
|
|
||||||
do {
|
|
||||||
unsigned Byte = Value & 0x7f;
|
|
||||||
Value >>= 7;
|
|
||||||
IsMore = Value != Sign || ((Byte ^ Sign) & 0x40) != 0;
|
|
||||||
Size += sizeof(int8_t);
|
|
||||||
} while (IsMore);
|
|
||||||
return Size;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace llvm
|
} // namespace llvm
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ add_llvm_library(LLVMSupport
|
|||||||
IntrusiveRefCntPtr.cpp
|
IntrusiveRefCntPtr.cpp
|
||||||
IsInf.cpp
|
IsInf.cpp
|
||||||
IsNAN.cpp
|
IsNAN.cpp
|
||||||
|
LEB128.cpp
|
||||||
LineIterator.cpp
|
LineIterator.cpp
|
||||||
Locale.cpp
|
Locale.cpp
|
||||||
LockFileManager.cpp
|
LockFileManager.cpp
|
||||||
|
|||||||
44
lib/Support/LEB128.cpp
Normal file
44
lib/Support/LEB128.cpp
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
//===- LEB128.cpp - LEB128 utility functions implementation -----*- C++ -*-===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is distributed under the University of Illinois Open Source
|
||||||
|
// License. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
//
|
||||||
|
// This file implements some utility functions for encoding SLEB128 and
|
||||||
|
// ULEB128 values.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "llvm/Support/LEB128.h"
|
||||||
|
|
||||||
|
namespace llvm {
|
||||||
|
|
||||||
|
/// Utility function to get the size of the ULEB128-encoded value.
|
||||||
|
unsigned getULEB128Size(uint64_t Value) {
|
||||||
|
unsigned Size = 0;
|
||||||
|
do {
|
||||||
|
Value >>= 7;
|
||||||
|
Size += sizeof(int8_t);
|
||||||
|
} while (Value);
|
||||||
|
return Size;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Utility function to get the size of the SLEB128-encoded value.
|
||||||
|
unsigned getSLEB128Size(int64_t Value) {
|
||||||
|
unsigned Size = 0;
|
||||||
|
int Sign = Value >> (8 * sizeof(Value) - 1);
|
||||||
|
bool IsMore;
|
||||||
|
|
||||||
|
do {
|
||||||
|
unsigned Byte = Value & 0x7f;
|
||||||
|
Value >>= 7;
|
||||||
|
IsMore = Value != Sign || ((Byte ^ Sign) & 0x40) != 0;
|
||||||
|
Size += sizeof(int8_t);
|
||||||
|
} while (IsMore);
|
||||||
|
return Size;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace llvm
|
||||||
Reference in New Issue
Block a user