Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1042)

Unified Diff: src/compiler/linkage.h

Issue 1108563002: Detect simple tail calls (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Handle callers with args Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698