diff options
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGOSREntry.h')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGOSREntry.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGOSREntry.h b/Source/JavaScriptCore/dfg/DFGOSREntry.h index a5c264cd6..04aaabfee 100644 --- a/Source/JavaScriptCore/dfg/DFGOSREntry.h +++ b/Source/JavaScriptCore/dfg/DFGOSREntry.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Apple Inc. All rights reserved. + * Copyright (C) 2011, 2013, 2015 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,31 @@ 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; + + void dumpInContext(PrintStream&, DumpContext*) const; + void dump(PrintStream&) const; }; inline unsigned getOSREntryDataBytecodeIndex(OSREntryData* osrEntryData) @@ -50,6 +70,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; } |