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 1930 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1941 class HConstant; | 1941 class HConstant; |
1942 | 1942 |
1943 | 1943 |
1944 class HEnterInlined final : public HTemplateInstruction<0> { | 1944 class HEnterInlined final : public HTemplateInstruction<0> { |
1945 public: | 1945 public: |
1946 static HEnterInlined* New(Isolate* isolate, Zone* zone, HValue* context, | 1946 static HEnterInlined* New(Isolate* isolate, Zone* zone, HValue* context, |
1947 BailoutId return_id, Handle<JSFunction> closure, | 1947 BailoutId return_id, Handle<JSFunction> closure, |
1948 HConstant* closure_context, int arguments_count, | 1948 HConstant* closure_context, int arguments_count, |
1949 FunctionLiteral* function, | 1949 FunctionLiteral* function, |
1950 InliningKind inlining_kind, Variable* arguments_var, | 1950 InliningKind inlining_kind, Variable* arguments_var, |
1951 HArgumentsObject* arguments_object) { | 1951 HArgumentsObject* arguments_object, |
1952 return new (zone) HEnterInlined(return_id, closure, closure_context, | 1952 TailCallMode syntactic_tail_call_mode) { |
1953 arguments_count, function, inlining_kind, | 1953 return new (zone) |
1954 arguments_var, arguments_object, zone); | 1954 HEnterInlined(return_id, closure, closure_context, arguments_count, |
| 1955 function, inlining_kind, arguments_var, arguments_object, |
| 1956 syntactic_tail_call_mode, zone); |
1955 } | 1957 } |
1956 | 1958 |
1957 void RegisterReturnTarget(HBasicBlock* return_target, Zone* zone); | 1959 void RegisterReturnTarget(HBasicBlock* return_target, Zone* zone); |
1958 ZoneList<HBasicBlock*>* return_targets() { return &return_targets_; } | 1960 ZoneList<HBasicBlock*>* return_targets() { return &return_targets_; } |
1959 | 1961 |
1960 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | 1962 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
1961 | 1963 |
1962 Handle<SharedFunctionInfo> shared() const { return shared_; } | 1964 Handle<SharedFunctionInfo> shared() const { return shared_; } |
1963 Handle<JSFunction> closure() const { return closure_; } | 1965 Handle<JSFunction> closure() const { return closure_; } |
1964 HConstant* closure_context() const { return closure_context_; } | 1966 HConstant* closure_context() const { return closure_context_; } |
1965 int arguments_count() const { return arguments_count_; } | 1967 int arguments_count() const { return arguments_count_; } |
1966 bool arguments_pushed() const { return arguments_pushed_; } | 1968 bool arguments_pushed() const { return arguments_pushed_; } |
1967 void set_arguments_pushed() { arguments_pushed_ = true; } | 1969 void set_arguments_pushed() { arguments_pushed_ = true; } |
1968 FunctionLiteral* function() const { return function_; } | 1970 FunctionLiteral* function() const { return function_; } |
1969 InliningKind inlining_kind() const { return inlining_kind_; } | 1971 InliningKind inlining_kind() const { return inlining_kind_; } |
| 1972 TailCallMode syntactic_tail_call_mode() const { |
| 1973 return syntactic_tail_call_mode_; |
| 1974 } |
1970 BailoutId ReturnId() const { return return_id_; } | 1975 BailoutId ReturnId() const { return return_id_; } |
1971 int inlining_id() const { return inlining_id_; } | 1976 int inlining_id() const { return inlining_id_; } |
1972 void set_inlining_id(int inlining_id) { inlining_id_ = inlining_id; } | 1977 void set_inlining_id(int inlining_id) { inlining_id_ = inlining_id; } |
1973 | 1978 |
1974 Representation RequiredInputRepresentation(int index) override { | 1979 Representation RequiredInputRepresentation(int index) override { |
1975 return Representation::None(); | 1980 return Representation::None(); |
1976 } | 1981 } |
1977 | 1982 |
1978 Variable* arguments_var() { return arguments_var_; } | 1983 Variable* arguments_var() { return arguments_var_; } |
1979 HArgumentsObject* arguments_object() { return arguments_object_; } | 1984 HArgumentsObject* arguments_object() { return arguments_object_; } |
1980 | 1985 |
1981 DECLARE_CONCRETE_INSTRUCTION(EnterInlined) | 1986 DECLARE_CONCRETE_INSTRUCTION(EnterInlined) |
1982 | 1987 |
1983 private: | 1988 private: |
1984 HEnterInlined(BailoutId return_id, Handle<JSFunction> closure, | 1989 HEnterInlined(BailoutId return_id, Handle<JSFunction> closure, |
1985 HConstant* closure_context, int arguments_count, | 1990 HConstant* closure_context, int arguments_count, |
1986 FunctionLiteral* function, InliningKind inlining_kind, | 1991 FunctionLiteral* function, InliningKind inlining_kind, |
1987 Variable* arguments_var, HArgumentsObject* arguments_object, | 1992 Variable* arguments_var, HArgumentsObject* arguments_object, |
1988 Zone* zone) | 1993 TailCallMode syntactic_tail_call_mode, Zone* zone) |
1989 : return_id_(return_id), | 1994 : return_id_(return_id), |
1990 shared_(handle(closure->shared())), | 1995 shared_(handle(closure->shared())), |
1991 closure_(closure), | 1996 closure_(closure), |
1992 closure_context_(closure_context), | 1997 closure_context_(closure_context), |
1993 arguments_count_(arguments_count), | 1998 arguments_count_(arguments_count), |
1994 arguments_pushed_(false), | 1999 arguments_pushed_(false), |
1995 function_(function), | 2000 function_(function), |
1996 inlining_kind_(inlining_kind), | 2001 inlining_kind_(inlining_kind), |
| 2002 syntactic_tail_call_mode_(syntactic_tail_call_mode), |
1997 inlining_id_(0), | 2003 inlining_id_(0), |
1998 arguments_var_(arguments_var), | 2004 arguments_var_(arguments_var), |
1999 arguments_object_(arguments_object), | 2005 arguments_object_(arguments_object), |
2000 return_targets_(2, zone) {} | 2006 return_targets_(2, zone) {} |
2001 | 2007 |
2002 BailoutId return_id_; | 2008 BailoutId return_id_; |
2003 Handle<SharedFunctionInfo> shared_; | 2009 Handle<SharedFunctionInfo> shared_; |
2004 Handle<JSFunction> closure_; | 2010 Handle<JSFunction> closure_; |
2005 HConstant* closure_context_; | 2011 HConstant* closure_context_; |
2006 int arguments_count_; | 2012 int arguments_count_; |
2007 bool arguments_pushed_; | 2013 bool arguments_pushed_; |
2008 FunctionLiteral* function_; | 2014 FunctionLiteral* function_; |
2009 InliningKind inlining_kind_; | 2015 InliningKind inlining_kind_; |
| 2016 TailCallMode syntactic_tail_call_mode_; |
2010 int inlining_id_; | 2017 int inlining_id_; |
2011 Variable* arguments_var_; | 2018 Variable* arguments_var_; |
2012 HArgumentsObject* arguments_object_; | 2019 HArgumentsObject* arguments_object_; |
2013 ZoneList<HBasicBlock*> return_targets_; | 2020 ZoneList<HBasicBlock*> return_targets_; |
2014 }; | 2021 }; |
2015 | 2022 |
2016 | 2023 |
2017 class HLeaveInlined final : public HTemplateInstruction<0> { | 2024 class HLeaveInlined final : public HTemplateInstruction<0> { |
2018 public: | 2025 public: |
2019 HLeaveInlined(HEnterInlined* entry, | 2026 HLeaveInlined(HEnterInlined* entry, |
(...skipping 5571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7591 | 7598 |
7592 | 7599 |
7593 | 7600 |
7594 #undef DECLARE_INSTRUCTION | 7601 #undef DECLARE_INSTRUCTION |
7595 #undef DECLARE_CONCRETE_INSTRUCTION | 7602 #undef DECLARE_CONCRETE_INSTRUCTION |
7596 | 7603 |
7597 } // namespace internal | 7604 } // namespace internal |
7598 } // namespace v8 | 7605 } // namespace v8 |
7599 | 7606 |
7600 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7607 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |