diff options
author | Leon Clarke <leonclarke@google.com> | 2010-07-15 12:03:35 +0100 |
---|---|---|
committer | Leon Clarke <leonclarke@google.com> | 2010-07-20 16:57:23 +0100 |
commit | e458d70a0d18538346f41b503114c9ebe6b2ce12 (patch) | |
tree | 86f1637deca2c524432a822e5fcedd4bef221091 /JavaScriptCore/bytecode | |
parent | f43eabc081f7ce6af24b9df4953498a3cd6ca24d (diff) | |
download | external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.zip external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.tar.gz external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.tar.bz2 |
Merge WebKit at r63173 : Initial merge by git.
Change-Id: Ife5af0c7c6261fbbc8ae6bc08c390efa9ef10b44
Diffstat (limited to 'JavaScriptCore/bytecode')
-rw-r--r-- | JavaScriptCore/bytecode/CodeBlock.cpp | 23 | ||||
-rw-r--r-- | JavaScriptCore/bytecode/CodeBlock.h | 26 | ||||
-rw-r--r-- | JavaScriptCore/bytecode/Instruction.h | 2 | ||||
-rw-r--r-- | JavaScriptCore/bytecode/Opcode.h | 10 |
4 files changed, 37 insertions, 24 deletions
diff --git a/JavaScriptCore/bytecode/CodeBlock.cpp b/JavaScriptCore/bytecode/CodeBlock.cpp index 30d101c..a664719 100644 --- a/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca> * * Redistribution and use in source and binary forms, with or without @@ -1362,7 +1362,7 @@ CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, PassR , m_source(sourceProvider) , m_sourceOffset(sourceOffset) , m_symbolTable(symTab) - , m_exceptionInfo(new ExceptionInfo) + , m_exceptionInfo(adoptPtr(new ExceptionInfo)) { ASSERT(m_source); @@ -1373,13 +1373,14 @@ CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, PassR CodeBlock::~CodeBlock() { -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) for (size_t size = m_globalResolveInstructions.size(), i = 0; i < size; ++i) derefStructures(&m_instructions[m_globalResolveInstructions[i]]); for (size_t size = m_propertyAccessInstructions.size(), i = 0; i < size; ++i) derefStructures(&m_instructions[m_propertyAccessInstructions[i]]); -#else +#endif +#if ENABLE(JIT) for (size_t size = m_globalResolveInfos.size(), i = 0; i < size; ++i) { if (m_globalResolveInfos[i].structure) m_globalResolveInfos[i].structure->deref(); @@ -1407,7 +1408,7 @@ CodeBlock::~CodeBlock() unlinkCallers(); #endif -#endif // !ENABLE(JIT) +#endif // ENABLE(JIT) #if DUMP_CODE_BLOCK_STATISTICS liveCodeBlockSet.remove(this); @@ -1538,7 +1539,7 @@ bool CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame) scopeChain = scopeChain->next; } - m_exceptionInfo.set(m_ownerExecutable->reparseExceptionInfo(m_globalData, scopeChain, this)); + m_exceptionInfo = m_ownerExecutable->reparseExceptionInfo(m_globalData, scopeChain, this); return m_exceptionInfo; } @@ -1669,7 +1670,7 @@ bool CodeBlock::functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& } #endif -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) bool CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset) { if (m_globalResolveInstructions.isEmpty()) @@ -1689,7 +1690,8 @@ bool CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOff return false; return true; } -#else +#endif +#if ENABLE(JIT) bool CodeBlock::hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset) { if (m_globalResolveInfos.isEmpty()) @@ -1715,10 +1717,11 @@ void CodeBlock::shrinkToFit() { m_instructions.shrinkToFit(); -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) m_propertyAccessInstructions.shrinkToFit(); m_globalResolveInstructions.shrinkToFit(); -#else +#endif +#if ENABLE(JIT) m_structureStubInfos.shrinkToFit(); m_globalResolveInfos.shrinkToFit(); m_callLinkInfos.shrinkToFit(); diff --git a/JavaScriptCore/bytecode/CodeBlock.h b/JavaScriptCore/bytecode/CodeBlock.h index 590fe2e..2f22dd0 100644 --- a/JavaScriptCore/bytecode/CodeBlock.h +++ b/JavaScriptCore/bytecode/CodeBlock.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca> * * Redistribution and use in source and binary forms, with or without @@ -39,6 +39,7 @@ #include "RegExp.h" #include "UString.h" #include <wtf/FastAllocBase.h> +#include <wtf/PassOwnPtr.h> #include <wtf/RefPtr.h> #include <wtf/Vector.h> @@ -357,7 +358,8 @@ namespace JSC { } bool functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex); -#else +#endif +#if ENABLE(INTERPRETER) unsigned bytecodeOffset(CallFrame*, Instruction* returnAddress) { return static_cast<Instruction*>(returnAddress) - instructions().begin(); @@ -415,11 +417,12 @@ namespace JSC { unsigned jumpTarget(int index) const { return m_jumpTargets[index]; } unsigned lastJumpTarget() const { return m_jumpTargets.last(); } -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) void addPropertyAccessInstruction(unsigned propertyAccessInstruction) { m_propertyAccessInstructions.append(propertyAccessInstruction); } void addGlobalResolveInstruction(unsigned globalResolveInstruction) { m_globalResolveInstructions.append(globalResolveInstruction); } bool hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset); -#else +#endif +#if ENABLE(JIT) size_t numberOfStructureStubInfos() const { return m_structureStubInfos.size(); } void addStructureStubInfo(const StructureStubInfo& stubInfo) { m_structureStubInfos.append(stubInfo); } StructureStubInfo& structureStubInfo(int index) { return m_structureStubInfos[index]; } @@ -446,7 +449,7 @@ namespace JSC { bool hasExceptionInfo() const { return m_exceptionInfo; } void clearExceptionInfo() { m_exceptionInfo.clear(); } - ExceptionInfo* extractExceptionInfo() { ASSERT(m_exceptionInfo); return m_exceptionInfo.release(); } + PassOwnPtr<ExceptionInfo> extractExceptionInfo(); void addExpressionInfo(const ExpressionRangeInfo& expressionInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_expressionInfo.append(expressionInfo); } void addGetByIdExceptionInfo(const GetByIdExceptionInfo& info) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_getByIdExceptionInfo.append(info); } @@ -527,7 +530,7 @@ namespace JSC { void createRareDataIfNecessary() { if (!m_rareData) - m_rareData.set(new RareData); + m_rareData = adoptPtr(new RareData); } ScriptExecutable* m_ownerExecutable; @@ -550,10 +553,11 @@ namespace JSC { RefPtr<SourceProvider> m_source; unsigned m_sourceOffset; -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) Vector<unsigned> m_propertyAccessInstructions; Vector<unsigned> m_globalResolveInstructions; -#else +#endif +#if ENABLE(JIT) Vector<StructureStubInfo> m_structureStubInfos; Vector<GlobalResolveInfo> m_globalResolveInfos; Vector<CallLinkInfo> m_callLinkInfos; @@ -665,6 +669,12 @@ namespace JSC { } }; + inline PassOwnPtr<ExceptionInfo> CodeBlock::extractExceptionInfo() + { + ASSERT(m_exceptionInfo); + return m_exceptionInfo.release(); + } + inline Register& ExecState::r(int index) { CodeBlock* codeBlock = this->codeBlock(); diff --git a/JavaScriptCore/bytecode/Instruction.h b/JavaScriptCore/bytecode/Instruction.h index ab6659f..c6468a5 100644 --- a/JavaScriptCore/bytecode/Instruction.h +++ b/JavaScriptCore/bytecode/Instruction.h @@ -125,7 +125,7 @@ namespace JSC { struct Instruction { Instruction(Opcode opcode) { -#if !HAVE(COMPUTED_GOTO) +#if !ENABLE(COMPUTED_GOTO_INTERPRETER) // We have to initialize one of the pointer members to ensure that // the entire struct is initialized, when opcode is not a pointer. u.jsCell = 0; diff --git a/JavaScriptCore/bytecode/Opcode.h b/JavaScriptCore/bytecode/Opcode.h index f845a34..ca5feeb 100644 --- a/JavaScriptCore/bytecode/Opcode.h +++ b/JavaScriptCore/bytecode/Opcode.h @@ -120,10 +120,10 @@ namespace JSC { macro(op_get_by_id_generic, 8) \ macro(op_get_array_length, 8) \ macro(op_get_string_length, 8) \ - macro(op_put_by_id, 8) \ - macro(op_put_by_id_transition, 8) \ - macro(op_put_by_id_replace, 8) \ - macro(op_put_by_id_generic, 8) \ + macro(op_put_by_id, 9) \ + macro(op_put_by_id_transition, 9) \ + macro(op_put_by_id_replace, 9) \ + macro(op_put_by_id_generic, 9) \ macro(op_del_by_id, 4) \ macro(op_get_by_val, 4) \ macro(op_get_by_pname, 7) \ @@ -210,7 +210,7 @@ namespace JSC { FOR_EACH_OPCODE_ID(VERIFY_OPCODE_ID); #undef VERIFY_OPCODE_ID -#if HAVE(COMPUTED_GOTO) +#if ENABLE(COMPUTED_GOTO_INTERPRETER) #if COMPILER(RVCT) || COMPILER(INTEL) typedef void* Opcode; #else |