diff options
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/bytecode')
4 files changed, 15 insertions, 7 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp index 5dae952..0cb3813 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1319,8 +1319,12 @@ CodeBlock::~CodeBlock() } for (size_t size = m_methodCallLinkInfos.size(), i = 0; i < size; ++i) { - if (Structure* structure = m_methodCallLinkInfos[i].cachedStructure) + if (Structure* structure = m_methodCallLinkInfos[i].cachedStructure) { structure->deref(); + // Both members must be filled at the same time + ASSERT(m_methodCallLinkInfos[i].cachedPrototypeStructure); + m_methodCallLinkInfos[i].cachedPrototypeStructure->deref(); + } } unlinkCallers(); diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h index 64b6c98..e9f2697 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h @@ -105,6 +105,7 @@ namespace JSC { CodeLocationNearCall callReturnLocation; CodeLocationDataLabelPtr hotPathBegin; CodeLocationNearCall hotPathOther; + CodeBlock* ownerCodeBlock; CodeBlock* callee; unsigned position; @@ -115,12 +116,14 @@ namespace JSC { struct MethodCallLinkInfo { MethodCallLinkInfo() : cachedStructure(0) + , cachedPrototypeStructure(0) { } CodeLocationCall callReturnLocation; CodeLocationDataLabelPtr structureLabel; Structure* cachedStructure; + Structure* cachedPrototypeStructure; }; struct FunctionRegisterInfo { @@ -221,7 +224,7 @@ namespace JSC { } #endif - class CodeBlock : public WTF::FastAllocBase { + class CodeBlock : public FastAllocBase { friend class JIT; public: CodeBlock(ScopeNode* ownerNode); @@ -317,6 +320,7 @@ namespace JSC { #endif #if ENABLE(JIT) + JITCode& getJITCode() { return ownerNode()->generatedJITCode(); } void setJITCode(JITCode); ExecutablePool* executablePool() { return ownerNode()->getExecutablePool(); } #endif @@ -493,7 +497,7 @@ namespace JSC { SymbolTable m_symbolTable; - struct ExceptionInfo { + struct ExceptionInfo : FastAllocBase { Vector<ExpressionRangeInfo> m_expressionInfo; Vector<LineInfo> m_lineInfo; Vector<GetByIdExceptionInfo> m_getByIdExceptionInfo; @@ -504,7 +508,7 @@ namespace JSC { }; OwnPtr<ExceptionInfo> m_exceptionInfo; - struct RareData { + struct RareData : FastAllocBase { Vector<HandlerInfo> m_exceptionHandlers; // Rare Constants diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h index 27b016e..2d1ca98 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h @@ -181,7 +181,7 @@ namespace JSC { #define OPCODE_ID_LENGTHS(id, length) const int id##_length = length; FOR_EACH_OPCODE_ID(OPCODE_ID_LENGTHS); - #undef OPCODE_ID_SIZES + #undef OPCODE_ID_LENGTHS #define OPCODE_LENGTH(opcode) opcode##_length diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h index 7d7dc9c..fa95603 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h @@ -140,7 +140,7 @@ namespace JSC { friend class HostCallRecord; #if ENABLE(OPCODE_SAMPLING) - class CallRecord : Noncopyable { + class CallRecord : public Noncopyable { public: CallRecord(SamplingTool* samplingTool) : m_samplingTool(samplingTool) @@ -170,7 +170,7 @@ namespace JSC { } }; #else - class CallRecord : Noncopyable { + class CallRecord : public Noncopyable { public: CallRecord(SamplingTool*) { |