Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 6ef46beef64e6ca8acd7b28d9c6b41f87596ec4a..f9e3ea669c49921cf411688d58dae90042a6e490 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -127,6 +127,7 @@ |
// - Cell |
// - PropertyCell |
// - Code |
+// - AbstractCode, a wrapper around Code or BytecodeArray |
// - Map |
// - Oddball |
// - Foreign |
@@ -947,6 +948,7 @@ template <class C> inline bool Is(Object* obj); |
V(JSBoundFunction) \ |
V(JSFunction) \ |
V(Code) \ |
+ V(AbstractCode) \ |
V(Oddball) \ |
V(SharedFunctionInfo) \ |
V(JSValue) \ |
@@ -4431,6 +4433,10 @@ class BytecodeArray : public FixedArrayBase { |
// Dispatched behavior. |
inline int BytecodeArraySize(); |
+ inline int instruction_size(); |
+ |
+ int SourcePosition(int offset); |
+ |
DECLARE_PRINTER(BytecodeArray) |
DECLARE_VERIFIER(BytecodeArray) |
@@ -5344,6 +5350,16 @@ class Code: public HeapObject { |
}; |
+class AbstractCode : public HeapObject { |
+ public: |
+ int SourcePosition(int offset); |
+ |
+ DECLARE_CAST(AbstractCode) |
+ inline Code* GetCode(); |
+ inline BytecodeArray* GetBytecodeArray(); |
+}; |
+ |
+ |
// Dependent code is a singly linked list of fixed arrays. Each array contains |
// code objects in weak cells for one dependent group. The suffix of the array |
// can be filled with the undefined value if the number of codes is less than |
@@ -6384,17 +6400,17 @@ class Script: public Struct { |
// resource is accessible. Otherwise, always return true. |
inline bool HasValidSource(); |
- // Convert code position into column number. |
- static int GetColumnNumber(Handle<Script> script, int code_pos); |
+ // Convert code offset into column number. |
+ static int GetColumnNumber(Handle<Script> script, int code_offset); |
- // Convert code position into (zero-based) line number. |
+ // Convert code offset into (zero-based) line number. |
// The non-handlified version does not allocate, but may be much slower. |
- static int GetLineNumber(Handle<Script> script, int code_pos); |
+ static int GetLineNumber(Handle<Script> script, int code_offset); |
int GetLineNumber(int code_pos); |
static Handle<Object> GetNameOrSourceURL(Handle<Script> script); |
- // Init line_ends array with code positions of line ends inside script source. |
+ // Init line_ends array with source code positions of line ends. |
static void InitLineEnds(Handle<Script> script); |
// Get the JS object wrapping the given script; create it if none exists. |
@@ -6530,6 +6546,10 @@ class SharedFunctionInfo: public HeapObject { |
// [code]: Function code. |
DECL_ACCESSORS(code, Code) |
+ |
+ // Retrieve interpreter bytecode or unoptimized function code. |
+ inline AbstractCode* AbstractCode(); |
+ |
inline void ReplaceCode(Code* code); |
// [optimized_code_map]: Map from native context to optimized code |
@@ -10577,20 +10597,19 @@ class DebugInfo: public Struct { |
// Fixed array holding status information for each active break point. |
DECL_ACCESSORS(break_points, FixedArray) |
- // Check if there is a break point at a code position. |
- bool HasBreakPoint(int code_position); |
- // Get the break point info object for a code position. |
- Object* GetBreakPointInfo(int code_position); |
+ // Check if there is a break point at a code offset. |
+ bool HasBreakPoint(int code_offset); |
+ // Get the break point info object for a code offset. |
+ Object* GetBreakPointInfo(int code_offset); |
// Clear a break point. |
- static void ClearBreakPoint(Handle<DebugInfo> debug_info, |
- int code_position, |
+ static void ClearBreakPoint(Handle<DebugInfo> debug_info, int code_offset, |
Handle<Object> break_point_object); |
// Set a break point. |
- static void SetBreakPoint(Handle<DebugInfo> debug_info, int code_position, |
+ static void SetBreakPoint(Handle<DebugInfo> debug_info, int code_offset, |
int source_position, int statement_position, |
Handle<Object> break_point_object); |
- // Get the break point objects for a code position. |
- Handle<Object> GetBreakPointObjects(int code_position); |
+ // Get the break point objects for a code offset. |
+ Handle<Object> GetBreakPointObjects(int code_offset); |
// Find the break point info holding this break point object. |
static Handle<Object> FindBreakPointInfo(Handle<DebugInfo> debug_info, |
Handle<Object> break_point_object); |
@@ -10613,8 +10632,8 @@ class DebugInfo: public Struct { |
private: |
static const int kNoBreakPointInfo = -1; |
- // Lookup the index in the break_points array for a code position. |
- int GetBreakPointInfoIndex(int code_position); |
+ // Lookup the index in the break_points array for a code offset. |
+ int GetBreakPointInfoIndex(int code_offset); |
DISALLOW_IMPLICIT_CONSTRUCTORS(DebugInfo); |
}; |
@@ -10625,8 +10644,8 @@ class DebugInfo: public Struct { |
// position with one or more break points. |
class BreakPointInfo: public Struct { |
public: |
- // The position in the code for the break point. |
- DECL_INT_ACCESSORS(code_position) |
+ // The code offset for the break point. |
+ DECL_INT_ACCESSORS(code_offset) |
// The position in the source for the break position. |
DECL_INT_ACCESSORS(source_position) |
// The position in the source for the last statement before this break |
@@ -10644,7 +10663,7 @@ class BreakPointInfo: public Struct { |
// Check if break point info has this break point object. |
static bool HasBreakPointObject(Handle<BreakPointInfo> info, |
Handle<Object> break_point_object); |
- // Get the number of break points for this code position. |
+ // Get the number of break points for this code offset. |
int GetBreakPointCount(); |
DECLARE_CAST(BreakPointInfo) |
@@ -10653,8 +10672,8 @@ class BreakPointInfo: public Struct { |
DECLARE_PRINTER(BreakPointInfo) |
DECLARE_VERIFIER(BreakPointInfo) |
- static const int kCodePositionIndex = Struct::kHeaderSize; |
- static const int kSourcePositionIndex = kCodePositionIndex + kPointerSize; |
+ static const int kCodeOffsetIndex = Struct::kHeaderSize; |
+ static const int kSourcePositionIndex = kCodeOffsetIndex + kPointerSize; |
static const int kStatementPositionIndex = |
kSourcePositionIndex + kPointerSize; |
static const int kBreakPointObjectsIndex = |