| Index: src/type-feedback-vector.h
|
| diff --git a/src/type-feedback-vector.h b/src/type-feedback-vector.h
|
| index de5a7e151266ed2ad32cea574b6b315c022f0211..e42051798c74b676ede638747d0377e4936d5604 100644
|
| --- a/src/type-feedback-vector.h
|
| +++ b/src/type-feedback-vector.h
|
| @@ -202,6 +202,9 @@ class FeedbackNexus {
|
| return NULL;
|
| }
|
|
|
| + // TODO(mvstanton): remove FindAllMaps, it didn't survive a code review.
|
| + void FindAllMaps(MapHandleList* maps) const { ExtractMaps(maps); }
|
| +
|
| virtual InlineCacheState StateFromFeedback() const = 0;
|
| virtual int ExtractMaps(MapHandleList* maps) const = 0;
|
| virtual MaybeHandle<Code> FindHandlerForMap(Handle<Map> map) const = 0;
|
| @@ -250,6 +253,8 @@ class CallICNexus : public FeedbackNexus {
|
| DCHECK(vector->GetKind(slot) == Code::CALL_IC);
|
| }
|
|
|
| + void Clear(Code* host);
|
| +
|
| void ConfigureUninitialized();
|
| void ConfigureGeneric();
|
| void ConfigureMonomorphicArray();
|
| @@ -269,6 +274,65 @@ class CallICNexus : public FeedbackNexus {
|
| return length == 0;
|
| }
|
| };
|
| +
|
| +
|
| +class LoadICNexus : public FeedbackNexus {
|
| + public:
|
| + LoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot)
|
| + : FeedbackNexus(vector, slot) {
|
| + DCHECK(vector->GetKind(slot) == Code::LOAD_IC);
|
| + }
|
| + LoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot)
|
| + : FeedbackNexus(vector, slot) {
|
| + DCHECK(vector->GetKind(slot) == Code::LOAD_IC);
|
| + }
|
| +
|
| + void Clear(Code* host);
|
| +
|
| + void ConfigureMegamorphic();
|
| + void ConfigurePremonomorphic();
|
| + void ConfigureMonomorphic(Handle<HeapType> type, Handle<Code> handler);
|
| +
|
| + void ConfigurePolymorphic(TypeHandleList* types, CodeHandleList* handlers);
|
| +
|
| + virtual InlineCacheState StateFromFeedback() const OVERRIDE;
|
| + virtual int ExtractMaps(MapHandleList* maps) const OVERRIDE;
|
| + virtual MaybeHandle<Code> FindHandlerForMap(Handle<Map> map) const OVERRIDE;
|
| + virtual bool FindHandlers(CodeHandleList* code_list,
|
| + int length = -1) const OVERRIDE;
|
| +};
|
| +
|
| +
|
| +class KeyedLoadICNexus : public FeedbackNexus {
|
| + public:
|
| + KeyedLoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot)
|
| + : FeedbackNexus(vector, slot) {
|
| + DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC);
|
| + }
|
| + KeyedLoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot)
|
| + : FeedbackNexus(vector, slot) {
|
| + DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC);
|
| + }
|
| +
|
| + void Clear(Code* host);
|
| +
|
| + void ConfigureMegamorphic();
|
| + void ConfigureGeneric();
|
| + void ConfigurePremonomorphic();
|
| + // name can be a null handle for element loads.
|
| + void ConfigureMonomorphic(Handle<Name> name, Handle<HeapType> type,
|
| + Handle<Code> handler);
|
| + // name can be null.
|
| + void ConfigurePolymorphic(Handle<Name> name, TypeHandleList* types,
|
| + CodeHandleList* handlers);
|
| +
|
| + virtual InlineCacheState StateFromFeedback() const OVERRIDE;
|
| + virtual int ExtractMaps(MapHandleList* maps) const OVERRIDE;
|
| + virtual MaybeHandle<Code> FindHandlerForMap(Handle<Map> map) const OVERRIDE;
|
| + virtual bool FindHandlers(CodeHandleList* code_list,
|
| + int length = -1) const OVERRIDE;
|
| + virtual Name* FindFirstName() const OVERRIDE;
|
| +};
|
| }
|
| } // namespace v8::internal
|
|
|
|
|