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

Unified Diff: src/assembler.h

Issue 1232803002: Debugger: refactor reloc info. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix mips Created 5 years, 5 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 | « src/arm64/macro-assembler-arm64.cc ('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 f5349038dac0335c088da76771c2ffd20ef22aec..1b4c76540757a17de02e341327d7f4dacc812064 100644
--- a/src/assembler.h
+++ b/src/assembler.h
@@ -364,7 +364,7 @@ class RelocInfo {
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.
- DEBUG_BREAK, // Code target for the debugger statement.
+ DEBUGGER_STATEMENT, // Code target for the debugger statement.
EMBEDDED_OBJECT,
CELL,
@@ -374,7 +374,12 @@ class RelocInfo {
COMMENT,
POSITION, // See comment for kNoPosition above.
STATEMENT_POSITION, // See comment for kNoPosition above.
- DEBUG_BREAK_SLOT, // Additional code inserted for debug break slot.
+
+ // Additional code inserted for debug break slot.
+ DEBUG_BREAK_SLOT_AT_POSITION,
+ DEBUG_BREAK_SLOT_AT_CALL,
+ DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL,
+
EXTERNAL_REFERENCE, // The address of an external C++ function.
INTERNAL_REFERENCE, // An address inside the same function.
@@ -386,7 +391,7 @@ class RelocInfo {
CONST_POOL,
VENEER_POOL,
- DEOPT_REASON, // Deoptimization reason index.
+ DEOPT_REASON, // Deoptimization reason index.
// This is not an actual reloc mode, but used to encode a long pc jump that
// cannot be encoded as part of another record.
@@ -401,10 +406,12 @@ class RelocInfo {
FIRST_REAL_RELOC_MODE = CODE_TARGET,
LAST_REAL_RELOC_MODE = VENEER_POOL,
- LAST_CODE_ENUM = DEBUG_BREAK,
+ LAST_CODE_ENUM = DEBUGGER_STATEMENT,
LAST_GCED_ENUM = CELL,
};
+ STATIC_ASSERT(NUMBER_OF_MODES <= kBitsPerInt);
+
RelocInfo() {}
RelocInfo(byte* pc, Mode rmode, intptr_t data, Code* host)
@@ -463,10 +470,20 @@ class RelocInfo {
return mode == INTERNAL_REFERENCE_ENCODED;
}
static inline bool IsDebugBreakSlot(Mode mode) {
- return mode == DEBUG_BREAK_SLOT;
+ return IsDebugBreakSlotAtPosition(mode) || IsDebugBreakSlotAtCall(mode) ||
+ IsDebugBreakSlotAtConstructCall(mode);
+ }
+ static inline bool IsDebugBreakSlotAtPosition(Mode mode) {
+ return mode == DEBUG_BREAK_SLOT_AT_POSITION;
+ }
+ static inline bool IsDebugBreakSlotAtCall(Mode mode) {
+ return mode == DEBUG_BREAK_SLOT_AT_CALL;
+ }
+ static inline bool IsDebugBreakSlotAtConstructCall(Mode mode) {
+ return mode == DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL;
}
static inline bool IsDebuggerStatement(Mode mode) {
- return mode == DEBUG_BREAK;
+ return mode == DEBUGGER_STATEMENT;
}
static inline bool IsNone(Mode mode) {
return mode == NONE32 || mode == NONE64;
@@ -498,8 +515,6 @@ class RelocInfo {
// constant pool, otherwise the pointer is embedded in the instruction stream.
bool IsInConstantPool();
- static bool DebugBreakIsConstructCall(intptr_t data);
- static bool DebugBreakIsCall(intptr_t data);
static int DebugBreakCallArgumentsCount(intptr_t data);
// Read/modify the code target in the branch/call instruction
@@ -618,9 +633,10 @@ class RelocInfo {
static const int kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION;
static const int kDataMask =
(1 << CODE_TARGET_WITH_ID) | kPositionMask | (1 << COMMENT);
+ static const int kDebugBreakSlotMask =
+ 1 << DEBUG_BREAK_SLOT_AT_POSITION | 1 << DEBUG_BREAK_SLOT_AT_CALL |
+ 1 << DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL;
static const int kApplyMask; // Modes affected by apply. Depends on arch.
- static const int kDebugBreakNonCallSentinel = -2;
- static const int kDebugBreakConstructCallSentinel = -1;
private:
// On ARM, note that pc_ is the address of the constant pool entry
« no previous file with comments | « src/arm64/macro-assembler-arm64.cc ('k') | src/assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698