Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: src/assembler_ia32.cpp

Issue 678533005: Subzero: Add basic ELFObjectWriter (text section, symtab, strtab, headers) (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: minor cleanup Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/assembler_ia32.h ('k') | src/llvm2ice.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/assembler_ia32.cpp
diff --git a/src/assembler_ia32.cpp b/src/assembler_ia32.cpp
index 94263e8bd94aa7cbbe83e55da6204b370ed12e12..30b84e8546dabd4880571ee8ef11198539604635 100644
--- a/src/assembler_ia32.cpp
+++ b/src/assembler_ia32.cpp
@@ -20,7 +20,6 @@
#include "assembler_ia32.h"
#include "IceCfg.h"
-#include "IceMemoryRegion.h"
#include "IceOperand.h"
namespace Ice {
@@ -37,13 +36,6 @@ public:
DirectCallRelocation(Kind, Sym);
}
- void Process(const MemoryRegion &region, intptr_t position) override {
- // Direct calls are relative to the following instruction on x86.
- int32_t pointer = region.Load<int32_t>(position);
- int32_t delta = region.start() + position + sizeof(int32_t);
- region.Store<int32_t>(position, pointer - delta);
- }
-
private:
DirectCallRelocation(FixupKind Kind, const ConstantRelocatable *Sym)
: AssemblerFixup(Kind, Sym) {}
@@ -77,6 +69,22 @@ AssemblerX86::~AssemblerX86() {
#endif
}
+void AssemblerX86::alignFunction() {
+ intptr_t Pos = buffer_.GetPosition();
+ SizeT Align = 1 << getBundleAlignLog2Bytes();
+ intptr_t Mod = Pos & (Align - 1);
+ if (Mod == 0) {
+ return;
+ }
+ SizeT BytesNeeded = Align - Mod;
+ const SizeT HltSize = 1;
+ while (BytesNeeded > 0) {
+ hlt();
+ BytesNeeded -= HltSize;
+ }
+ assert((buffer_.GetPosition() & (Align - 1)) == 0);
+}
+
Label *AssemblerX86::GetOrCreateLabel(SizeT Number, LabelVector &Labels) {
Label *L = nullptr;
if (Number == Labels.size()) {
« no previous file with comments | « src/assembler_ia32.h ('k') | src/llvm2ice.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698