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

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

Issue 14972008: Remove obsolete HObjectLiteral instruction. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix after rebase. Created 7 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
« no previous file with comments | « src/hydrogen.cc ('k') | src/hydrogen-instructions.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 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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 V(LoadKeyedGeneric) \ 143 V(LoadKeyedGeneric) \
144 V(LoadNamedField) \ 144 V(LoadNamedField) \
145 V(LoadNamedFieldPolymorphic) \ 145 V(LoadNamedFieldPolymorphic) \
146 V(LoadNamedGeneric) \ 146 V(LoadNamedGeneric) \
147 V(MapEnumLength) \ 147 V(MapEnumLength) \
148 V(MathFloorOfDiv) \ 148 V(MathFloorOfDiv) \
149 V(MathMinMax) \ 149 V(MathMinMax) \
150 V(Mod) \ 150 V(Mod) \
151 V(Mul) \ 151 V(Mul) \
152 V(NumericConstraint) \ 152 V(NumericConstraint) \
153 V(ObjectLiteral) \
154 V(OsrEntry) \ 153 V(OsrEntry) \
155 V(OuterContext) \ 154 V(OuterContext) \
156 V(Parameter) \ 155 V(Parameter) \
157 V(Power) \ 156 V(Power) \
158 V(PushArgument) \ 157 V(PushArgument) \
159 V(Random) \ 158 V(Random) \
160 V(RegExpLiteral) \ 159 V(RegExpLiteral) \
161 V(Return) \ 160 V(Return) \
162 V(Ror) \ 161 V(Ror) \
163 V(Sar) \ 162 V(Sar) \
(...skipping 5960 matching lines...) Expand 10 before | Expand all | Expand 10 after
6124 6123
6125 private: 6124 private:
6126 int length_; 6125 int length_;
6127 Handle<HeapObject> boilerplate_object_; 6126 Handle<HeapObject> boilerplate_object_;
6128 Handle<FixedArray> literals_; 6127 Handle<FixedArray> literals_;
6129 ElementsKind boilerplate_elements_kind_; 6128 ElementsKind boilerplate_elements_kind_;
6130 bool is_copy_on_write_; 6129 bool is_copy_on_write_;
6131 }; 6130 };
6132 6131
6133 6132
6134 class HObjectLiteral: public HMaterializedLiteral<1> {
6135 public:
6136 HObjectLiteral(HValue* context,
6137 Handle<FixedArray> constant_properties,
6138 Handle<FixedArray> literals,
6139 bool fast_elements,
6140 int literal_index,
6141 int depth,
6142 bool may_store_doubles,
6143 bool has_function)
6144 : HMaterializedLiteral<1>(literal_index, depth),
6145 constant_properties_(constant_properties),
6146 constant_properties_length_(constant_properties->length()),
6147 literals_(literals),
6148 fast_elements_(fast_elements),
6149 may_store_doubles_(may_store_doubles),
6150 has_function_(has_function) {
6151 SetOperandAt(0, context);
6152 SetGVNFlag(kChangesNewSpacePromotion);
6153 }
6154
6155 HValue* context() { return OperandAt(0); }
6156 Handle<FixedArray> constant_properties() const {
6157 return constant_properties_;
6158 }
6159 int constant_properties_length() const {
6160 return constant_properties_length_;
6161 }
6162 Handle<FixedArray> literals() const { return literals_; }
6163 bool fast_elements() const { return fast_elements_; }
6164 bool may_store_doubles() const { return may_store_doubles_; }
6165 bool has_function() const { return has_function_; }
6166
6167 virtual Representation RequiredInputRepresentation(int index) {
6168 return Representation::Tagged();
6169 }
6170 virtual HType CalculateInferredType();
6171
6172 DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral)
6173
6174 private:
6175 Handle<FixedArray> constant_properties_;
6176 int constant_properties_length_;
6177 Handle<FixedArray> literals_;
6178 bool fast_elements_ : 1;
6179 bool may_store_doubles_ : 1;
6180 bool has_function_ : 1;
6181 };
6182
6183
6184 class HRegExpLiteral: public HMaterializedLiteral<1> { 6133 class HRegExpLiteral: public HMaterializedLiteral<1> {
6185 public: 6134 public:
6186 HRegExpLiteral(HValue* context, 6135 HRegExpLiteral(HValue* context,
6187 Handle<FixedArray> literals, 6136 Handle<FixedArray> literals,
6188 Handle<String> pattern, 6137 Handle<String> pattern,
6189 Handle<String> flags, 6138 Handle<String> flags,
6190 int literal_index) 6139 int literal_index)
6191 : HMaterializedLiteral<1>(literal_index, 0), 6140 : HMaterializedLiteral<1>(literal_index, 0),
6192 literals_(literals), 6141 literals_(literals),
6193 pattern_(pattern), 6142 pattern_(pattern),
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
6294 6243
6295 DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento) 6244 DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento)
6296 }; 6245 };
6297 6246
6298 6247
6299 class HToFastProperties: public HUnaryOperation { 6248 class HToFastProperties: public HUnaryOperation {
6300 public: 6249 public:
6301 explicit HToFastProperties(HValue* value) : HUnaryOperation(value) { 6250 explicit HToFastProperties(HValue* value) : HUnaryOperation(value) {
6302 // This instruction is not marked as having side effects, but 6251 // This instruction is not marked as having side effects, but
6303 // changes the map of the input operand. Use it only when creating 6252 // changes the map of the input operand. Use it only when creating
6304 // object literals. 6253 // object literals via a runtime call.
6305 ASSERT(value->IsObjectLiteral()); 6254 ASSERT(value->IsCallRuntime());
6255 #ifdef DEBUG
6256 const Runtime::Function* function = HCallRuntime::cast(value)->function();
6257 ASSERT(function->function_id == Runtime::kCreateObjectLiteral ||
6258 function->function_id == Runtime::kCreateObjectLiteralShallow);
6259 #endif
6306 set_representation(Representation::Tagged()); 6260 set_representation(Representation::Tagged());
6307 } 6261 }
6308 6262
6309 virtual Representation RequiredInputRepresentation(int index) { 6263 virtual Representation RequiredInputRepresentation(int index) {
6310 return Representation::Tagged(); 6264 return Representation::Tagged();
6311 } 6265 }
6312 6266
6313 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties) 6267 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties)
6314 6268
6315 private: 6269 private:
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
6559 virtual bool IsDeletable() const { return true; } 6513 virtual bool IsDeletable() const { return true; }
6560 }; 6514 };
6561 6515
6562 6516
6563 #undef DECLARE_INSTRUCTION 6517 #undef DECLARE_INSTRUCTION
6564 #undef DECLARE_CONCRETE_INSTRUCTION 6518 #undef DECLARE_CONCRETE_INSTRUCTION
6565 6519
6566 } } // namespace v8::internal 6520 } } // namespace v8::internal
6567 6521
6568 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 6522 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/hydrogen-instructions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698