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

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

Issue 1081883002: Remove unnecessary options from HTailCallThroughMegamorphicCache (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Ports. Created 5 years, 8 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
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/ia32/lithium-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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_ 5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_
6 #define V8_HYDROGEN_INSTRUCTIONS_H_ 6 #define V8_HYDROGEN_INSTRUCTIONS_H_
7 7
8 #include <cstring> 8 #include <cstring>
9 #include <iosfwd> 9 #include <iosfwd>
10 10
(...skipping 5273 matching lines...) Expand 10 before | Expand all | Expand 10 after
5284 : HUnaryCall(context, argument_count), 5284 : HUnaryCall(context, argument_count),
5285 major_key_(major_key) { 5285 major_key_(major_key) {
5286 } 5286 }
5287 5287
5288 CodeStub::Major major_key_; 5288 CodeStub::Major major_key_;
5289 }; 5289 };
5290 5290
5291 5291
5292 class HTailCallThroughMegamorphicCache FINAL : public HInstruction { 5292 class HTailCallThroughMegamorphicCache FINAL : public HInstruction {
5293 public: 5293 public:
5294 enum Flags {
5295 NONE = 0,
5296 CALLED_FROM_KEYED_LOAD = 1 << 0,
5297 PERFORM_MISS_ONLY = 1 << 1
5298 };
5299
5300 static Flags ComputeFlags(bool called_from_keyed_load,
5301 bool perform_miss_only) {
5302 Flags flags = NONE;
5303 if (called_from_keyed_load) {
5304 flags = static_cast<Flags>(flags | CALLED_FROM_KEYED_LOAD);
5305 }
5306 if (perform_miss_only) {
5307 flags = static_cast<Flags>(flags | PERFORM_MISS_ONLY);
5308 }
5309 return flags;
5310 }
5311
5312 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(
5313 HTailCallThroughMegamorphicCache, HValue*, HValue*, HValue*, HValue*,
5314 HTailCallThroughMegamorphicCache::Flags);
5315
5316 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HTailCallThroughMegamorphicCache, 5294 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HTailCallThroughMegamorphicCache,
5317 HValue*, HValue*); 5295 HValue*, HValue*);
5318 5296
5319 Representation RequiredInputRepresentation(int index) OVERRIDE { 5297 Representation RequiredInputRepresentation(int index) OVERRIDE {
5320 return Representation::Tagged(); 5298 return Representation::Tagged();
5321 } 5299 }
5322 5300
5323 virtual int OperandCount() const FINAL OVERRIDE { 5301 virtual int OperandCount() const FINAL OVERRIDE { return 3; }
5324 return FLAG_vector_ics ? 5 : 3;
5325 }
5326 virtual HValue* OperandAt(int i) const FINAL OVERRIDE { return inputs_[i]; } 5302 virtual HValue* OperandAt(int i) const FINAL OVERRIDE { return inputs_[i]; }
5327 5303
5328 HValue* context() const { return OperandAt(0); } 5304 HValue* context() const { return OperandAt(0); }
5329 HValue* receiver() const { return OperandAt(1); } 5305 HValue* receiver() const { return OperandAt(1); }
5330 HValue* name() const { return OperandAt(2); } 5306 HValue* name() const { return OperandAt(2); }
5331 HValue* slot() const {
5332 DCHECK(FLAG_vector_ics);
5333 return OperandAt(3);
5334 }
5335 HValue* vector() const {
5336 DCHECK(FLAG_vector_ics);
5337 return OperandAt(4);
5338 }
5339 Code::Flags flags() const; 5307 Code::Flags flags() const;
5340 5308
5341 bool is_keyed_load() const { return flags_ & CALLED_FROM_KEYED_LOAD; }
5342 bool is_just_miss() const { return flags_ & PERFORM_MISS_ONLY; }
5343
5344 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT 5309 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT
5345 5310
5346 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache) 5311 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache)
5347 5312
5348 protected: 5313 protected:
5349 virtual void InternalSetOperandAt(int i, HValue* value) FINAL OVERRIDE { 5314 virtual void InternalSetOperandAt(int i, HValue* value) FINAL OVERRIDE {
5350 inputs_[i] = value; 5315 inputs_[i] = value;
5351 } 5316 }
5352 5317
5353 private: 5318 private:
5354 HTailCallThroughMegamorphicCache(HValue* context, HValue* receiver, 5319 HTailCallThroughMegamorphicCache(HValue* context, HValue* receiver,
5355 HValue* name, HValue* slot, HValue* vector, 5320 HValue* name) {
5356 Flags flags)
5357 : flags_(flags) {
5358 DCHECK(FLAG_vector_ics);
5359 SetOperandAt(0, context);
5360 SetOperandAt(1, receiver);
5361 SetOperandAt(2, name);
5362 SetOperandAt(3, slot);
5363 SetOperandAt(4, vector);
5364 }
5365
5366 HTailCallThroughMegamorphicCache(HValue* context, HValue* receiver,
5367 HValue* name)
5368 : flags_(NONE) {
5369 SetOperandAt(0, context); 5321 SetOperandAt(0, context);
5370 SetOperandAt(1, receiver); 5322 SetOperandAt(1, receiver);
5371 SetOperandAt(2, name); 5323 SetOperandAt(2, name);
5372 } 5324 }
5373 5325
5374 EmbeddedContainer<HValue*, 5> inputs_; 5326 EmbeddedContainer<HValue*, 3> inputs_;
5375 Flags flags_;
5376 }; 5327 };
5377 5328
5378 5329
5379 class HUnknownOSRValue FINAL : public HTemplateInstruction<0> { 5330 class HUnknownOSRValue FINAL : public HTemplateInstruction<0> {
5380 public: 5331 public:
5381 DECLARE_INSTRUCTION_FACTORY_P2(HUnknownOSRValue, HEnvironment*, int); 5332 DECLARE_INSTRUCTION_FACTORY_P2(HUnknownOSRValue, HEnvironment*, int);
5382 5333
5383 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT 5334 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT
5384 5335
5385 Representation RequiredInputRepresentation(int index) OVERRIDE { 5336 Representation RequiredInputRepresentation(int index) OVERRIDE {
(...skipping 2487 matching lines...) Expand 10 before | Expand all | Expand 10 after
7873 }; 7824 };
7874 7825
7875 7826
7876 7827
7877 #undef DECLARE_INSTRUCTION 7828 #undef DECLARE_INSTRUCTION
7878 #undef DECLARE_CONCRETE_INSTRUCTION 7829 #undef DECLARE_CONCRETE_INSTRUCTION
7879 7830
7880 } } // namespace v8::internal 7831 } } // namespace v8::internal
7881 7832
7882 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7833 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/ia32/lithium-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698