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 7549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7560 | 7560 |
7561 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } | 7561 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } |
7562 bool pretenure() const { return PretenureField::decode(bit_field_); } | 7562 bool pretenure() const { return PretenureField::decode(bit_field_); } |
7563 bool has_no_literals() const { | 7563 bool has_no_literals() const { |
7564 return HasNoLiteralsField::decode(bit_field_); | 7564 return HasNoLiteralsField::decode(bit_field_); |
7565 } | 7565 } |
7566 bool is_arrow() const { return IsArrowFunction(kind()); } | 7566 bool is_arrow() const { return IsArrowFunction(kind()); } |
7567 bool is_generator() const { return IsGeneratorFunction(kind()); } | 7567 bool is_generator() const { return IsGeneratorFunction(kind()); } |
7568 bool is_concise_method() const { return IsConciseMethod(kind()); } | 7568 bool is_concise_method() const { return IsConciseMethod(kind()); } |
7569 bool is_default_constructor() const { return IsDefaultConstructor(kind()); } | 7569 bool is_default_constructor() const { return IsDefaultConstructor(kind()); } |
7570 bool is_default_constructor_call_super() const { | |
7571 return IsDefaultConstructorCallSuper(kind()); | |
7572 } | |
7573 FunctionKind kind() const { return FunctionKindField::decode(bit_field_); } | 7570 FunctionKind kind() const { return FunctionKindField::decode(bit_field_); } |
7574 StrictMode strict_mode() const { return StrictModeField::decode(bit_field_); } | 7571 StrictMode strict_mode() const { return StrictModeField::decode(bit_field_); } |
7575 | 7572 |
7576 private: | 7573 private: |
7577 HFunctionLiteral(HValue* context, Handle<SharedFunctionInfo> shared, | 7574 HFunctionLiteral(HValue* context, Handle<SharedFunctionInfo> shared, |
7578 bool pretenure) | 7575 bool pretenure) |
7579 : HTemplateInstruction<1>(HType::JSObject()), | 7576 : HTemplateInstruction<1>(HType::JSObject()), |
7580 shared_info_(shared), | 7577 shared_info_(shared), |
7581 bit_field_(FunctionKindField::encode(shared->kind()) | | 7578 bit_field_(FunctionKindField::encode(shared->kind()) | |
7582 PretenureField::encode(pretenure) | | 7579 PretenureField::encode(pretenure) | |
7583 HasNoLiteralsField::encode(shared->num_literals() == 0) | | 7580 HasNoLiteralsField::encode(shared->num_literals() == 0) | |
7584 StrictModeField::encode(shared->strict_mode())) { | 7581 StrictModeField::encode(shared->strict_mode())) { |
7585 SetOperandAt(0, context); | 7582 SetOperandAt(0, context); |
7586 set_representation(Representation::Tagged()); | 7583 set_representation(Representation::Tagged()); |
7587 SetChangesFlag(kNewSpacePromotion); | 7584 SetChangesFlag(kNewSpacePromotion); |
7588 } | 7585 } |
7589 | 7586 |
7590 virtual bool IsDeletable() const OVERRIDE { return true; } | 7587 virtual bool IsDeletable() const OVERRIDE { return true; } |
7591 | 7588 |
7592 class FunctionKindField : public BitField<FunctionKind, 0, 5> {}; | 7589 class FunctionKindField : public BitField<FunctionKind, 0, 4> {}; |
7593 class PretenureField : public BitField<bool, 5, 1> {}; | 7590 class PretenureField : public BitField<bool, 5, 1> {}; |
7594 class HasNoLiteralsField : public BitField<bool, 6, 1> {}; | 7591 class HasNoLiteralsField : public BitField<bool, 6, 1> {}; |
7595 class StrictModeField : public BitField<StrictMode, 7, 1> {}; | 7592 class StrictModeField : public BitField<StrictMode, 7, 1> {}; |
7596 | 7593 |
7597 Handle<SharedFunctionInfo> shared_info_; | 7594 Handle<SharedFunctionInfo> shared_info_; |
7598 uint32_t bit_field_; | 7595 uint32_t bit_field_; |
7599 }; | 7596 }; |
7600 | 7597 |
7601 | 7598 |
7602 class HTypeof FINAL : public HTemplateInstruction<2> { | 7599 class HTypeof FINAL : public HTemplateInstruction<2> { |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7982 }; | 7979 }; |
7983 | 7980 |
7984 | 7981 |
7985 | 7982 |
7986 #undef DECLARE_INSTRUCTION | 7983 #undef DECLARE_INSTRUCTION |
7987 #undef DECLARE_CONCRETE_INSTRUCTION | 7984 #undef DECLARE_CONCRETE_INSTRUCTION |
7988 | 7985 |
7989 } } // namespace v8::internal | 7986 } } // namespace v8::internal |
7990 | 7987 |
7991 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7988 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |