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

Side by Side Diff: src/hydrogen-instructions.h

Issue 23537067: Add support for keyed-call on arrays of fast elements (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Compare with actual map loaded from the context Created 7 years, 2 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 2170 matching lines...) Expand 10 before | Expand all | Expand 10 after
2181 2181
2182 DECLARE_CONCRETE_INSTRUCTION(CallNamed) 2182 DECLARE_CONCRETE_INSTRUCTION(CallNamed)
2183 2183
2184 private: 2184 private:
2185 Handle<String> name_; 2185 Handle<String> name_;
2186 }; 2186 };
2187 2187
2188 2188
2189 class HCallFunction V8_FINAL : public HBinaryCall { 2189 class HCallFunction V8_FINAL : public HBinaryCall {
2190 public: 2190 public:
2191 HCallFunction(HValue* context, HValue* function, int argument_count) 2191 HCallFunction(HValue* context,
2192 : HBinaryCall(context, function, argument_count) { 2192 HValue* function,
2193 int argument_count,
2194 bool tailcall)
danno 2013/10/02 08:49:11 Can you please turn this boolean into an enum so t
Toon Verwaest 2013/10/02 16:28:16 Done.
2195 : HBinaryCall(context, function, argument_count), tailcall_(tailcall) {
2193 } 2196 }
2194 2197
2195 static HCallFunction* New(Zone* zone, 2198 static HCallFunction* New(Zone* zone,
2196 HValue* context, 2199 HValue* context,
2197 HValue* function, 2200 HValue* function,
2198 int argument_count) { 2201 int argument_count,
2199 return new(zone) HCallFunction(context, function, argument_count); 2202 bool tailcall = false) {
2203 return new(zone) HCallFunction(context, function, argument_count, tailcall);
2200 } 2204 }
2201 2205
2206 bool tailcall() { return tailcall_; }
2207
2202 HValue* context() { return first(); } 2208 HValue* context() { return first(); }
2203 HValue* function() { return second(); } 2209 HValue* function() { return second(); }
2204 2210
2205 DECLARE_CONCRETE_INSTRUCTION(CallFunction) 2211 DECLARE_CONCRETE_INSTRUCTION(CallFunction)
2212
2213 private:
2214 bool tailcall_;
2206 }; 2215 };
2207 2216
2208 2217
2209 class HCallGlobal V8_FINAL : public HUnaryCall { 2218 class HCallGlobal V8_FINAL : public HUnaryCall {
2210 public: 2219 public:
2211 HCallGlobal(HValue* context, Handle<String> name, int argument_count) 2220 HCallGlobal(HValue* context, Handle<String> name, int argument_count)
2212 : HUnaryCall(context, argument_count), name_(name) { 2221 : HUnaryCall(context, argument_count), name_(name) {
2213 } 2222 }
2214 2223
2215 static HCallGlobal* New(Zone* zone, 2224 static HCallGlobal* New(Zone* zone,
(...skipping 4662 matching lines...) Expand 10 before | Expand all | Expand 10 after
6878 virtual HType CalculateInferredType() V8_OVERRIDE { 6887 virtual HType CalculateInferredType() V8_OVERRIDE {
6879 return HType::Tagged(); 6888 return HType::Tagged();
6880 } 6889 }
6881 6890
6882 HValue* value() { return OperandAt(0); } 6891 HValue* value() { return OperandAt(0); }
6883 HValue* map() { return OperandAt(1); } 6892 HValue* map() { return OperandAt(1); }
6884 6893
6885 DECLARE_CONCRETE_INSTRUCTION(CheckMapValue) 6894 DECLARE_CONCRETE_INSTRUCTION(CheckMapValue)
6886 6895
6887 protected: 6896 protected:
6897 virtual int RedefinedOperandIndex() { return 0; }
6898
6888 virtual bool DataEquals(HValue* other) V8_OVERRIDE { 6899 virtual bool DataEquals(HValue* other) V8_OVERRIDE {
6889 return true; 6900 return true;
6890 } 6901 }
6891 6902
6892 private: 6903 private:
6893 HCheckMapValue(HValue* value, 6904 HCheckMapValue(HValue* value,
6894 HValue* map) { 6905 HValue* map) {
6895 SetOperandAt(0, value); 6906 SetOperandAt(0, value);
6896 SetOperandAt(1, map); 6907 SetOperandAt(1, map);
6897 set_representation(Representation::Tagged()); 6908 set_representation(Representation::Tagged());
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
7006 virtual bool IsDeletable() const V8_OVERRIDE { return true; } 7017 virtual bool IsDeletable() const V8_OVERRIDE { return true; }
7007 }; 7018 };
7008 7019
7009 7020
7010 #undef DECLARE_INSTRUCTION 7021 #undef DECLARE_INSTRUCTION
7011 #undef DECLARE_CONCRETE_INSTRUCTION 7022 #undef DECLARE_CONCRETE_INSTRUCTION
7012 7023
7013 } } // namespace v8::internal 7024 } } // namespace v8::internal
7014 7025
7015 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7026 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698