Chromium Code Reviews| Index: src/type-feedback-vector.cc |
| diff --git a/src/type-feedback-vector.cc b/src/type-feedback-vector.cc |
| index 3cf81f8c5f16228f2fece4935adcfe77e722b446..9b03e0fc1b513f4ed79a83324eaa878751658101 100644 |
| --- a/src/type-feedback-vector.cc |
| +++ b/src/type-feedback-vector.cc |
| @@ -4,6 +4,7 @@ |
| #include "src/v8.h" |
| +#include "src/code-stubs.h" |
| #include "src/ic/ic.h" |
| #include "src/ic/ic-state.h" |
| #include "src/objects.h" |
| @@ -312,7 +313,9 @@ InlineCacheState CallICNexus::StateFromFeedback() const { |
| Isolate* isolate = GetIsolate(); |
| Object* feedback = GetFeedback(); |
| DCHECK(!FLAG_vector_ics || |
| - GetFeedbackExtra() == *vector()->UninitializedSentinel(isolate)); |
| + GetFeedbackExtra() == *vector()->UninitializedSentinel(isolate) || |
| + GetFeedbackExtra() == |
| + Smi::FromInt(CallICStub::kHasReturnedMinusZeroSentinel)); |
|
mvstanton
2015/05/04 09:41:22
I like this tight control of expectations, thx!
danno
2015/05/04 14:31:56
Acknowledged.
|
| if (feedback == *vector()->MegamorphicSentinel(isolate)) { |
| return GENERIC; |
| @@ -343,6 +346,14 @@ void CallICNexus::ConfigureMonomorphicArray() { |
| } |
| +void CallICNexus::ConfigureMonomorphicMathFunction( |
| + Handle<JSFunction> function) { |
| + Handle<WeakCell> new_cell = GetIsolate()->factory()->NewWeakCell(function); |
| + SetFeedback(*new_cell); |
| + SetFeedbackExtra(*vector()->UninitializedSentinel(GetIsolate())); |
| +} |
| + |
| + |
| void CallICNexus::ConfigureUninitialized() { |
| SetFeedback(*vector()->UninitializedSentinel(GetIsolate()), |
| SKIP_WRITE_BARRIER); |