From 4fe185827aff69c43a2c67811b810ba4f6b3a317 Mon Sep 17 00:00:00 2001 From: "mvstanton@chromium.org" Date: Wed, 23 Jul 2014 12:24:11 +0000 Subject: [PATCH] Express LoadIC extra ic state with LoadIC::State Soon we will create code stubs that need to match LoadIC state. It's easier to express if the state is encapsulated in a single class rather than multiple bit fields. R=verwaest@chromium.org Review URL: https://codereview.chromium.org/415543002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22559 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/ic.h | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/ic.h b/src/ic.h index 44dd3c8..0199158 100644 --- a/src/ic.h +++ b/src/ic.h @@ -374,10 +374,6 @@ OStream& operator<<(OStream& os, const CallIC::State& s); class LoadIC: public IC { public: - // ExtraICState bits - class ContextualModeBits: public BitField {}; - STATIC_ASSERT(static_cast(NOT_CONTEXTUAL) == 0); - enum ParameterIndices { kReceiverIndex, kNameIndex, @@ -391,16 +387,37 @@ class LoadIC: public IC { static const Register SlotRegister(); static const Register VectorRegister(); + class State V8_FINAL BASE_EMBEDDED { + public: + explicit State(ExtraICState extra_ic_state) + : state_(extra_ic_state) {} + + explicit State(ContextualMode mode) + : state_(ContextualModeBits::encode(mode)) {} + + ExtraICState GetExtraICState() const { return state_; } + + ContextualMode contextual_mode() const { + return ContextualModeBits::decode(state_); + } + + private: + class ContextualModeBits: public BitField {}; + STATIC_ASSERT(static_cast(NOT_CONTEXTUAL) == 0); + + const ExtraICState state_; + }; + static ExtraICState ComputeExtraICState(ContextualMode contextual_mode) { - return ContextualModeBits::encode(contextual_mode); + return State(contextual_mode).GetExtraICState(); } static ContextualMode GetContextualMode(ExtraICState state) { - return ContextualModeBits::decode(state); + return State(state).contextual_mode(); } ContextualMode contextual_mode() const { - return ContextualModeBits::decode(extra_ic_state()); + return GetContextualMode(extra_ic_state()); } explicit LoadIC(FrameDepth depth, Isolate* isolate) -- 2.7.4