diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-30 12:48:17 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-30 12:48:17 +0200 |
commit | 881da28418d380042aa95a97f0cbd42560a64f7c (patch) | |
tree | a794dff3274695e99c651902dde93d934ea7a5af /Source/JavaScriptCore/dfg/DFGOSREntry.h | |
parent | 7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff) | |
parent | 0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff) | |
download | qtwebkit-881da28418d380042aa95a97f0cbd42560a64f7c.tar.gz |
Merge 'wip/next' into dev
Change-Id: Iff9ee5e23bb326c4371ec8ed81d56f2f05d680e9
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; } |