Chromium Code Reviews| Index: src/compiler/linkage.h |
| diff --git a/src/compiler/linkage.h b/src/compiler/linkage.h |
| index fa34adb7c2e0926f9579eecaac86a22efe2f76ff..6926ffb64e344ae9d9742b78d11cc18d455ee5c9 100644 |
| --- a/src/compiler/linkage.h |
| +++ b/src/compiler/linkage.h |
| @@ -27,6 +27,10 @@ class LinkageLocation { |
| public: |
| explicit LinkageLocation(int location) : location_(location) {} |
| + bool is_register() const { |
| + return 0 <= location_ && location_ <= ANY_REGISTER; |
| + } |
| + |
| static const int16_t ANY_REGISTER = 1023; |
| static const int16_t MAX_STACK_SLOT = 32767; |
| @@ -61,6 +65,7 @@ class CallDescriptor final : public ZoneObject { |
| kPatchableCallSite = 1u << 1, |
| kNeedsNopAfterCall = 1u << 2, |
| kHasExceptionHandler = 1u << 3, |
| + kIsTailCallAllowed = 1u << 4, |
|
Benedikt Meurer
2015/04/29 04:06:05
Can we rename this to kSupportsTailCalls?
Sven Panne
2015/04/29 10:24:18
Done.
|
| kPatchableCallSiteWithNop = kPatchableCallSite | kNeedsNopAfterCall |
| }; |
| typedef base::Flags<Flag> Flags; |
| @@ -108,6 +113,7 @@ class CallDescriptor final : public ZoneObject { |
| Flags flags() const { return flags_; } |
| bool NeedsFrameState() const { return flags() & kNeedsFrameState; } |
| + bool IsTailCallAllowed() const { return flags() & kIsTailCallAllowed; } |
|
Benedikt Meurer
2015/04/29 04:06:05
SupportsTailCalls?
Sven Panne
2015/04/29 10:24:18
Done.
|
| LinkageLocation GetReturnLocation(size_t index) const { |
| return location_sig_->GetReturn(index); |
| @@ -137,6 +143,8 @@ class CallDescriptor final : public ZoneObject { |
| const char* debug_name() const { return debug_name_; } |
| + bool UsesOnlyRegisters() const; |
| + |
| private: |
| friend class Linkage; |