| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 Handle<Code> GetCodeWithFlags(Code::Flags flags, Handle<String> name); | 521 Handle<Code> GetCodeWithFlags(Code::Flags flags, Handle<String> name); |
| 522 | 522 |
| 523 MUST_USE_RESULT MaybeObject* TryGetCodeWithFlags(Code::Flags flags, | 523 MUST_USE_RESULT MaybeObject* TryGetCodeWithFlags(Code::Flags flags, |
| 524 const char* name); | 524 const char* name); |
| 525 MUST_USE_RESULT MaybeObject* TryGetCodeWithFlags(Code::Flags flags, | 525 MUST_USE_RESULT MaybeObject* TryGetCodeWithFlags(Code::Flags flags, |
| 526 String* name); | 526 String* name); |
| 527 | 527 |
| 528 MacroAssembler* masm() { return &masm_; } | 528 MacroAssembler* masm() { return &masm_; } |
| 529 void set_failure(Failure* failure) { failure_ = failure; } | 529 void set_failure(Failure* failure) { failure_ = failure; } |
| 530 | 530 |
| 531 void GenerateLoadField(JSObject* object, | 531 void GenerateLoadField(Handle<JSObject> object, |
| 532 JSObject* holder, | 532 Handle<JSObject> holder, |
| 533 Register receiver, | 533 Register receiver, |
| 534 Register scratch1, | 534 Register scratch1, |
| 535 Register scratch2, | 535 Register scratch2, |
| 536 Register scratch3, | 536 Register scratch3, |
| 537 int index, | 537 int index, |
| 538 String* name, | 538 Handle<String> name, |
| 539 Label* miss); | 539 Label* miss); |
| 540 | 540 |
| 541 MaybeObject* GenerateLoadCallback(JSObject* object, | 541 MaybeObject* GenerateLoadCallback(JSObject* object, |
| 542 JSObject* holder, | 542 JSObject* holder, |
| 543 Register receiver, | 543 Register receiver, |
| 544 Register name_reg, | 544 Register name_reg, |
| 545 Register scratch1, | 545 Register scratch1, |
| 546 Register scratch2, | 546 Register scratch2, |
| 547 Register scratch3, | 547 Register scratch3, |
| 548 AccessorInfo* callback, | 548 AccessorInfo* callback, |
| 549 String* name, | 549 String* name, |
| 550 Label* miss); | 550 Label* miss); |
| 551 | 551 |
| 552 void GenerateLoadConstant(JSObject* object, | 552 void GenerateLoadConstant(Handle<JSObject> object, |
| 553 JSObject* holder, | 553 Handle<JSObject> holder, |
| 554 Register receiver, | 554 Register receiver, |
| 555 Register scratch1, | 555 Register scratch1, |
| 556 Register scratch2, | 556 Register scratch2, |
| 557 Register scratch3, | 557 Register scratch3, |
| 558 Object* value, | 558 Handle<Object> value, |
| 559 String* name, | 559 Handle<String> name, |
| 560 Label* miss); | 560 Label* miss); |
| 561 | 561 |
| 562 void GenerateLoadInterceptor(JSObject* object, | 562 void GenerateLoadInterceptor(JSObject* object, |
| 563 JSObject* holder, | 563 JSObject* holder, |
| 564 LookupResult* lookup, | 564 LookupResult* lookup, |
| 565 Register receiver, | 565 Register receiver, |
| 566 Register name_reg, | 566 Register name_reg, |
| 567 Register scratch1, | 567 Register scratch1, |
| 568 Register scratch2, | 568 Register scratch2, |
| 569 Register scratch3, | 569 Register scratch3, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 586 | 586 |
| 587 | 587 |
| 588 class LoadStubCompiler: public StubCompiler { | 588 class LoadStubCompiler: public StubCompiler { |
| 589 public: | 589 public: |
| 590 explicit LoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { } | 590 explicit LoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { } |
| 591 | 591 |
| 592 Handle<Code> CompileLoadNonexistent(Handle<String> name, | 592 Handle<Code> CompileLoadNonexistent(Handle<String> name, |
| 593 Handle<JSObject> object, | 593 Handle<JSObject> object, |
| 594 Handle<JSObject> last); | 594 Handle<JSObject> last); |
| 595 | 595 |
| 596 MUST_USE_RESULT MaybeObject* CompileLoadNonexistent(String* name, | |
| 597 JSObject* object, | |
| 598 JSObject* last); | |
| 599 | |
| 600 Handle<Code> CompileLoadField(Handle<JSObject> object, | 596 Handle<Code> CompileLoadField(Handle<JSObject> object, |
| 601 Handle<JSObject> holder, | 597 Handle<JSObject> holder, |
| 602 int index, | 598 int index, |
| 603 Handle<String> name); | 599 Handle<String> name); |
| 604 | 600 |
| 605 MUST_USE_RESULT MaybeObject* CompileLoadField(JSObject* object, | |
| 606 JSObject* holder, | |
| 607 int index, | |
| 608 String* name); | |
| 609 | |
| 610 Handle<Code> CompileLoadCallback(Handle<String> name, | 601 Handle<Code> CompileLoadCallback(Handle<String> name, |
| 611 Handle<JSObject> object, | 602 Handle<JSObject> object, |
| 612 Handle<JSObject> holder, | 603 Handle<JSObject> holder, |
| 613 Handle<AccessorInfo> callback); | 604 Handle<AccessorInfo> callback); |
| 614 | 605 |
| 615 MUST_USE_RESULT MaybeObject* CompileLoadCallback(String* name, | 606 MUST_USE_RESULT MaybeObject* CompileLoadCallback(String* name, |
| 616 JSObject* object, | 607 JSObject* object, |
| 617 JSObject* holder, | 608 JSObject* holder, |
| 618 AccessorInfo* callback); | 609 AccessorInfo* callback); |
| 619 | 610 |
| 620 Handle<Code> CompileLoadConstant(Handle<JSObject> object, | 611 Handle<Code> CompileLoadConstant(Handle<JSObject> object, |
| 621 Handle<JSObject> holder, | 612 Handle<JSObject> holder, |
| 622 Handle<Object> value, | 613 Handle<Object> value, |
| 623 Handle<String> name); | 614 Handle<String> name); |
| 624 | 615 |
| 625 MUST_USE_RESULT MaybeObject* CompileLoadConstant(JSObject* object, | |
| 626 JSObject* holder, | |
| 627 Object* value, | |
| 628 String* name); | |
| 629 | |
| 630 Handle<Code> CompileLoadInterceptor(Handle<JSObject> object, | 616 Handle<Code> CompileLoadInterceptor(Handle<JSObject> object, |
| 631 Handle<JSObject> holder, | 617 Handle<JSObject> holder, |
| 632 Handle<String> name); | 618 Handle<String> name); |
| 633 | 619 |
| 634 MUST_USE_RESULT MaybeObject* CompileLoadInterceptor(JSObject* object, | 620 MUST_USE_RESULT MaybeObject* CompileLoadInterceptor(JSObject* object, |
| 635 JSObject* holder, | 621 JSObject* holder, |
| 636 String* name); | 622 String* name); |
| 637 | 623 |
| 638 Handle<Code> CompileLoadGlobal(Handle<JSObject> object, | 624 Handle<Code> CompileLoadGlobal(Handle<JSObject> object, |
| 639 Handle<GlobalObject> holder, | 625 Handle<GlobalObject> holder, |
| 640 Handle<JSGlobalPropertyCell> cell, | 626 Handle<JSGlobalPropertyCell> cell, |
| 641 Handle<String> name, | 627 Handle<String> name, |
| 642 bool is_dont_delete); | 628 bool is_dont_delete); |
| 643 | 629 |
| 644 MUST_USE_RESULT MaybeObject* CompileLoadGlobal(JSObject* object, | 630 MUST_USE_RESULT MaybeObject* CompileLoadGlobal(JSObject* object, |
| 645 GlobalObject* holder, | 631 GlobalObject* holder, |
| 646 JSGlobalPropertyCell* cell, | 632 JSGlobalPropertyCell* cell, |
| 647 String* name, | 633 String* name, |
| 648 bool is_dont_delete); | 634 bool is_dont_delete); |
| 649 | 635 |
| 650 private: | 636 private: |
| 651 MUST_USE_RESULT MaybeObject* GetCode(PropertyType type, String* name); | 637 MUST_USE_RESULT MaybeObject* TryGetCode(PropertyType type, String* name); |
| 638 |
| 639 Handle<Code> GetCode(PropertyType type, Handle<String> name); |
| 652 }; | 640 }; |
| 653 | 641 |
| 654 | 642 |
| 655 class KeyedLoadStubCompiler: public StubCompiler { | 643 class KeyedLoadStubCompiler: public StubCompiler { |
| 656 public: | 644 public: |
| 657 explicit KeyedLoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { } | 645 explicit KeyedLoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { } |
| 658 | 646 |
| 659 Handle<Code> CompileLoadField(Handle<String> name, | 647 Handle<Code> CompileLoadField(Handle<String> name, |
| 660 Handle<JSObject> object, | 648 Handle<JSObject> object, |
| 661 Handle<JSObject> holder, | 649 Handle<JSObject> holder, |
| 662 int index); | 650 int index); |
| 663 | 651 |
| 664 MUST_USE_RESULT MaybeObject* CompileLoadField(String* name, | |
| 665 JSObject* object, | |
| 666 JSObject* holder, | |
| 667 int index); | |
| 668 | |
| 669 Handle<Code> CompileLoadCallback(Handle<String> name, | 652 Handle<Code> CompileLoadCallback(Handle<String> name, |
| 670 Handle<JSObject> object, | 653 Handle<JSObject> object, |
| 671 Handle<JSObject> holder, | 654 Handle<JSObject> holder, |
| 672 Handle<AccessorInfo> callback); | 655 Handle<AccessorInfo> callback); |
| 673 | 656 |
| 674 MUST_USE_RESULT MaybeObject* CompileLoadCallback(String* name, | 657 MUST_USE_RESULT MaybeObject* CompileLoadCallback(String* name, |
| 675 JSObject* object, | 658 JSObject* object, |
| 676 JSObject* holder, | 659 JSObject* holder, |
| 677 AccessorInfo* callback); | 660 AccessorInfo* callback); |
| 678 | 661 |
| 679 Handle<Code> CompileLoadConstant(Handle<String> name, | 662 Handle<Code> CompileLoadConstant(Handle<String> name, |
| 680 Handle<JSObject> object, | 663 Handle<JSObject> object, |
| 681 Handle<JSObject> holder, | 664 Handle<JSObject> holder, |
| 682 Handle<Object> value); | 665 Handle<Object> value); |
| 683 | 666 |
| 684 MUST_USE_RESULT MaybeObject* CompileLoadConstant(String* name, | |
| 685 JSObject* object, | |
| 686 JSObject* holder, | |
| 687 Object* value); | |
| 688 | |
| 689 Handle<Code> CompileLoadInterceptor(Handle<JSObject> object, | 667 Handle<Code> CompileLoadInterceptor(Handle<JSObject> object, |
| 690 Handle<JSObject> holder, | 668 Handle<JSObject> holder, |
| 691 Handle<String> name); | 669 Handle<String> name); |
| 692 | 670 |
| 693 MUST_USE_RESULT MaybeObject* CompileLoadInterceptor(JSObject* object, | 671 MUST_USE_RESULT MaybeObject* CompileLoadInterceptor(JSObject* object, |
| 694 JSObject* holder, | 672 JSObject* holder, |
| 695 String* name); | 673 String* name); |
| 696 | 674 |
| 697 Handle<Code> CompileLoadArrayLength(Handle<String> name); | 675 Handle<Code> CompileLoadArrayLength(Handle<String> name); |
| 698 | 676 |
| 699 MUST_USE_RESULT MaybeObject* CompileLoadArrayLength(String* name); | |
| 700 | |
| 701 Handle<Code> CompileLoadStringLength(Handle<String> name); | 677 Handle<Code> CompileLoadStringLength(Handle<String> name); |
| 702 | 678 |
| 703 MUST_USE_RESULT MaybeObject* CompileLoadStringLength(String* name); | |
| 704 | |
| 705 Handle<Code> CompileLoadFunctionPrototype(Handle<String> name); | 679 Handle<Code> CompileLoadFunctionPrototype(Handle<String> name); |
| 706 | 680 |
| 707 MUST_USE_RESULT MaybeObject* CompileLoadFunctionPrototype(String* name); | |
| 708 | |
| 709 Handle<Code> CompileLoadElement(Handle<Map> receiver_map); | 681 Handle<Code> CompileLoadElement(Handle<Map> receiver_map); |
| 710 | 682 |
| 711 MUST_USE_RESULT MaybeObject* CompileLoadElement(Map* receiver_map); | 683 MUST_USE_RESULT MaybeObject* CompileLoadElement(Map* receiver_map); |
| 712 | 684 |
| 713 Handle<Code> CompileLoadPolymorphic(MapHandleList* receiver_maps, | 685 Handle<Code> CompileLoadPolymorphic(MapHandleList* receiver_maps, |
| 714 CodeHandleList* handler_ics); | 686 CodeHandleList* handler_ics); |
| 715 | 687 |
| 716 MUST_USE_RESULT MaybeObject* CompileLoadPolymorphic( | 688 MUST_USE_RESULT MaybeObject* CompileLoadPolymorphic( |
| 717 MapList* receiver_maps, | 689 MapList* receiver_maps, |
| 718 CodeList* handler_ics); | 690 CodeList* handler_ics); |
| 719 | 691 |
| 720 static void GenerateLoadExternalArray(MacroAssembler* masm, | 692 static void GenerateLoadExternalArray(MacroAssembler* masm, |
| 721 ElementsKind elements_kind); | 693 ElementsKind elements_kind); |
| 722 | 694 |
| 723 static void GenerateLoadFastElement(MacroAssembler* masm); | 695 static void GenerateLoadFastElement(MacroAssembler* masm); |
| 724 | 696 |
| 725 static void GenerateLoadFastDoubleElement(MacroAssembler* masm); | 697 static void GenerateLoadFastDoubleElement(MacroAssembler* masm); |
| 726 | 698 |
| 727 static void GenerateLoadDictionaryElement(MacroAssembler* masm); | 699 static void GenerateLoadDictionaryElement(MacroAssembler* masm); |
| 728 | 700 |
| 729 private: | 701 private: |
| 730 MaybeObject* GetCode(PropertyType type, | 702 MaybeObject* TryGetCode(PropertyType type, |
| 731 String* name, | 703 String* name, |
| 732 InlineCacheState state = MONOMORPHIC); | 704 InlineCacheState state = MONOMORPHIC); |
| 705 |
| 706 Handle<Code> GetCode(PropertyType type, |
| 707 Handle<String> name, |
| 708 InlineCacheState state = MONOMORPHIC); |
| 733 }; | 709 }; |
| 734 | 710 |
| 735 | 711 |
| 736 class StoreStubCompiler: public StubCompiler { | 712 class StoreStubCompiler: public StubCompiler { |
| 737 public: | 713 public: |
| 738 StoreStubCompiler(Isolate* isolate, StrictModeFlag strict_mode) | 714 StoreStubCompiler(Isolate* isolate, StrictModeFlag strict_mode) |
| 739 : StubCompiler(isolate), strict_mode_(strict_mode) { } | 715 : StubCompiler(isolate), strict_mode_(strict_mode) { } |
| 740 | 716 |
| 741 | 717 |
| 742 Handle<Code> CompileStoreField(Handle<JSObject> object, | 718 Handle<Code> CompileStoreField(Handle<JSObject> object, |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 JSFunction* constant_function_; | 984 JSFunction* constant_function_; |
| 1009 bool is_simple_api_call_; | 985 bool is_simple_api_call_; |
| 1010 FunctionTemplateInfo* expected_receiver_type_; | 986 FunctionTemplateInfo* expected_receiver_type_; |
| 1011 CallHandlerInfo* api_call_info_; | 987 CallHandlerInfo* api_call_info_; |
| 1012 }; | 988 }; |
| 1013 | 989 |
| 1014 | 990 |
| 1015 } } // namespace v8::internal | 991 } } // namespace v8::internal |
| 1016 | 992 |
| 1017 #endif // V8_STUB_CACHE_H_ | 993 #endif // V8_STUB_CACHE_H_ |
| OLD | NEW |