summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/CodeBlock.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode/CodeBlock.h')
-rw-r--r--Source/JavaScriptCore/bytecode/CodeBlock.h25
1 files changed, 10 insertions, 15 deletions
diff --git a/Source/JavaScriptCore/bytecode/CodeBlock.h b/Source/JavaScriptCore/bytecode/CodeBlock.h
index 778376f94..fe69ec673 100644
--- a/Source/JavaScriptCore/bytecode/CodeBlock.h
+++ b/Source/JavaScriptCore/bytecode/CodeBlock.h
@@ -309,26 +309,12 @@ namespace JSC {
m_dfgData->weakReferences.append(WriteBarrier<JSCell>(*globalData(), ownerExecutable(), target));
}
- void shrinkWeakReferencesToFit()
- {
- if (!m_dfgData)
- return;
- m_dfgData->weakReferences.shrinkToFit();
- }
-
void appendWeakReferenceTransition(JSCell* codeOrigin, JSCell* from, JSCell* to)
{
createDFGDataIfNecessary();
m_dfgData->transitions.append(
WeakReferenceTransition(*globalData(), ownerExecutable(), codeOrigin, from, to));
}
-
- void shrinkWeakReferenceTransitionsToFit()
- {
- if (!m_dfgData)
- return;
- m_dfgData->transitions.shrinkToFit();
- }
#endif
unsigned bytecodeOffset(Instruction* returnAddress)
@@ -826,7 +812,16 @@ namespace JSC {
EvalCodeCache& evalCodeCache() { createRareDataIfNecessary(); return m_rareData->m_evalCodeCache; }
- void shrinkToFit();
+ enum ShrinkMode {
+ // Shrink prior to generating machine code that may point directly into vectors.
+ EarlyShrink,
+
+ // Shrink after generating machine code, and after possibly creating new vectors
+ // and appending to others. At this time it is not safe to shrink certain vectors
+ // because we would have generated machine code that references them directly.
+ LateShrink
+ };
+ void shrinkToFit(ShrinkMode);
void copyPostParseDataFrom(CodeBlock* alternative);
void copyPostParseDataFromAlternative();