| Index: src/assembler.h
|
| ===================================================================
|
| --- src/assembler.h (revision 7663)
|
| +++ src/assembler.h (working copy)
|
| @@ -42,7 +42,7 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -const unsigned kNoASTId = -1;
|
| +
|
| // -----------------------------------------------------------------------------
|
| // Platform independent assembler base class.
|
|
|
| @@ -209,11 +209,10 @@
|
|
|
| enum Mode {
|
| // Please note the order is important (see IsCodeTarget, IsGCRelocMode).
|
| - CODE_TARGET, // Code target which is not any of the above.
|
| - CODE_TARGET_WITH_ID,
|
| CONSTRUCT_CALL, // code target that is a call to a JavaScript constructor.
|
| CODE_TARGET_CONTEXT, // Code target used for contextual loads and stores.
|
| DEBUG_BREAK, // Code target for the debugger statement.
|
| + CODE_TARGET, // Code target which is not any of the above.
|
| EMBEDDED_OBJECT,
|
| GLOBAL_PROPERTY_CELL,
|
|
|
| @@ -229,12 +228,10 @@
|
|
|
| // add more as needed
|
| // Pseudo-types
|
| - NUMBER_OF_MODES, // There are at most 14 modes with noncompact encoding.
|
| + NUMBER_OF_MODES, // must be no greater than 14 - see RelocInfoWriter
|
| NONE, // never recorded
|
| - LAST_CODE_ENUM = DEBUG_BREAK,
|
| - LAST_GCED_ENUM = GLOBAL_PROPERTY_CELL,
|
| - // Modes <= LAST_COMPACT_ENUM are guaranteed to have compact encoding.
|
| - LAST_COMPACT_ENUM = CODE_TARGET_WITH_ID
|
| + LAST_CODE_ENUM = CODE_TARGET,
|
| + LAST_GCED_ENUM = GLOBAL_PROPERTY_CELL
|
| };
|
|
|
|
|
| @@ -364,8 +361,7 @@
|
|
|
| static const int kCodeTargetMask = (1 << (LAST_CODE_ENUM + 1)) - 1;
|
| static const int kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION;
|
| - static const int kDataMask =
|
| - (1 << CODE_TARGET_WITH_ID) | kPositionMask | (1 << COMMENT);
|
| + static const int kDebugMask = kPositionMask | 1 << COMMENT;
|
| static const int kApplyMask; // Modes affected by apply. Depends on arch.
|
|
|
| private:
|
| @@ -384,14 +380,9 @@
|
| // lower addresses.
|
| class RelocInfoWriter BASE_EMBEDDED {
|
| public:
|
| - RelocInfoWriter() : pos_(NULL),
|
| - last_pc_(NULL),
|
| - last_id_(0),
|
| - last_position_(0) {}
|
| - RelocInfoWriter(byte* pos, byte* pc) : pos_(pos),
|
| - last_pc_(pc),
|
| - last_id_(0),
|
| - last_position_(0) {}
|
| + RelocInfoWriter() : pos_(NULL), last_pc_(NULL), last_data_(0) {}
|
| + RelocInfoWriter(byte* pos, byte* pc) : pos_(pos), last_pc_(pc),
|
| + last_data_(0) {}
|
|
|
| byte* pos() const { return pos_; }
|
| byte* last_pc() const { return last_pc_; }
|
| @@ -416,15 +407,13 @@
|
| inline uint32_t WriteVariableLengthPCJump(uint32_t pc_delta);
|
| inline void WriteTaggedPC(uint32_t pc_delta, int tag);
|
| inline void WriteExtraTaggedPC(uint32_t pc_delta, int extra_tag);
|
| - inline void WriteExtraTaggedIntData(int data_delta, int top_tag);
|
| inline void WriteExtraTaggedData(intptr_t data_delta, int top_tag);
|
| inline void WriteTaggedData(intptr_t data_delta, int tag);
|
| inline void WriteExtraTag(int extra_tag, int top_tag);
|
|
|
| byte* pos_;
|
| byte* last_pc_;
|
| - int last_id_;
|
| - int last_position_;
|
| + intptr_t last_data_;
|
| DISALLOW_COPY_AND_ASSIGN(RelocInfoWriter);
|
| };
|
|
|
| @@ -466,14 +455,13 @@
|
| int GetTopTag();
|
| void ReadTaggedPC();
|
| void AdvanceReadPC();
|
| - void AdvanceReadId();
|
| - void AdvanceReadPosition();
|
| void AdvanceReadData();
|
| void AdvanceReadVariableLengthPCJump();
|
| - int GetLocatableTypeTag();
|
| - void ReadTaggedId();
|
| - void ReadTaggedPosition();
|
| + int GetPositionTypeTag();
|
| + void ReadTaggedData();
|
|
|
| + static RelocInfo::Mode DebugInfoModeFromTag(int tag);
|
| +
|
| // If the given mode is wanted, set it in rinfo_ and return true.
|
| // Else return false. Used for efficiently skipping unwanted modes.
|
| bool SetMode(RelocInfo::Mode mode) {
|
| @@ -485,8 +473,6 @@
|
| RelocInfo rinfo_;
|
| bool done_;
|
| int mode_mask_;
|
| - int last_id_;
|
| - int last_position_;
|
| DISALLOW_COPY_AND_ASSIGN(RelocIterator);
|
| };
|
|
|
|
|