diff options
Diffstat (limited to 'Source/JavaScriptCore/bytecode')
-rw-r--r-- | Source/JavaScriptCore/bytecode/CodeBlock.cpp | 4 | ||||
-rw-r--r-- | Source/JavaScriptCore/bytecode/CodeBlock.h | 22 | ||||
-rw-r--r-- | Source/JavaScriptCore/bytecode/Instruction.h | 4 | ||||
-rw-r--r-- | Source/JavaScriptCore/bytecode/SamplingTool.h | 6 |
4 files changed, 22 insertions, 14 deletions
diff --git a/Source/JavaScriptCore/bytecode/CodeBlock.cpp b/Source/JavaScriptCore/bytecode/CodeBlock.cpp index f3f5f27..5fba8bb 100644 --- a/Source/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/Source/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1361,6 +1361,7 @@ void CodeBlock::dumpStatistics() CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, JSGlobalObject *globalObject, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset, SymbolTable* symTab, bool isConstructor) : m_globalObject(globalObject) + , m_heap(&m_globalObject->globalData().heap) , m_numCalleeRegisters(0) , m_numVars(0) , m_numParameters(0) @@ -1529,12 +1530,11 @@ void CodeBlock::refStructures(Instruction* vPC) const void CodeBlock::markAggregate(MarkStack& markStack) { for (size_t i = 0; i < m_constantRegisters.size(); ++i) - markStack.append(m_constantRegisters[i].jsValue()); + markStack.deprecatedAppend(&m_constantRegisters[i]); for (size_t i = 0; i < m_functionExprs.size(); ++i) m_functionExprs[i]->markAggregate(markStack); for (size_t i = 0; i < m_functionDecls.size(); ++i) m_functionDecls[i]->markAggregate(markStack); - markStack.append(m_globalObject); } HandlerInfo* CodeBlock::handlerForBytecodeOffset(unsigned bytecodeOffset) diff --git a/Source/JavaScriptCore/bytecode/CodeBlock.h b/Source/JavaScriptCore/bytecode/CodeBlock.h index 7eca72a..f8498b4 100644 --- a/Source/JavaScriptCore/bytecode/CodeBlock.h +++ b/Source/JavaScriptCore/bytecode/CodeBlock.h @@ -242,12 +242,14 @@ namespace JSC { } #endif - class CodeBlock : public FastAllocBase { + class CodeBlock { + WTF_MAKE_FAST_ALLOCATED; friend class JIT; protected: CodeBlock(ScriptExecutable* ownerExecutable, CodeType, JSGlobalObject*, PassRefPtr<SourceProvider>, unsigned sourceOffset, SymbolTable* symbolTable, bool isConstructor); - JSGlobalObject* m_globalObject; + DeprecatedPtr<JSGlobalObject> m_globalObject; + Heap* m_heap; public: virtual ~CodeBlock(); @@ -484,7 +486,7 @@ namespace JSC { unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; } RegExp* regexp(int index) const { ASSERT(m_rareData); return m_rareData->m_regexps[index].get(); } - JSGlobalObject* globalObject() { return m_globalObject; } + JSGlobalObject* globalObject() { return m_globalObject.get(); } // Jump Tables @@ -578,7 +580,9 @@ namespace JSC { SymbolTable* m_symbolTable; - struct RareData : FastAllocBase { + struct RareData { + WTF_MAKE_FAST_ALLOCATED; + public: Vector<HandlerInfo> m_exceptionHandlers; // Rare Constants @@ -599,6 +603,9 @@ namespace JSC { Vector<CallReturnOffsetToBytecodeOffset> m_callReturnIndexVector; #endif }; +#if PLATFORM(WIN) + friend void WTF::deleteOwnedPtr<RareData>(RareData*); +#endif OwnPtr<RareData> m_rareData; }; @@ -610,17 +617,14 @@ namespace JSC { GlobalCodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, JSGlobalObject* globalObject, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset) : CodeBlock(ownerExecutable, codeType, globalObject, sourceProvider, sourceOffset, &m_unsharedSymbolTable, false) { - m_globalObject->codeBlocks().add(this); + m_heap->codeBlocks().add(this); } ~GlobalCodeBlock() { - if (m_globalObject) - m_globalObject->codeBlocks().remove(this); + m_heap->codeBlocks().remove(this); } - void clearGlobalObject() { m_globalObject = 0; } - private: SymbolTable m_unsharedSymbolTable; }; diff --git a/Source/JavaScriptCore/bytecode/Instruction.h b/Source/JavaScriptCore/bytecode/Instruction.h index c6468a5..f077cbf 100644 --- a/Source/JavaScriptCore/bytecode/Instruction.h +++ b/Source/JavaScriptCore/bytecode/Instruction.h @@ -54,7 +54,9 @@ namespace JSC { class StructureChain; // Structure used by op_get_by_id_self_list and op_get_by_id_proto_list instruction to hold data off the main opcode stream. - struct PolymorphicAccessStructureList : FastAllocBase { + struct PolymorphicAccessStructureList { + WTF_MAKE_FAST_ALLOCATED; + public: struct PolymorphicStubInfo { bool isChain; PolymorphicAccessStructureListStubRoutineType stubRoutine; diff --git a/Source/JavaScriptCore/bytecode/SamplingTool.h b/Source/JavaScriptCore/bytecode/SamplingTool.h index 8e3ed9e..9ca54da 100644 --- a/Source/JavaScriptCore/bytecode/SamplingTool.h +++ b/Source/JavaScriptCore/bytecode/SamplingTool.h @@ -142,7 +142,8 @@ namespace JSC { friend class HostCallRecord; #if ENABLE(OPCODE_SAMPLING) - class CallRecord : public Noncopyable { + class CallRecord { + WTF_MAKE_NONCOPYABLE(CallRecord); public: CallRecord(SamplingTool* samplingTool) : m_samplingTool(samplingTool) @@ -172,7 +173,8 @@ namespace JSC { } }; #else - class CallRecord : public Noncopyable { + class CallRecord { + WTF_MAKE_NONCOPYABLE(CallRecord); public: CallRecord(SamplingTool*) { |