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

Unified Diff: src/assembler.h

Issue 2645063002: includes: move Label out of assembler.h. (Closed)
Patch Set: oops Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « BUILD.gn ('k') | src/assembler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/assembler.h
diff --git a/src/assembler.h b/src/assembler.h
index cd5867689efe0efde0ced8c0998964465f6f5cf8..27aab0eec6eae8c0c2122a1beaf5fcc389fa40e5 100644
--- a/src/assembler.h
+++ b/src/assembler.h
@@ -40,6 +40,7 @@
#include "src/deoptimize-reason.h"
#include "src/globals.h"
#include "src/isolate.h"
+#include "src/label.h"
#include "src/log.h"
#include "src/register-configuration.h"
#include "src/runtime/runtime.h"
@@ -272,79 +273,6 @@ class CpuFeatures : public AllStatic {
};
-// -----------------------------------------------------------------------------
-// Labels represent pc locations; they are typically jump or call targets.
-// After declaration, a label can be freely used to denote known or (yet)
-// unknown pc location. Assembler::bind() is used to bind a label to the
-// current pc. A label can be bound only once.
-
-class Label {
- public:
- enum Distance {
- kNear, kFar
- };
-
- INLINE(Label()) {
- Unuse();
- UnuseNear();
- }
-
- INLINE(~Label()) {
- DCHECK(!is_linked());
- DCHECK(!is_near_linked());
- }
-
- INLINE(void Unuse()) { pos_ = 0; }
- INLINE(void UnuseNear()) { near_link_pos_ = 0; }
-
- INLINE(bool is_bound() const) { return pos_ < 0; }
- INLINE(bool is_unused() const) { return pos_ == 0 && near_link_pos_ == 0; }
- INLINE(bool is_linked() const) { return pos_ > 0; }
- INLINE(bool is_near_linked() const) { return near_link_pos_ > 0; }
-
- // Returns the position of bound or linked labels. Cannot be used
- // for unused labels.
- int pos() const;
- int near_link_pos() const { return near_link_pos_ - 1; }
-
- private:
- // pos_ encodes both the binding state (via its sign)
- // and the binding position (via its value) of a label.
- //
- // pos_ < 0 bound label, pos() returns the jump target position
- // pos_ == 0 unused label
- // pos_ > 0 linked label, pos() returns the last reference position
- int pos_;
-
- // Behaves like |pos_| in the "> 0" case, but for near jumps to this label.
- int near_link_pos_;
-
- void bind_to(int pos) {
- pos_ = -pos - 1;
- DCHECK(is_bound());
- }
- void link_to(int pos, Distance distance = kFar) {
- if (distance == kNear) {
- near_link_pos_ = pos + 1;
- DCHECK(is_near_linked());
- } else {
- pos_ = pos + 1;
- DCHECK(is_linked());
- }
- }
-
- friend class Assembler;
- friend class Displacement;
- friend class RegExpMacroAssemblerIrregexp;
-
-#if V8_TARGET_ARCH_ARM64
- // On ARM64, the Assembler keeps track of pointers to Labels to resolve
- // branches to distant targets. Copying labels would confuse the Assembler.
- DISALLOW_COPY_AND_ASSIGN(Label); // NOLINT
-#endif
-};
-
-
enum SaveFPRegsMode { kDontSaveFPRegs, kSaveFPRegs };
enum ArgvMode { kArgvOnStack, kArgvInRegister };
« no previous file with comments | « BUILD.gn ('k') | src/assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698