summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/bytecode
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode')
-rw-r--r--Source/JavaScriptCore/bytecode/CodeBlock.cpp4
-rw-r--r--Source/JavaScriptCore/bytecode/CodeBlock.h22
-rw-r--r--Source/JavaScriptCore/bytecode/Instruction.h4
-rw-r--r--Source/JavaScriptCore/bytecode/SamplingTool.h6
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*)
{