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

Side by Side Diff: src/IceAssemblerX86Base.h

Issue 1669443002: Subzero. Uses fixups to calculate addend to relocations. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addresses comments. Created 4 years, 10 months 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 unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceAssemblerX86Base.h - base x86 assembler -*- C++ -*---===// 1 //===- subzero/src/IceAssemblerX86Base.h - base x86 assembler -*- C++ -*---===//
2 // 2 //
3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
4 // for details. All rights reserved. Use of this source code is governed by a 4 // for details. All rights reserved. Use of this source code is governed by a
5 // BSD-style license that can be found in the LICENSE file. 5 // BSD-style license that can be found in the LICENSE file.
6 // 6 //
7 // Modified by the Subzero authors. 7 // Modified by the Subzero authors.
8 // 8 //
9 //===----------------------------------------------------------------------===// 9 //===----------------------------------------------------------------------===//
10 // 10 //
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 return Asm->getKind() == Traits::AsmKind; 66 return Asm->getKind() == Traits::AsmKind;
67 } 67 }
68 68
69 class Immediate { 69 class Immediate {
70 Immediate(const Immediate &) = delete; 70 Immediate(const Immediate &) = delete;
71 Immediate &operator=(const Immediate &) = delete; 71 Immediate &operator=(const Immediate &) = delete;
72 72
73 public: 73 public:
74 explicit Immediate(int32_t value) : value_(value) {} 74 explicit Immediate(int32_t value) : value_(value) {}
75 75
76 Immediate(RelocOffsetT offset, AssemblerFixup *fixup) 76 explicit Immediate(AssemblerFixup *fixup) : fixup_(fixup) {}
77 : value_(offset), fixup_(fixup) {
78 // Use the Offset in the "value" for now. If we decide to process fixups,
79 // we'll need to patch that offset with the true value.
80 }
81 77
82 int32_t value() const { return value_; } 78 int32_t value() const { return value_; }
83 AssemblerFixup *fixup() const { return fixup_; } 79 AssemblerFixup *fixup() const { return fixup_; }
84 80
85 bool is_int8() const { 81 bool is_int8() const {
86 // We currently only allow 32-bit fixups, and they usually have value = 0, 82 // We currently only allow 32-bit fixups, and they usually have value = 0,
87 // so if fixup_ != nullptr, it shouldn't be classified as int8/16. 83 // so if fixup_ != nullptr, it shouldn't be classified as int8/16.
88 return fixup_ == nullptr && Utils::IsInt(8, value_); 84 return fixup_ == nullptr && Utils::IsInt(8, value_);
89 } 85 }
90 bool is_uint8() const { 86 bool is_uint8() const {
91 return fixup_ == nullptr && Utils::IsUint(8, value_); 87 return fixup_ == nullptr && Utils::IsUint(8, value_);
92 } 88 }
93 bool is_uint16() const { 89 bool is_uint16() const {
94 return fixup_ == nullptr && Utils::IsUint(16, value_); 90 return fixup_ == nullptr && Utils::IsUint(16, value_);
95 } 91 }
96 92
97 private: 93 private:
98 const int32_t value_; 94 const int32_t value_ = 0;
99 AssemblerFixup *fixup_ = nullptr; 95 AssemblerFixup *fixup_ = nullptr;
100 }; 96 };
101 97
102 /// X86 allows near and far jumps. 98 /// X86 allows near and far jumps.
103 class Label final : public Ice::Label { 99 class Label final : public Ice::Label {
104 Label(const Label &) = delete; 100 Label(const Label &) = delete;
105 Label &operator=(const Label &) = delete; 101 Label &operator=(const Label &) = delete;
106 102
107 public: 103 public:
108 Label() = default; 104 Label() = default;
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 emitUint8(0x66); 913 emitUint8(0x66);
918 } 914 }
919 915
920 } // end of namespace X86NAMESPACE 916 } // end of namespace X86NAMESPACE
921 917
922 } // end of namespace Ice 918 } // end of namespace Ice
923 919
924 #include "IceAssemblerX86BaseImpl.h" 920 #include "IceAssemblerX86BaseImpl.h"
925 921
926 #endif // SUBZERO_SRC_ICEASSEMBLERX86BASE_H 922 #endif // SUBZERO_SRC_ICEASSEMBLERX86BASE_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698