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* GetCode(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* GetCode(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 |