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

Side by Side Diff: src/code-stubs.h

Issue 6894003: Better support for 'polymorphic' JS and external arrays (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: review feedback and merge Created 9 years, 7 months 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
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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 V(RevertToNumber) \ 59 V(RevertToNumber) \
60 V(ToBoolean) \ 60 V(ToBoolean) \
61 V(ToNumber) \ 61 V(ToNumber) \
62 V(CounterOp) \ 62 V(CounterOp) \
63 V(ArgumentsAccess) \ 63 V(ArgumentsAccess) \
64 V(RegExpExec) \ 64 V(RegExpExec) \
65 V(RegExpConstructResult) \ 65 V(RegExpConstructResult) \
66 V(NumberToString) \ 66 V(NumberToString) \
67 V(CEntry) \ 67 V(CEntry) \
68 V(JSEntry) \ 68 V(JSEntry) \
69 V(KeyedLoadFastElement) \
70 V(KeyedStoreFastElement) \
71 V(KeyedLoadExternalArray) \
72 V(KeyedStoreExternalArray) \
69 V(DebuggerStatement) \ 73 V(DebuggerStatement) \
70 V(StringDictionaryNegativeLookup) 74 V(StringDictionaryNegativeLookup)
71 75
72 // List of code stubs only used on ARM platforms. 76 // List of code stubs only used on ARM platforms.
73 #ifdef V8_TARGET_ARCH_ARM 77 #ifdef V8_TARGET_ARCH_ARM
74 #define CODE_STUB_LIST_ARM(V) \ 78 #define CODE_STUB_LIST_ARM(V) \
75 V(GetProperty) \ 79 V(GetProperty) \
76 V(SetProperty) \ 80 V(SetProperty) \
77 V(InvokeBuiltin) \ 81 V(InvokeBuiltin) \
78 V(RegExpCEntry) \ 82 V(RegExpCEntry) \
(...skipping 835 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 masm_->set_allow_stub_calls(previous_allow_); 918 masm_->set_allow_stub_calls(previous_allow_);
915 } 919 }
916 920
917 private: 921 private:
918 MacroAssembler* masm_; 922 MacroAssembler* masm_;
919 bool previous_allow_; 923 bool previous_allow_;
920 924
921 DISALLOW_COPY_AND_ASSIGN(AllowStubCallsScope); 925 DISALLOW_COPY_AND_ASSIGN(AllowStubCallsScope);
922 }; 926 };
923 927
928 #ifdef DEBUG
929 #define DECLARE_ARRAY_STUB_PRINT(name) void Print() { PrintF(#name); }
930 #else
931 #define DECLARE_ARRAY_STUB_PRINT(name)
932 #endif
933
934
935 class KeyedLoadFastElementStub : public CodeStub {
936 public:
937 explicit KeyedLoadFastElementStub() {
938 }
939
940 Major MajorKey() { return KeyedLoadFastElement; }
941 int MinorKey() { return 0; }
942
943 void Generate(MacroAssembler* masm);
944
945 const char* GetName() { return "KeyedLoadFastElementStub"; }
946
947 DECLARE_ARRAY_STUB_PRINT(KeyedLoadFastElementStub)
948
949 private:
950 bool is_js_array_;
Mads Ager (chromium) 2011/05/12 09:42:47 Remove, this is unused?
danno 2011/06/01 13:16:08 Done.
951 };
952
953
954 class KeyedStoreFastElementStub : public CodeStub {
955 public:
956 explicit KeyedStoreFastElementStub(bool is_js_array)
957 : is_js_array_(is_js_array) { }
958
959 Major MajorKey() { return KeyedStoreFastElement; }
960 int MinorKey() { return is_js_array_; }
Mads Ager (chromium) 2011/05/12 09:42:47 Let's do an explicit type conversion here: return
danno 2011/06/01 13:16:08 Done.
961
962 void Generate(MacroAssembler* masm);
963
964 const char* GetName() { return "KeyedStoreFastElementStub"; }
965
966 DECLARE_ARRAY_STUB_PRINT(KeyedStoreFastElementStub)
967
968 private:
969 bool is_js_array_;
970 };
971
972
973 class KeyedLoadExternalArrayStub : public CodeStub {
974 public:
975 explicit KeyedLoadExternalArrayStub(ExternalArrayType array_type)
976 : array_type_(array_type) { }
977
978 Major MajorKey() { return KeyedLoadExternalArray; }
979 int MinorKey() { return array_type_; }
980
981 void Generate(MacroAssembler* masm);
982
983 const char* GetName() { return "KeyedLoadExternalArrayStub"; }
984
985 DECLARE_ARRAY_STUB_PRINT(KeyedLoadExternalArrayStub)
986
987 protected:
988 ExternalArrayType array_type_;
989 };
990
991
992 class KeyedStoreExternalArrayStub : public CodeStub {
993 public:
994 explicit KeyedStoreExternalArrayStub(ExternalArrayType array_type)
995 : array_type_(array_type) { }
996
997 Major MajorKey() { return KeyedStoreExternalArray; }
998 int MinorKey() { return array_type_; }
999
1000 void Generate(MacroAssembler* masm);
1001
1002 const char* GetName() { return "KeyedStoreExternalArrayStub"; }
1003
1004 DECLARE_ARRAY_STUB_PRINT(KeyedStoreExternalArrayStub)
1005
1006 protected:
1007 ExternalArrayType array_type_;
1008 };
1009
1010
924 } } // namespace v8::internal 1011 } } // namespace v8::internal
925 1012
926 #endif // V8_CODE_STUBS_H_ 1013 #endif // V8_CODE_STUBS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698