Index: src/ic/ic.h |
diff --git a/src/ic/ic.h b/src/ic/ic.h |
index d51309cffee853dbeba06d761bd3012d1e61a607..d824a3f158a399b981d0a4caa7671d2bab764ff7 100644 |
--- a/src/ic/ic.h |
+++ b/src/ic/ic.h |
@@ -77,8 +77,7 @@ class IC { |
} |
// Clear the inline cache to initial state. |
- static void Clear(Isolate* isolate, Address address, |
- ConstantPoolArray* constant_pool); |
+ static void Clear(Isolate* isolate, Address address, Address constant_pool); |
#ifdef DEBUG |
bool IsLoadStub() const { |
@@ -168,9 +167,9 @@ class IC { |
// Access the target code for the given IC address. |
static inline Code* GetTargetAtAddress(Address address, |
- ConstantPoolArray* constant_pool); |
+ Address constant_pool); |
static inline void SetTargetAtAddress(Address address, Code* target, |
- ConstantPoolArray* constant_pool); |
+ Address constant_pool); |
static void OnTypeFeedbackChanged(Isolate* isolate, Address address, |
State old_state, State new_state, |
bool target_remains_ic_stub); |
@@ -254,8 +253,8 @@ class IC { |
private: |
inline Code* raw_target() const; |
- inline ConstantPoolArray* constant_pool() const; |
- inline ConstantPoolArray* raw_constant_pool() const; |
+ inline Address constant_pool() const; |
+ inline Address raw_constant_pool() const; |
void FindTargetMaps() { |
if (target_maps_set_) return; |
@@ -275,17 +274,17 @@ class IC { |
// Frame pointer for the frame that uses (calls) the IC. |
Address fp_; |
- // All access to the program counter of an IC structure is indirect |
- // to make the code GC safe. This feature is crucial since |
+ // All access to the program counter and constant pool of an IC structure is |
+ // indirect to make the code GC safe. This feature is crucial since |
// GetProperty and SetProperty are called and they in turn might |
// invoke the garbage collector. |
Address* pc_address_; |
- Isolate* isolate_; |
- |
// The constant pool of the code which originally called the IC (which might |
// be for the breakpointed copy of the original code). |
- Handle<ConstantPoolArray> raw_constant_pool_; |
+ Address* constant_pool_address_; |
+ |
+ Isolate* isolate_; |
// The original code target that missed. |
Handle<Code> target_; |
@@ -436,7 +435,7 @@ class LoadIC : public IC { |
Handle<Code> SimpleFieldLoad(FieldIndex index); |
static void Clear(Isolate* isolate, Address address, Code* target, |
- ConstantPoolArray* constant_pool); |
+ Address constant_pool); |
friend class IC; |
}; |
@@ -500,7 +499,7 @@ class KeyedLoadIC : public LoadIC { |
private: |
static void Clear(Isolate* isolate, Address address, Code* target, |
- ConstantPoolArray* constant_pool); |
+ Address constant_pool); |
friend class IC; |
}; |
@@ -578,7 +577,7 @@ class StoreIC : public IC { |
inline void set_target(Code* code); |
static void Clear(Isolate* isolate, Address address, Code* target, |
- ConstantPoolArray* constant_pool); |
+ Address constant_pool); |
friend class IC; |
}; |
@@ -665,7 +664,7 @@ class KeyedStoreIC : public StoreIC { |
} |
static void Clear(Isolate* isolate, Address address, Code* target, |
- ConstantPoolArray* constant_pool); |
+ Address constant_pool); |
KeyedAccessStoreMode GetStoreMode(Handle<JSObject> receiver, |
Handle<Object> key, Handle<Object> value); |
@@ -714,7 +713,7 @@ class CompareIC : public IC { |
static Code* GetRawUninitialized(Isolate* isolate, Token::Value op); |
static void Clear(Isolate* isolate, Address address, Code* target, |
- ConstantPoolArray* constant_pool); |
+ Address constant_pool); |
Token::Value op_; |
@@ -730,8 +729,7 @@ class CompareNilIC : public IC { |
static Handle<Code> GetUninitialized(); |
- static void Clear(Address address, Code* target, |
- ConstantPoolArray* constant_pool); |
+ static void Clear(Address address, Code* target, Address constant_pool); |
static Handle<Object> DoCompareNilSlow(Isolate* isolate, NilValue nil, |
Handle<Object> object); |