]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - bytecode/PutByIdStatus.h
JavaScriptCore-1218.35.tar.gz
[apple/javascriptcore.git] / bytecode / PutByIdStatus.h
index a6d95a449072ae97216f9cef07c1d9dbfd56acce..659e629d2e99add9c1f203c05ac249c4fdd74840 100644 (file)
 #ifndef PutByIdStatus_h
 #define PutByIdStatus_h
 
+#include "PropertyOffset.h"
 #include <wtf/NotFound.h>
 
 namespace JSC {
 
 class CodeBlock;
 class Identifier;
+class VM;
+class JSGlobalObject;
 class Structure;
 class StructureChain;
 
@@ -55,16 +58,26 @@ public:
         , m_oldStructure(0)
         , m_newStructure(0)
         , m_structureChain(0)
-        , m_offset(notFound)
+        , m_offset(invalidOffset)
     {
     }
     
+    explicit PutByIdStatus(State state)
+        : m_state(state)
+        , m_oldStructure(0)
+        , m_newStructure(0)
+        , m_structureChain(0)
+        , m_offset(invalidOffset)
+    {
+        ASSERT(m_state == NoInformation || m_state == TakesSlowPath);
+    }
+    
     PutByIdStatus(
         State state,
         Structure* oldStructure,
         Structure* newStructure,
         StructureChain* structureChain,
-        size_t offset)
+        PropertyOffset offset)
         : m_state(state)
         , m_oldStructure(oldStructure)
         , m_newStructure(newStructure)
@@ -74,10 +87,11 @@ public:
         ASSERT((m_state == NoInformation || m_state == TakesSlowPath) == !m_oldStructure);
         ASSERT((m_state != SimpleTransition) == !m_newStructure);
         ASSERT((m_state != SimpleTransition) == !m_structureChain);
-        ASSERT((m_state == NoInformation || m_state == TakesSlowPath) == (m_offset == notFound));
+        ASSERT((m_state == NoInformation || m_state == TakesSlowPath) == (m_offset == invalidOffset));
     }
     
     static PutByIdStatus computeFor(CodeBlock*, unsigned bytecodeIndex, Identifier&);
+    static PutByIdStatus computeFor(VM&, JSGlobalObject*, Structure*, Identifier&, bool isDirect);
     
     State state() const { return m_state; }
     
@@ -90,7 +104,7 @@ public:
     Structure* oldStructure() const { return m_oldStructure; }
     Structure* newStructure() const { return m_newStructure; }
     StructureChain* structureChain() const { return m_structureChain; }
-    size_t offset() const { return m_offset; }
+    PropertyOffset offset() const { return m_offset; }
     
 private:
     static PutByIdStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex, Identifier&);
@@ -99,7 +113,7 @@ private:
     Structure* m_oldStructure;
     Structure* m_newStructure;
     StructureChain* m_structureChain;
-    size_t m_offset;
+    PropertyOffset m_offset;
 };
 
 } // namespace JSC