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/hydrogen-instructions.h

Issue 6240012: Optimize calls to object literal properties that are initialized with a funct... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: added x64 and arm code. Created 9 years, 10 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
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/full-codegen-ia32.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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 V(StoreGlobal) \ 141 V(StoreGlobal) \
142 V(StoreKeyedFastElement) \ 142 V(StoreKeyedFastElement) \
143 V(StoreKeyedGeneric) \ 143 V(StoreKeyedGeneric) \
144 V(StoreNamedField) \ 144 V(StoreNamedField) \
145 V(StoreNamedGeneric) \ 145 V(StoreNamedGeneric) \
146 V(StringCharCodeAt) \ 146 V(StringCharCodeAt) \
147 V(StringLength) \ 147 V(StringLength) \
148 V(Sub) \ 148 V(Sub) \
149 V(Test) \ 149 V(Test) \
150 V(Throw) \ 150 V(Throw) \
151 V(ToFastProperties) \
151 V(Typeof) \ 152 V(Typeof) \
152 V(TypeofIs) \ 153 V(TypeofIs) \
153 V(UnaryMathOperation) \ 154 V(UnaryMathOperation) \
154 V(UnknownOSRValue) \ 155 V(UnknownOSRValue) \
155 V(ValueOf) 156 V(ValueOf)
156 157
157 #define GVN_FLAG_LIST(V) \ 158 #define GVN_FLAG_LIST(V) \
158 V(Calls) \ 159 V(Calls) \
159 V(InobjectFields) \ 160 V(InobjectFields) \
160 V(BackingStoreFields) \ 161 V(BackingStoreFields) \
(...skipping 2843 matching lines...) Expand 10 before | Expand all | Expand 10 after
3004 int length_; 3005 int length_;
3005 Handle<FixedArray> constant_elements_; 3006 Handle<FixedArray> constant_elements_;
3006 }; 3007 };
3007 3008
3008 3009
3009 class HObjectLiteral: public HMaterializedLiteral { 3010 class HObjectLiteral: public HMaterializedLiteral {
3010 public: 3011 public:
3011 HObjectLiteral(Handle<FixedArray> constant_properties, 3012 HObjectLiteral(Handle<FixedArray> constant_properties,
3012 bool fast_elements, 3013 bool fast_elements,
3013 int literal_index, 3014 int literal_index,
3014 int depth) 3015 int depth,
3016 bool has_function)
3015 : HMaterializedLiteral(literal_index, depth), 3017 : HMaterializedLiteral(literal_index, depth),
3016 constant_properties_(constant_properties), 3018 constant_properties_(constant_properties),
3017 fast_elements_(fast_elements) {} 3019 fast_elements_(fast_elements),
3020 has_function_(has_function) {}
3018 3021
3019 Handle<FixedArray> constant_properties() const { 3022 Handle<FixedArray> constant_properties() const {
3020 return constant_properties_; 3023 return constant_properties_;
3021 } 3024 }
3022 bool fast_elements() const { return fast_elements_; } 3025 bool fast_elements() const { return fast_elements_; }
3026 bool has_function() const { return has_function_; }
3023 3027
3024 DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral, "object_literal") 3028 DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral, "object_literal")
3025 3029
3026 private: 3030 private:
3027 Handle<FixedArray> constant_properties_; 3031 Handle<FixedArray> constant_properties_;
3028 bool fast_elements_; 3032 bool fast_elements_;
3033 bool has_function_;
3029 }; 3034 };
3030 3035
3031 3036
3032 class HRegExpLiteral: public HMaterializedLiteral { 3037 class HRegExpLiteral: public HMaterializedLiteral {
3033 public: 3038 public:
3034 HRegExpLiteral(Handle<String> pattern, 3039 HRegExpLiteral(Handle<String> pattern,
3035 Handle<String> flags, 3040 Handle<String> flags,
3036 int literal_index) 3041 int literal_index)
3037 : HMaterializedLiteral(literal_index, 0), 3042 : HMaterializedLiteral(literal_index, 0),
3038 pattern_(pattern), 3043 pattern_(pattern),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3070 class HTypeof: public HUnaryOperation { 3075 class HTypeof: public HUnaryOperation {
3071 public: 3076 public:
3072 explicit HTypeof(HValue* value) : HUnaryOperation(value) { 3077 explicit HTypeof(HValue* value) : HUnaryOperation(value) {
3073 set_representation(Representation::Tagged()); 3078 set_representation(Representation::Tagged());
3074 } 3079 }
3075 3080
3076 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof") 3081 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
3077 }; 3082 };
3078 3083
3079 3084
3085 class HToFastProperties: public HUnaryOperation {
Mads Ager (chromium) 2011/02/02 13:07:52 Is it OK that this is not marked as changing maps
fschneider 2011/02/02 14:23:32 As discussed I'm making the return value of the To
3086 public:
3087 explicit HToFastProperties(HValue* value) : HUnaryOperation(value) {
3088 set_representation(Representation::Tagged());
3089 }
3090
3091 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to_fast_properties")
3092 };
3093
3094
3080 class HValueOf: public HUnaryOperation { 3095 class HValueOf: public HUnaryOperation {
3081 public: 3096 public:
3082 explicit HValueOf(HValue* value) : HUnaryOperation(value) { 3097 explicit HValueOf(HValue* value) : HUnaryOperation(value) {
3083 set_representation(Representation::Tagged()); 3098 set_representation(Representation::Tagged());
3084 } 3099 }
3085 3100
3086 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value_of") 3101 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value_of")
3087 }; 3102 };
3088 3103
3089 3104
(...skipping 14 matching lines...) Expand all
3104 HValue* object() const { return left(); } 3119 HValue* object() const { return left(); }
3105 HValue* key() const { return right(); } 3120 HValue* key() const { return right(); }
3106 }; 3121 };
3107 3122
3108 #undef DECLARE_INSTRUCTION 3123 #undef DECLARE_INSTRUCTION
3109 #undef DECLARE_CONCRETE_INSTRUCTION 3124 #undef DECLARE_CONCRETE_INSTRUCTION
3110 3125
3111 } } // namespace v8::internal 3126 } } // namespace v8::internal
3112 3127
3113 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 3128 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698