Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: src/stub-cache.h

Issue 8383033: Handlify simple functions of [keyed] load stub compiler. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address comments Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/ia32/stub-cache-ia32.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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_
OLDNEW
« no previous file with comments | « src/ia32/stub-cache-ia32.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698