OLD | NEW |
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 <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/v8.h" | 10 #include "src/v8.h" |
(...skipping 2296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2307 pass_argument_count_(pass_argument_count), | 2307 pass_argument_count_(pass_argument_count), |
2308 has_stack_check_(has_stack_check) { | 2308 has_stack_check_(has_stack_check) { |
2309 SetOperandAt(0, function); | 2309 SetOperandAt(0, function); |
2310 } | 2310 } |
2311 | 2311 |
2312 bool pass_argument_count_; | 2312 bool pass_argument_count_; |
2313 bool has_stack_check_; | 2313 bool has_stack_check_; |
2314 }; | 2314 }; |
2315 | 2315 |
2316 | 2316 |
| 2317 enum CallMode { NORMAL_CALL, TAIL_CALL }; |
| 2318 |
| 2319 |
2317 class HCallWithDescriptor FINAL : public HInstruction { | 2320 class HCallWithDescriptor FINAL : public HInstruction { |
2318 public: | 2321 public: |
2319 static HCallWithDescriptor* New(Zone* zone, HValue* context, HValue* target, | 2322 static HCallWithDescriptor* New(Zone* zone, HValue* context, HValue* target, |
2320 int argument_count, | 2323 int argument_count, |
2321 CallInterfaceDescriptor descriptor, | 2324 CallInterfaceDescriptor descriptor, |
2322 const Vector<HValue*>& operands) { | 2325 const Vector<HValue*>& operands, |
| 2326 CallMode call_mode = NORMAL_CALL) { |
2323 DCHECK(operands.length() == descriptor.GetEnvironmentLength()); | 2327 DCHECK(operands.length() == descriptor.GetEnvironmentLength()); |
2324 HCallWithDescriptor* res = new (zone) | 2328 HCallWithDescriptor* res = new (zone) HCallWithDescriptor( |
2325 HCallWithDescriptor(target, argument_count, descriptor, operands, zone); | 2329 target, argument_count, descriptor, operands, call_mode, zone); |
2326 return res; | 2330 return res; |
2327 } | 2331 } |
2328 | 2332 |
2329 int OperandCount() const FINAL { return values_.length(); } | 2333 int OperandCount() const FINAL { return values_.length(); } |
2330 HValue* OperandAt(int index) const FINAL { return values_[index]; } | 2334 HValue* OperandAt(int index) const FINAL { return values_[index]; } |
2331 | 2335 |
2332 Representation RequiredInputRepresentation(int index) FINAL { | 2336 Representation RequiredInputRepresentation(int index) FINAL { |
2333 if (index == 0) { | 2337 if (index == 0) { |
2334 return Representation::Tagged(); | 2338 return Representation::Tagged(); |
2335 } else { | 2339 } else { |
2336 int par_index = index - 1; | 2340 int par_index = index - 1; |
2337 DCHECK(par_index < descriptor_.GetEnvironmentLength()); | 2341 DCHECK(par_index < descriptor_.GetEnvironmentLength()); |
2338 return descriptor_.GetParameterRepresentation(par_index); | 2342 return descriptor_.GetParameterRepresentation(par_index); |
2339 } | 2343 } |
2340 } | 2344 } |
2341 | 2345 |
2342 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor) | 2346 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor) |
2343 | 2347 |
2344 HType CalculateInferredType() FINAL { return HType::Tagged(); } | 2348 HType CalculateInferredType() FINAL { return HType::Tagged(); } |
2345 | 2349 |
| 2350 bool IsTailCall() const { return call_mode_ == TAIL_CALL; } |
| 2351 |
2346 virtual int argument_count() const { | 2352 virtual int argument_count() const { |
2347 return argument_count_; | 2353 return argument_count_; |
2348 } | 2354 } |
2349 | 2355 |
2350 int argument_delta() const OVERRIDE { return -argument_count_; } | 2356 int argument_delta() const OVERRIDE { return -argument_count_; } |
2351 | 2357 |
2352 CallInterfaceDescriptor descriptor() const { return descriptor_; } | 2358 CallInterfaceDescriptor descriptor() const { return descriptor_; } |
2353 | 2359 |
2354 HValue* target() { | 2360 HValue* target() { |
2355 return OperandAt(0); | 2361 return OperandAt(0); |
2356 } | 2362 } |
2357 | 2363 |
2358 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT | 2364 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT |
2359 | 2365 |
2360 private: | 2366 private: |
2361 // The argument count includes the receiver. | 2367 // The argument count includes the receiver. |
2362 HCallWithDescriptor(HValue* target, int argument_count, | 2368 HCallWithDescriptor(HValue* target, int argument_count, |
2363 CallInterfaceDescriptor descriptor, | 2369 CallInterfaceDescriptor descriptor, |
2364 const Vector<HValue*>& operands, Zone* zone) | 2370 const Vector<HValue*>& operands, CallMode call_mode, |
| 2371 Zone* zone) |
2365 : descriptor_(descriptor), | 2372 : descriptor_(descriptor), |
2366 values_(descriptor.GetEnvironmentLength() + 1, zone) { | 2373 values_(descriptor.GetEnvironmentLength() + 1, zone), |
2367 argument_count_ = argument_count; | 2374 argument_count_(argument_count), |
| 2375 call_mode_(call_mode) { |
| 2376 // We can only tail call without any stack arguments. |
| 2377 DCHECK(call_mode != TAIL_CALL || argument_count == 0); |
2368 AddOperand(target, zone); | 2378 AddOperand(target, zone); |
2369 for (int i = 0; i < operands.length(); i++) { | 2379 for (int i = 0; i < operands.length(); i++) { |
2370 AddOperand(operands[i], zone); | 2380 AddOperand(operands[i], zone); |
2371 } | 2381 } |
2372 this->set_representation(Representation::Tagged()); | 2382 this->set_representation(Representation::Tagged()); |
2373 this->SetAllSideEffects(); | 2383 this->SetAllSideEffects(); |
2374 } | 2384 } |
2375 | 2385 |
2376 void AddOperand(HValue* v, Zone* zone) { | 2386 void AddOperand(HValue* v, Zone* zone) { |
2377 values_.Add(NULL, zone); | 2387 values_.Add(NULL, zone); |
2378 SetOperandAt(values_.length() - 1, v); | 2388 SetOperandAt(values_.length() - 1, v); |
2379 } | 2389 } |
2380 | 2390 |
2381 void InternalSetOperandAt(int index, HValue* value) FINAL { | 2391 void InternalSetOperandAt(int index, HValue* value) FINAL { |
2382 values_[index] = value; | 2392 values_[index] = value; |
2383 } | 2393 } |
2384 | 2394 |
2385 CallInterfaceDescriptor descriptor_; | 2395 CallInterfaceDescriptor descriptor_; |
2386 ZoneList<HValue*> values_; | 2396 ZoneList<HValue*> values_; |
2387 int argument_count_; | 2397 int argument_count_; |
| 2398 CallMode call_mode_; |
2388 }; | 2399 }; |
2389 | 2400 |
2390 | 2401 |
2391 class HInvokeFunction FINAL : public HBinaryCall { | 2402 class HInvokeFunction FINAL : public HBinaryCall { |
2392 public: | 2403 public: |
2393 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HInvokeFunction, HValue*, int); | 2404 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HInvokeFunction, HValue*, int); |
2394 | 2405 |
2395 HInvokeFunction(HValue* context, | 2406 HInvokeFunction(HValue* context, |
2396 HValue* function, | 2407 HValue* function, |
2397 Handle<JSFunction> known_function, | 2408 Handle<JSFunction> known_function, |
(...skipping 2949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5347 private: | 5358 private: |
5348 HCallStub(HValue* context, CodeStub::Major major_key, int argument_count) | 5359 HCallStub(HValue* context, CodeStub::Major major_key, int argument_count) |
5349 : HUnaryCall(context, argument_count), | 5360 : HUnaryCall(context, argument_count), |
5350 major_key_(major_key) { | 5361 major_key_(major_key) { |
5351 } | 5362 } |
5352 | 5363 |
5353 CodeStub::Major major_key_; | 5364 CodeStub::Major major_key_; |
5354 }; | 5365 }; |
5355 | 5366 |
5356 | 5367 |
5357 class HTailCallThroughMegamorphicCache FINAL : public HTemplateInstruction<3> { | 5368 class HTailCallThroughMegamorphicCache FINAL : public HInstruction { |
5358 public: | 5369 public: |
5359 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HTailCallThroughMegamorphicCache, | 5370 enum Flags { |
5360 HValue*, HValue*, Code::Flags); | 5371 NONE = 0, |
| 5372 CALLED_FROM_KEYED_LOAD = 1 << 0, |
| 5373 PERFORM_MISS_ONLY = 1 << 1 |
| 5374 }; |
| 5375 |
| 5376 static Flags ComputeFlags(bool called_from_keyed_load, |
| 5377 bool perform_miss_only) { |
| 5378 Flags flags = NONE; |
| 5379 if (called_from_keyed_load) { |
| 5380 flags = static_cast<Flags>(flags | CALLED_FROM_KEYED_LOAD); |
| 5381 } |
| 5382 if (perform_miss_only) { |
| 5383 flags = static_cast<Flags>(flags | PERFORM_MISS_ONLY); |
| 5384 } |
| 5385 return flags; |
| 5386 } |
| 5387 |
| 5388 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5( |
| 5389 HTailCallThroughMegamorphicCache, HValue*, HValue*, HValue*, HValue*, |
| 5390 HTailCallThroughMegamorphicCache::Flags); |
| 5391 |
| 5392 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HTailCallThroughMegamorphicCache, |
| 5393 HValue*, HValue*); |
5361 | 5394 |
5362 Representation RequiredInputRepresentation(int index) OVERRIDE { | 5395 Representation RequiredInputRepresentation(int index) OVERRIDE { |
5363 return Representation::Tagged(); | 5396 return Representation::Tagged(); |
5364 } | 5397 } |
5365 | 5398 |
| 5399 virtual int OperandCount() const FINAL OVERRIDE { |
| 5400 return FLAG_vector_ics ? 5 : 3; |
| 5401 } |
| 5402 virtual HValue* OperandAt(int i) const FINAL OVERRIDE { return inputs_[i]; } |
| 5403 |
5366 HValue* context() const { return OperandAt(0); } | 5404 HValue* context() const { return OperandAt(0); } |
5367 HValue* receiver() const { return OperandAt(1); } | 5405 HValue* receiver() const { return OperandAt(1); } |
5368 HValue* name() const { return OperandAt(2); } | 5406 HValue* name() const { return OperandAt(2); } |
5369 Code::Flags flags() const { return flags_; } | 5407 HValue* slot() const { |
| 5408 DCHECK(FLAG_vector_ics); |
| 5409 return OperandAt(3); |
| 5410 } |
| 5411 HValue* vector() const { |
| 5412 DCHECK(FLAG_vector_ics); |
| 5413 return OperandAt(4); |
| 5414 } |
| 5415 Code::Flags flags() const; |
| 5416 |
| 5417 bool is_keyed_load() const { return flags_ & CALLED_FROM_KEYED_LOAD; } |
| 5418 bool is_just_miss() const { return flags_ & PERFORM_MISS_ONLY; } |
5370 | 5419 |
5371 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT | 5420 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT |
5372 | 5421 |
5373 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache) | 5422 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache) |
5374 | 5423 |
| 5424 protected: |
| 5425 virtual void InternalSetOperandAt(int i, HValue* value) FINAL OVERRIDE { |
| 5426 inputs_[i] = value; |
| 5427 } |
| 5428 |
5375 private: | 5429 private: |
5376 HTailCallThroughMegamorphicCache(HValue* context, HValue* receiver, | 5430 HTailCallThroughMegamorphicCache(HValue* context, HValue* receiver, |
5377 HValue* name, Code::Flags flags) | 5431 HValue* name, HValue* slot, HValue* vector, |
| 5432 Flags flags) |
5378 : flags_(flags) { | 5433 : flags_(flags) { |
| 5434 DCHECK(FLAG_vector_ics); |
| 5435 SetOperandAt(0, context); |
| 5436 SetOperandAt(1, receiver); |
| 5437 SetOperandAt(2, name); |
| 5438 SetOperandAt(3, slot); |
| 5439 SetOperandAt(4, vector); |
| 5440 } |
| 5441 |
| 5442 HTailCallThroughMegamorphicCache(HValue* context, HValue* receiver, |
| 5443 HValue* name) |
| 5444 : flags_(NONE) { |
5379 SetOperandAt(0, context); | 5445 SetOperandAt(0, context); |
5380 SetOperandAt(1, receiver); | 5446 SetOperandAt(1, receiver); |
5381 SetOperandAt(2, name); | 5447 SetOperandAt(2, name); |
5382 } | 5448 } |
5383 | 5449 |
5384 Code::Flags flags_; | 5450 EmbeddedContainer<HValue*, 5> inputs_; |
| 5451 Flags flags_; |
5385 }; | 5452 }; |
5386 | 5453 |
5387 | 5454 |
5388 class HUnknownOSRValue FINAL : public HTemplateInstruction<0> { | 5455 class HUnknownOSRValue FINAL : public HTemplateInstruction<0> { |
5389 public: | 5456 public: |
5390 DECLARE_INSTRUCTION_FACTORY_P2(HUnknownOSRValue, HEnvironment*, int); | 5457 DECLARE_INSTRUCTION_FACTORY_P2(HUnknownOSRValue, HEnvironment*, int); |
5391 | 5458 |
5392 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT | 5459 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT |
5393 | 5460 |
5394 Representation RequiredInputRepresentation(int index) OVERRIDE { | 5461 Representation RequiredInputRepresentation(int index) OVERRIDE { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5463 | 5530 |
5464 class HLoadGlobalGeneric FINAL : public HTemplateInstruction<2> { | 5531 class HLoadGlobalGeneric FINAL : public HTemplateInstruction<2> { |
5465 public: | 5532 public: |
5466 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*, | 5533 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*, |
5467 Handle<String>, bool); | 5534 Handle<String>, bool); |
5468 | 5535 |
5469 HValue* context() { return OperandAt(0); } | 5536 HValue* context() { return OperandAt(0); } |
5470 HValue* global_object() { return OperandAt(1); } | 5537 HValue* global_object() { return OperandAt(1); } |
5471 Handle<String> name() const { return name_; } | 5538 Handle<String> name() const { return name_; } |
5472 bool for_typeof() const { return for_typeof_; } | 5539 bool for_typeof() const { return for_typeof_; } |
5473 FeedbackVectorICSlot slot() const { | 5540 FeedbackVectorICSlot slot() const { return slot_; } |
5474 DCHECK(FLAG_vector_ics && !slot_.IsInvalid()); | |
5475 return slot_; | |
5476 } | |
5477 Handle<TypeFeedbackVector> feedback_vector() const { | 5541 Handle<TypeFeedbackVector> feedback_vector() const { |
5478 return feedback_vector_; | 5542 return feedback_vector_; |
5479 } | 5543 } |
| 5544 bool HasVectorAndSlot() const { return FLAG_vector_ics; } |
5480 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, | 5545 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
5481 FeedbackVectorICSlot slot) { | 5546 FeedbackVectorICSlot slot) { |
5482 DCHECK(FLAG_vector_ics); | 5547 DCHECK(FLAG_vector_ics); |
5483 feedback_vector_ = vector; | 5548 feedback_vector_ = vector; |
5484 slot_ = slot; | 5549 slot_ = slot; |
5485 } | 5550 } |
5486 | 5551 |
5487 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT | 5552 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT |
5488 | 5553 |
5489 Representation RequiredInputRepresentation(int index) OVERRIDE { | 5554 Representation RequiredInputRepresentation(int index) OVERRIDE { |
(...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6522 | 6587 |
6523 class HLoadNamedGeneric FINAL : public HTemplateInstruction<2> { | 6588 class HLoadNamedGeneric FINAL : public HTemplateInstruction<2> { |
6524 public: | 6589 public: |
6525 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadNamedGeneric, HValue*, | 6590 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadNamedGeneric, HValue*, |
6526 Handle<Object>); | 6591 Handle<Object>); |
6527 | 6592 |
6528 HValue* context() const { return OperandAt(0); } | 6593 HValue* context() const { return OperandAt(0); } |
6529 HValue* object() const { return OperandAt(1); } | 6594 HValue* object() const { return OperandAt(1); } |
6530 Handle<Object> name() const { return name_; } | 6595 Handle<Object> name() const { return name_; } |
6531 | 6596 |
6532 FeedbackVectorICSlot slot() const { | 6597 FeedbackVectorICSlot slot() const { return slot_; } |
6533 DCHECK(FLAG_vector_ics && !slot_.IsInvalid()); | |
6534 return slot_; | |
6535 } | |
6536 Handle<TypeFeedbackVector> feedback_vector() const { | 6598 Handle<TypeFeedbackVector> feedback_vector() const { |
6537 return feedback_vector_; | 6599 return feedback_vector_; |
6538 } | 6600 } |
| 6601 bool HasVectorAndSlot() const { return FLAG_vector_ics; } |
6539 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, | 6602 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
6540 FeedbackVectorICSlot slot) { | 6603 FeedbackVectorICSlot slot) { |
6541 DCHECK(FLAG_vector_ics); | 6604 DCHECK(FLAG_vector_ics); |
6542 feedback_vector_ = vector; | 6605 feedback_vector_ = vector; |
6543 slot_ = slot; | 6606 slot_ = slot; |
6544 } | 6607 } |
6545 | 6608 |
6546 Representation RequiredInputRepresentation(int index) OVERRIDE { | 6609 Representation RequiredInputRepresentation(int index) OVERRIDE { |
6547 return Representation::Tagged(); | 6610 return Representation::Tagged(); |
6548 } | 6611 } |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6687 | 6750 |
6688 Range* InferRange(Zone* zone) OVERRIDE; | 6751 Range* InferRange(Zone* zone) OVERRIDE; |
6689 | 6752 |
6690 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed) | 6753 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed) |
6691 | 6754 |
6692 protected: | 6755 protected: |
6693 bool DataEquals(HValue* other) OVERRIDE { | 6756 bool DataEquals(HValue* other) OVERRIDE { |
6694 if (!other->IsLoadKeyed()) return false; | 6757 if (!other->IsLoadKeyed()) return false; |
6695 HLoadKeyed* other_load = HLoadKeyed::cast(other); | 6758 HLoadKeyed* other_load = HLoadKeyed::cast(other); |
6696 | 6759 |
6697 if (IsDehoisted() && base_offset() != other_load->base_offset()) | 6760 if (base_offset() != other_load->base_offset()) return false; |
6698 return false; | |
6699 return elements_kind() == other_load->elements_kind(); | 6761 return elements_kind() == other_load->elements_kind(); |
6700 } | 6762 } |
6701 | 6763 |
6702 private: | 6764 private: |
6703 HLoadKeyed(HValue* obj, | 6765 HLoadKeyed(HValue* obj, |
6704 HValue* key, | 6766 HValue* key, |
6705 HValue* dependency, | 6767 HValue* dependency, |
6706 ElementsKind elements_kind, | 6768 ElementsKind elements_kind, |
6707 LoadKeyedHoleMode mode = NEVER_RETURN_HOLE, | 6769 LoadKeyedHoleMode mode = NEVER_RETURN_HOLE, |
6708 int offset = kDefaultKeyedHeaderOffsetSentinel) | 6770 int offset = kDefaultKeyedHeaderOffsetSentinel) |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6801 }; | 6863 }; |
6802 | 6864 |
6803 | 6865 |
6804 class HLoadKeyedGeneric FINAL : public HTemplateInstruction<3> { | 6866 class HLoadKeyedGeneric FINAL : public HTemplateInstruction<3> { |
6805 public: | 6867 public: |
6806 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadKeyedGeneric, HValue*, | 6868 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadKeyedGeneric, HValue*, |
6807 HValue*); | 6869 HValue*); |
6808 HValue* object() const { return OperandAt(0); } | 6870 HValue* object() const { return OperandAt(0); } |
6809 HValue* key() const { return OperandAt(1); } | 6871 HValue* key() const { return OperandAt(1); } |
6810 HValue* context() const { return OperandAt(2); } | 6872 HValue* context() const { return OperandAt(2); } |
6811 FeedbackVectorICSlot slot() const { | 6873 FeedbackVectorICSlot slot() const { return slot_; } |
6812 DCHECK(FLAG_vector_ics && !slot_.IsInvalid()); | |
6813 return slot_; | |
6814 } | |
6815 Handle<TypeFeedbackVector> feedback_vector() const { | 6874 Handle<TypeFeedbackVector> feedback_vector() const { |
6816 return feedback_vector_; | 6875 return feedback_vector_; |
6817 } | 6876 } |
| 6877 bool HasVectorAndSlot() const { return FLAG_vector_ics; } |
6818 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, | 6878 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
6819 FeedbackVectorICSlot slot) { | 6879 FeedbackVectorICSlot slot) { |
6820 DCHECK(FLAG_vector_ics); | 6880 DCHECK(FLAG_vector_ics); |
6821 feedback_vector_ = vector; | 6881 feedback_vector_ = vector; |
6822 slot_ = slot; | 6882 slot_ = slot; |
6823 } | 6883 } |
6824 | 6884 |
6825 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT | 6885 std::ostream& PrintDataTo(std::ostream& os) const OVERRIDE; // NOLINT |
6826 | 6886 |
6827 Representation RequiredInputRepresentation(int index) OVERRIDE { | 6887 Representation RequiredInputRepresentation(int index) OVERRIDE { |
(...skipping 1132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7960 }; | 8020 }; |
7961 | 8021 |
7962 | 8022 |
7963 | 8023 |
7964 #undef DECLARE_INSTRUCTION | 8024 #undef DECLARE_INSTRUCTION |
7965 #undef DECLARE_CONCRETE_INSTRUCTION | 8025 #undef DECLARE_CONCRETE_INSTRUCTION |
7966 | 8026 |
7967 } } // namespace v8::internal | 8027 } } // namespace v8::internal |
7968 | 8028 |
7969 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 8029 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |