Chromium Code Reviews| Index: src/ic/ic.h |
| diff --git a/src/ic/ic.h b/src/ic/ic.h |
| index 4da6e7ceccf5453f447339c627c6013ac3c6d405..50777814ac4cd5425e8b160e6471e65625cf82c8 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,9 @@ 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 void set_raw_constant_pool(Address* constant_pool, Isolate* isolate); |
| + inline Address raw_constant_pool() const; |
| void FindTargetMaps() { |
| if (target_maps_set_) return; |
| @@ -285,7 +285,10 @@ class IC { |
| // 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_; |
| + union { |
| + Address* raw_constant_pool_; |
| + Handle<ConstantPoolArray> raw_constant_pool_handle_; |
| + }; |
|
rmcilroy
2015/04/08 12:38:55
let's not make this a union. I'm not sure that sto
MTBrandyberry
2015/05/07 20:38:32
This address is the stack slot holding the constan
|
| // The original code target that missed. |
| Handle<Code> target_; |
| @@ -436,7 +439,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 +503,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 +581,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 +668,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); |
| @@ -713,7 +716,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_; |
| @@ -729,8 +732,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); |