]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - dfg/DFGOSREntry.h
JavaScriptCore-7600.1.4.9.tar.gz
[apple/javascriptcore.git] / dfg / DFGOSREntry.h
index a5c264cd6f45533c834e64beb6374524d83f9449..4f860a2da45eb01a718b72012942264a241135bf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2011, 2013 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -38,11 +38,28 @@ class CodeBlock;
 namespace DFG {
 
 #if ENABLE(DFG_JIT)
+struct OSREntryReshuffling {
+    OSREntryReshuffling() { }
+    
+    OSREntryReshuffling(int fromOffset, int toOffset)
+        : fromOffset(fromOffset)
+        , toOffset(toOffset)
+    {
+    }
+    
+    int fromOffset;
+    int toOffset;
+};
+
 struct OSREntryData {
     unsigned m_bytecodeIndex;
     unsigned m_machineCodeOffset;
     Operands<AbstractValue> m_expectedValues;
+    // Use bitvectors here because they tend to only require one word.
     BitVector m_localsForcedDouble;
+    BitVector m_localsForcedMachineInt;
+    Vector<OSREntryReshuffling> m_reshufflings;
+    BitVector m_machineStackUsed;
 };
 
 inline unsigned getOSREntryDataBytecodeIndex(OSREntryData* osrEntryData)
@@ -50,6 +67,8 @@ inline unsigned getOSREntryDataBytecodeIndex(OSREntryData* osrEntryData)
     return osrEntryData->m_bytecodeIndex;
 }
 
+// Returns a pointer to a data buffer that the OSR entry thunk will recognize and
+// parse. If this returns null, it means 
 void* prepareOSREntry(ExecState*, CodeBlock*, unsigned bytecodeIndex);
 #else
 inline void* prepareOSREntry(ExecState*, CodeBlock*, unsigned) { return 0; }