2929#include " CodeBlock.h"
3030#include " CodeBlockHash.h"
3131#include " CodeOrigin.h"
32- #include " Executable.h"
3332#include " ValueRecovery.h"
3433#include " WriteBarrier.h"
3534#include < wtf/BitVector.h>
@@ -42,7 +41,6 @@ namespace JSC {
4241
4342struct InlineCallFrame ;
4443class ExecState ;
45- class ScriptExecutable ;
4644class JSFunction ;
4745
4846struct InlineCallFrame {
@@ -174,7 +172,7 @@ struct InlineCallFrame {
174172 }
175173
176174 Vector<ValueRecovery> arguments; // Includes 'this'.
177- WriteBarrier<ScriptExecutable> executable ;
175+ WriteBarrier<CodeBlock> baselineCodeBlock ;
178176 ValueRecovery calleeRecovery;
179177 CodeOrigin directCaller;
180178
@@ -209,8 +207,6 @@ struct InlineCallFrame {
209207 CodeBlockHash hash () const ;
210208 CString hashAsStringIfPossible () const ;
211209
212- CodeBlock* baselineCodeBlock () const ;
213-
214210 void setStackOffset (signed offset)
215211 {
216212 stackOffset = offset;
@@ -220,6 +216,8 @@ struct InlineCallFrame {
220216 ptrdiff_t callerFrameOffset () const { return stackOffset * sizeof (Register) + CallFrame::callerFrameOffset (); }
221217 ptrdiff_t returnPCOffset () const { return stackOffset * sizeof (Register) + CallFrame::returnPCOffset (); }
222218
219+ bool isStrictMode () const { return baselineCodeBlock->isStrictMode (); }
220+
223221 void dumpBriefFunctionInformation (PrintStream&) const ;
224222 void dump (PrintStream&) const ;
225223 void dumpInContext (PrintStream&, DumpContext*) const ;
@@ -231,9 +229,7 @@ struct InlineCallFrame {
231229inline CodeBlock* baselineCodeBlockForInlineCallFrame (InlineCallFrame* inlineCallFrame)
232230{
233231 RELEASE_ASSERT (inlineCallFrame);
234- ScriptExecutable* executable = inlineCallFrame->executable .get ();
235- RELEASE_ASSERT (executable->structure ()->classInfo () == FunctionExecutable::info ());
236- return static_cast <FunctionExecutable*>(executable)->baselineCodeBlockFor (inlineCallFrame->specializationKind ());
232+ return inlineCallFrame->baselineCodeBlock .get ();
237233}
238234
239235inline CodeBlock* baselineCodeBlockForOriginAndBaselineCodeBlock (const CodeOrigin& codeOrigin, CodeBlock* baselineCodeBlock)
0 commit comments