Index: src/compiler/linkage.h |
diff --git a/src/compiler/linkage.h b/src/compiler/linkage.h |
index 0ad0761a0a90bfa654678c6938ade4ab8238cd0b..c0f143c0cd8efb2ac63c8f6977417bb88c780ae0 100644 |
--- a/src/compiler/linkage.h |
+++ b/src/compiler/linkage.h |
@@ -18,19 +18,26 @@ class CallInterfaceDescriptor; |
namespace compiler { |
+class OsrHelper; |
+ |
// Describes the location for a parameter or a return value to a call. |
class LinkageLocation { |
public: |
explicit LinkageLocation(int location) : location_(location) {} |
- static const int16_t ANY_REGISTER = 32767; |
+ static const int16_t ANY_REGISTER = 1023; |
+ static const int16_t MAX_STACK_SLOT = 32767; |
static LinkageLocation AnyRegister() { return LinkageLocation(ANY_REGISTER); } |
private: |
friend class CallDescriptor; |
friend class OperandGenerator; |
- int16_t location_; // >= 0 implies register, otherwise stack slot. |
+ // location < 0 -> a stack slot on the caller frame |
+ // 0 <= location < 1023 -> a specific machine register |
+ // 1023 <= location < 1024 -> any machine register |
+ // 1024 <= location -> a stack slot in the callee frame |
+ int16_t location_; |
}; |
typedef Signature<LinkageLocation> LocationSignature; |
@@ -227,6 +234,9 @@ class Linkage : public ZoneObject { |
static bool NeedsFrameState(Runtime::FunctionId function); |
+ // Get the location where an incoming OSR value is stored. |
+ LinkageLocation GetOsrValueLocation(int index) const; |
+ |
private: |
Zone* const zone_; |
CallDescriptor* const incoming_; |