| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_TYPE_FEEDBACK_VECTOR_H_ | 5 #ifndef V8_TYPE_FEEDBACK_VECTOR_H_ |
| 6 #define V8_TYPE_FEEDBACK_VECTOR_H_ | 6 #define V8_TYPE_FEEDBACK_VECTOR_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "src/checks.h" | 10 #include "src/checks.h" |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 DCHECK(vector->GetKind(slot) == Code::CALL_IC); | 350 DCHECK(vector->GetKind(slot) == Code::CALL_IC); |
| 351 } | 351 } |
| 352 | 352 |
| 353 void Clear(Code* host); | 353 void Clear(Code* host); |
| 354 | 354 |
| 355 void ConfigureUninitialized(); | 355 void ConfigureUninitialized(); |
| 356 void ConfigureGeneric(); | 356 void ConfigureGeneric(); |
| 357 void ConfigureMonomorphicArray(); | 357 void ConfigureMonomorphicArray(); |
| 358 void ConfigureMonomorphic(Handle<JSFunction> function); | 358 void ConfigureMonomorphic(Handle<JSFunction> function); |
| 359 | 359 |
| 360 InlineCacheState StateFromFeedback() const OVERRIDE; | 360 InlineCacheState StateFromFeedback() const override; |
| 361 | 361 |
| 362 int ExtractMaps(MapHandleList* maps) const OVERRIDE { | 362 int ExtractMaps(MapHandleList* maps) const override { |
| 363 // CallICs don't record map feedback. | 363 // CallICs don't record map feedback. |
| 364 return 0; | 364 return 0; |
| 365 } | 365 } |
| 366 MaybeHandle<Code> FindHandlerForMap(Handle<Map> map) const OVERRIDE { | 366 MaybeHandle<Code> FindHandlerForMap(Handle<Map> map) const override { |
| 367 return MaybeHandle<Code>(); | 367 return MaybeHandle<Code>(); |
| 368 } | 368 } |
| 369 virtual bool FindHandlers(CodeHandleList* code_list, | 369 virtual bool FindHandlers(CodeHandleList* code_list, |
| 370 int length = -1) const OVERRIDE { | 370 int length = -1) const override { |
| 371 return length == 0; | 371 return length == 0; |
| 372 } | 372 } |
| 373 }; | 373 }; |
| 374 | 374 |
| 375 | 375 |
| 376 class LoadICNexus : public FeedbackNexus { | 376 class LoadICNexus : public FeedbackNexus { |
| 377 public: | 377 public: |
| 378 LoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) | 378 LoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) |
| 379 : FeedbackNexus(vector, slot) { | 379 : FeedbackNexus(vector, slot) { |
| 380 DCHECK(vector->GetKind(slot) == Code::LOAD_IC); | 380 DCHECK(vector->GetKind(slot) == Code::LOAD_IC); |
| 381 } | 381 } |
| 382 LoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) | 382 LoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) |
| 383 : FeedbackNexus(vector, slot) { | 383 : FeedbackNexus(vector, slot) { |
| 384 DCHECK(vector->GetKind(slot) == Code::LOAD_IC); | 384 DCHECK(vector->GetKind(slot) == Code::LOAD_IC); |
| 385 } | 385 } |
| 386 | 386 |
| 387 void Clear(Code* host); | 387 void Clear(Code* host); |
| 388 | 388 |
| 389 void ConfigureMegamorphic(); | 389 void ConfigureMegamorphic(); |
| 390 void ConfigurePremonomorphic(); | 390 void ConfigurePremonomorphic(); |
| 391 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Code> handler); | 391 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Code> handler); |
| 392 | 392 |
| 393 void ConfigurePolymorphic(MapHandleList* maps, CodeHandleList* handlers); | 393 void ConfigurePolymorphic(MapHandleList* maps, CodeHandleList* handlers); |
| 394 | 394 |
| 395 InlineCacheState StateFromFeedback() const OVERRIDE; | 395 InlineCacheState StateFromFeedback() const override; |
| 396 }; | 396 }; |
| 397 | 397 |
| 398 | 398 |
| 399 class KeyedLoadICNexus : public FeedbackNexus { | 399 class KeyedLoadICNexus : public FeedbackNexus { |
| 400 public: | 400 public: |
| 401 KeyedLoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) | 401 KeyedLoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) |
| 402 : FeedbackNexus(vector, slot) { | 402 : FeedbackNexus(vector, slot) { |
| 403 DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC); | 403 DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC); |
| 404 } | 404 } |
| 405 KeyedLoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) | 405 KeyedLoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) |
| 406 : FeedbackNexus(vector, slot) { | 406 : FeedbackNexus(vector, slot) { |
| 407 DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC); | 407 DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC); |
| 408 } | 408 } |
| 409 | 409 |
| 410 void Clear(Code* host); | 410 void Clear(Code* host); |
| 411 | 411 |
| 412 void ConfigureMegamorphic(); | 412 void ConfigureMegamorphic(); |
| 413 void ConfigurePremonomorphic(); | 413 void ConfigurePremonomorphic(); |
| 414 // name can be a null handle for element loads. | 414 // name can be a null handle for element loads. |
| 415 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map, | 415 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map, |
| 416 Handle<Code> handler); | 416 Handle<Code> handler); |
| 417 // name can be null. | 417 // name can be null. |
| 418 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps, | 418 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps, |
| 419 CodeHandleList* handlers); | 419 CodeHandleList* handlers); |
| 420 | 420 |
| 421 InlineCacheState StateFromFeedback() const OVERRIDE; | 421 InlineCacheState StateFromFeedback() const override; |
| 422 Name* FindFirstName() const OVERRIDE; | 422 Name* FindFirstName() const override; |
| 423 }; | 423 }; |
| 424 } | 424 } |
| 425 } // namespace v8::internal | 425 } // namespace v8::internal |
| 426 | 426 |
| 427 #endif // V8_TRANSITIONS_H_ | 427 #endif // V8_TRANSITIONS_H_ |
| OLD | NEW |