Index: src/ia32/stub-cache-ia32.cc |
diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
index 32a954e58daa0d3a866920f4bf4e4f69dc4754bd..c0f40883e47836b160df1ca349537ebd6f2ff689 100644 |
--- a/src/ia32/stub-cache-ia32.cc |
+++ b/src/ia32/stub-cache-ia32.cc |
@@ -479,17 +479,14 @@ class LoadInterceptorCompiler BASE_EMBEDDED { |
// Holds information about possible function call optimizations. |
class CallOptimization BASE_EMBEDDED { |
public: |
- explicit CallOptimization(LookupResult* lookup) |
- : constant_function_(NULL), |
- is_simple_api_call_(false), |
- expected_receiver_type_(NULL), |
- api_call_info_(NULL) { |
- if (!lookup->IsProperty() || !lookup->IsCacheable()) return; |
- |
- // We only optimize constant function calls. |
- if (lookup->type() != CONSTANT_FUNCTION) return; |
- |
- Initialize(lookup->GetConstantFunction()); |
+ explicit CallOptimization(LookupResult* lookup) { |
+ if (!lookup->IsProperty() || !lookup->IsCacheable() || |
+ lookup->type() != CONSTANT_FUNCTION) { |
+ Initialize(NULL); |
+ } else { |
+ // We only optimize constant function calls. |
+ Initialize(lookup->GetConstantFunction()); |
+ } |
} |
explicit CallOptimization(JSFunction* function) { |
@@ -537,11 +534,14 @@ class CallOptimization BASE_EMBEDDED { |
private: |
void Initialize(JSFunction* function) { |
- if (!function->is_compiled()) return; |
- |
- constant_function_ = function; |
+ constant_function_ = NULL; |
is_simple_api_call_ = false; |
+ expected_receiver_type_ = NULL; |
+ api_call_info_ = NULL; |
+ if (function == NULL || !function->is_compiled()) return; |
+ |
+ constant_function_ = function; |
AnalyzePossibleApiFunction(function); |
} |