| Index: src/ic.h
|
| diff --git a/src/ic.h b/src/ic.h
|
| index 197c32e6a55515c787628bab1ac5c91bc5df1cd1..5c497913395cf86ff67432f8496b0285eef179a9 100644
|
| --- a/src/ic.h
|
| +++ b/src/ic.h
|
| @@ -160,11 +160,12 @@ class IC {
|
| Code* GetOriginalCode() const;
|
|
|
| // Set the call-site target.
|
| - void set_target(Code* code) {
|
| + void set_target(Code* code,
|
| + ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED) {
|
| #ifdef VERIFY_HEAP
|
| code->VerifyEmbeddedObjectsDependency();
|
| #endif
|
| - SetTargetAtAddress(address(), code, constant_pool());
|
| + SetTargetAtAddress(address(), code, constant_pool(), icache_flush_mode);
|
| target_set_ = true;
|
| }
|
|
|
| @@ -186,7 +187,9 @@ class IC {
|
| ConstantPoolArray* constant_pool);
|
| static inline void SetTargetAtAddress(Address address,
|
| Code* target,
|
| - ConstantPoolArray* constant_pool);
|
| + ConstantPoolArray* constant_pool,
|
| + ICacheFlushMode icache_flush_mode =
|
| + FLUSH_ICACHE_IF_NEEDED);
|
| static void PostPatching(Address address, Code* target, Code* old_target);
|
|
|
| // Compute the handler either by compiling or by retrieving a cached version.
|
| @@ -455,12 +458,13 @@ class LoadIC: public IC {
|
| protected:
|
| virtual Code::Kind kind() const { return Code::LOAD_IC; }
|
|
|
| - void set_target(Code* code) {
|
| + void set_target(Code* code,
|
| + ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED) {
|
| // The contextual mode must be preserved across IC patching.
|
| ASSERT(GetContextualMode(code->extra_ic_state()) ==
|
| GetContextualMode(target()->extra_ic_state()));
|
|
|
| - IC::set_target(code);
|
| + IC::set_target(code, icache_flush_mode);
|
| }
|
|
|
| virtual Handle<Code> slow_stub() const {
|
| @@ -654,11 +658,12 @@ class StoreIC: public IC {
|
| InlineCacheHolderFlag cache_holder);
|
|
|
| private:
|
| - void set_target(Code* code) {
|
| + void set_target(Code* code,
|
| + ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED) {
|
| // Strict mode must be preserved across IC patching.
|
| ASSERT(GetStrictMode(code->extra_ic_state()) ==
|
| GetStrictMode(target()->extra_ic_state()));
|
| - IC::set_target(code);
|
| + IC::set_target(code, icache_flush_mode);
|
| }
|
|
|
| static void Clear(Isolate* isolate,
|
|
|