| 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 };
|
|
|