Index: src/ic/ic-state.h |
diff --git a/src/ic/ic-state.h b/src/ic/ic-state.h |
index 442e87c179598a46f8c0de7038e045ee0e2ba9e9..ebc686b7383bab3b6f2cba261b2038b2cb9e8405 100644 |
--- a/src/ic/ic-state.h |
+++ b/src/ic/ic-state.h |
@@ -23,20 +23,29 @@ class ICUtility : public AllStatic { |
class CallICState final BASE_EMBEDDED { |
public: |
- explicit CallICState(int argc) : argc_(argc) {} |
+ explicit CallICState(ExtraICState extra_ic_state) |
+ : bit_field_(extra_ic_state) {} |
+ CallICState(int argc, ConvertReceiverMode convert_mode) |
+ : bit_field_(ArgcBits::encode(argc) | |
+ ConvertModeBits::encode(convert_mode)) {} |
- ExtraICState GetExtraICState() const; |
+ ExtraICState GetExtraICState() const { return bit_field_; } |
static void GenerateAheadOfTime(Isolate*, |
void (*Generate)(Isolate*, |
const CallICState&)); |
- int arg_count() const { return argc_; } |
+ int argc() const { return ArgcBits::decode(bit_field_); } |
+ ConvertReceiverMode convert_mode() const { |
+ return ConvertModeBits::decode(bit_field_); |
+ } |
private: |
- class ArgcBits : public BitField<int, 0, Code::kArgumentsBits> {}; |
+ typedef BitField<int, 0, Code::kArgumentsBits> ArgcBits; |
+ typedef BitField<ConvertReceiverMode, Code::kArgumentsBits, 2> |
+ ConvertModeBits; |
- const int argc_; |
+ int const bit_field_; |
}; |