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_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
7 | 7 |
8 #include <cstring> | 8 #include <cstring> |
9 #include <iosfwd> | 9 #include <iosfwd> |
10 | 10 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 V(ArgumentsElements) \ | 53 V(ArgumentsElements) \ |
54 V(ArgumentsLength) \ | 54 V(ArgumentsLength) \ |
55 V(ArgumentsObject) \ | 55 V(ArgumentsObject) \ |
56 V(Bitwise) \ | 56 V(Bitwise) \ |
57 V(BlockEntry) \ | 57 V(BlockEntry) \ |
58 V(BoundsCheck) \ | 58 V(BoundsCheck) \ |
59 V(BoundsCheckBaseIndexInformation) \ | 59 V(BoundsCheckBaseIndexInformation) \ |
60 V(Branch) \ | 60 V(Branch) \ |
61 V(CallWithDescriptor) \ | 61 V(CallWithDescriptor) \ |
62 V(CallJSFunction) \ | 62 V(CallJSFunction) \ |
63 V(CallFunction) \ | |
64 V(CallNewArray) \ | 63 V(CallNewArray) \ |
65 V(CallRuntime) \ | 64 V(CallRuntime) \ |
66 V(CapturedObject) \ | 65 V(CapturedObject) \ |
67 V(Change) \ | 66 V(Change) \ |
68 V(CheckArrayBufferNotNeutered) \ | 67 V(CheckArrayBufferNotNeutered) \ |
69 V(CheckHeapObject) \ | 68 V(CheckHeapObject) \ |
70 V(CheckInstanceType) \ | 69 V(CheckInstanceType) \ |
71 V(CheckMaps) \ | 70 V(CheckMaps) \ |
72 V(CheckMapValue) \ | 71 V(CheckMapValue) \ |
73 V(CheckSmi) \ | 72 V(CheckSmi) \ |
(...skipping 2183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2257 | 2256 |
2258 class HCallWithDescriptor final : public HInstruction { | 2257 class HCallWithDescriptor final : public HInstruction { |
2259 public: | 2258 public: |
2260 static HCallWithDescriptor* New(Isolate* isolate, Zone* zone, HValue* context, | 2259 static HCallWithDescriptor* New(Isolate* isolate, Zone* zone, HValue* context, |
2261 HValue* target, int argument_count, | 2260 HValue* target, int argument_count, |
2262 CallInterfaceDescriptor descriptor, | 2261 CallInterfaceDescriptor descriptor, |
2263 const Vector<HValue*>& operands, | 2262 const Vector<HValue*>& operands, |
2264 CallMode call_mode = NORMAL_CALL) { | 2263 CallMode call_mode = NORMAL_CALL) { |
2265 HCallWithDescriptor* res = new (zone) HCallWithDescriptor( | 2264 HCallWithDescriptor* res = new (zone) HCallWithDescriptor( |
2266 target, argument_count, descriptor, operands, call_mode, zone); | 2265 target, argument_count, descriptor, operands, call_mode, zone); |
2267 DCHECK(operands.length() == res->GetParameterCount()); | 2266 DCHECK_EQ(operands.length(), res->GetParameterCount()); |
2268 return res; | 2267 return res; |
2269 } | 2268 } |
2270 | 2269 |
2271 int OperandCount() const final { return values_.length(); } | 2270 int OperandCount() const final { return values_.length(); } |
2272 HValue* OperandAt(int index) const final { return values_[index]; } | 2271 HValue* OperandAt(int index) const final { return values_[index]; } |
2273 | 2272 |
2274 Representation RequiredInputRepresentation(int index) final { | 2273 Representation RequiredInputRepresentation(int index) final { |
2275 if (index == 0 || index == 1) { | 2274 if (index == 0 || index == 1) { |
2276 // Target + context | 2275 // Target + context |
2277 return Representation::Tagged(); | 2276 return Representation::Tagged(); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2383 : HBinaryCall(context, function, argument_count), | 2382 : HBinaryCall(context, function, argument_count), |
2384 has_stack_check_(false) { | 2383 has_stack_check_(false) { |
2385 } | 2384 } |
2386 | 2385 |
2387 Handle<JSFunction> known_function_; | 2386 Handle<JSFunction> known_function_; |
2388 int formal_parameter_count_; | 2387 int formal_parameter_count_; |
2389 bool has_stack_check_; | 2388 bool has_stack_check_; |
2390 }; | 2389 }; |
2391 | 2390 |
2392 | 2391 |
2393 class HCallFunction final : public HBinaryCall { | |
2394 public: | |
2395 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HCallFunction, HValue*, int, | |
2396 ConvertReceiverMode); | |
2397 | |
2398 HValue* context() const { return first(); } | |
2399 HValue* function() const { return second(); } | |
2400 | |
2401 ConvertReceiverMode convert_mode() const { | |
2402 return ConvertReceiverModeField::decode(bit_field_); | |
2403 } | |
2404 FeedbackVectorSlot slot() const { return slot_; } | |
2405 Handle<TypeFeedbackVector> feedback_vector() const { | |
2406 return feedback_vector_; | |
2407 } | |
2408 bool HasVectorAndSlot() const { return !feedback_vector_.is_null(); } | |
2409 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, | |
2410 FeedbackVectorSlot slot) { | |
2411 feedback_vector_ = vector; | |
2412 slot_ = slot; | |
2413 } | |
2414 | |
2415 DECLARE_CONCRETE_INSTRUCTION(CallFunction) | |
2416 | |
2417 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | |
2418 | |
2419 int argument_delta() const override { return -argument_count(); } | |
2420 | |
2421 private: | |
2422 HCallFunction(HValue* context, HValue* function, int argument_count, | |
2423 ConvertReceiverMode convert_mode) | |
2424 : HBinaryCall(context, function, argument_count), | |
2425 bit_field_(ConvertReceiverModeField::encode(convert_mode)) {} | |
2426 Handle<TypeFeedbackVector> feedback_vector_; | |
2427 FeedbackVectorSlot slot_; | |
2428 | |
2429 class ConvertReceiverModeField : public BitField<ConvertReceiverMode, 0, 2> { | |
2430 }; | |
2431 | |
2432 uint32_t bit_field_; | |
2433 }; | |
2434 | |
2435 | |
2436 class HCallNewArray final : public HBinaryCall { | 2392 class HCallNewArray final : public HBinaryCall { |
2437 public: | 2393 public: |
2438 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HCallNewArray, HValue*, int, | 2394 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HCallNewArray, HValue*, int, |
2439 ElementsKind, | 2395 ElementsKind, |
2440 Handle<AllocationSite>); | 2396 Handle<AllocationSite>); |
2441 | 2397 |
2442 HValue* context() { return first(); } | 2398 HValue* context() { return first(); } |
2443 HValue* constructor() { return second(); } | 2399 HValue* constructor() { return second(); } |
2444 | 2400 |
2445 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | 2401 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
(...skipping 5222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7668 | 7624 |
7669 | 7625 |
7670 | 7626 |
7671 #undef DECLARE_INSTRUCTION | 7627 #undef DECLARE_INSTRUCTION |
7672 #undef DECLARE_CONCRETE_INSTRUCTION | 7628 #undef DECLARE_CONCRETE_INSTRUCTION |
7673 | 7629 |
7674 } // namespace internal | 7630 } // namespace internal |
7675 } // namespace v8 | 7631 } // namespace v8 |
7676 | 7632 |
7677 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7633 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |