diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/interpreter/CallFrame.cpp | |
parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/interpreter/CallFrame.cpp')
-rw-r--r-- | Source/JavaScriptCore/interpreter/CallFrame.cpp | 79 |
1 files changed, 4 insertions, 75 deletions
diff --git a/Source/JavaScriptCore/interpreter/CallFrame.cpp b/Source/JavaScriptCore/interpreter/CallFrame.cpp index 259061df4..a226e9848 100644 --- a/Source/JavaScriptCore/interpreter/CallFrame.cpp +++ b/Source/JavaScriptCore/interpreter/CallFrame.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2013, 2014 Apple Inc. All Rights Reserved. + * Copyright (C) 2008, 2013 Apple Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -29,10 +29,8 @@ #include "CallFrameInlines.h" #include "CodeBlock.h" #include "Interpreter.h" -#include "JSLexicalEnvironment.h" -#include "JSCInlines.h" +#include "Operations.h" #include "VMEntryScope.h" -#include <wtf/StringPrintStream.h> namespace JSC { @@ -118,11 +116,11 @@ CodeOrigin CallFrame::codeOrigin() return CodeOrigin(locationAsBytecodeOffset()); } -Register* CallFrame::topOfFrameInternal() +Register* CallFrame::frameExtentInternal() { CodeBlock* codeBlock = this->codeBlock(); ASSERT(codeBlock); - return registers() + codeBlock->stackPointerOffset(); + return registers() + virtualRegisterForLocal(codeBlock->frameRegisterCount()).offset(); } JSGlobalObject* CallFrame::vmEntryGlobalObject() @@ -136,73 +134,4 @@ JSGlobalObject* CallFrame::vmEntryGlobalObject() return vm().entryScope->globalObject(); } -CallFrame* CallFrame::callerFrame(VMEntryFrame*& currVMEntryFrame) -{ - if (callerFrameOrVMEntryFrame() == currVMEntryFrame) { - VMEntryRecord* currVMEntryRecord = vmEntryRecord(currVMEntryFrame); - currVMEntryFrame = currVMEntryRecord->prevTopVMEntryFrame(); - return currVMEntryRecord->prevTopCallFrame(); - } - return static_cast<CallFrame*>(callerFrameOrVMEntryFrame()); -} - -JSLexicalEnvironment* CallFrame::lexicalEnvironment() const -{ - CodeBlock* codeBlock = this->codeBlock(); - RELEASE_ASSERT(codeBlock->needsActivation()); - VirtualRegister activationRegister = codeBlock->activationRegister(); - return registers()[activationRegister.offset()].Register::lexicalEnvironment(); -} - -JSLexicalEnvironment* CallFrame::lexicalEnvironmentOrNullptr() const -{ - CodeBlock* codeBlock = this->codeBlock(); - return codeBlock->needsActivation() ? lexicalEnvironment() : nullptr; -} - -void CallFrame::setActivation(JSLexicalEnvironment* lexicalEnvironment) -{ - CodeBlock* codeBlock = this->codeBlock(); - RELEASE_ASSERT(codeBlock->needsActivation()); - VirtualRegister activationRegister = codeBlock->activationRegister(); - registers()[activationRegister.offset()] = lexicalEnvironment; -} - -void CallFrame::dump(PrintStream& out) -{ - if (CodeBlock* codeBlock = this->codeBlock()) { - out.print(codeBlock->inferredName(), "#", codeBlock->hashAsStringIfPossible(), " [", codeBlock->jitType(), "]"); - - out.print("("); - thisValue().dumpForBacktrace(out); - - for (size_t i = 0; i < argumentCount(); ++i) { - out.print(", "); - JSValue value = argument(i); - value.dumpForBacktrace(out); - } - - out.print(")"); - - return; - } - - out.print(returnPC()); -} - -const char* CallFrame::describeFrame() -{ - const size_t bufferSize = 200; - static char buffer[bufferSize + 1]; - - WTF::StringPrintStream stringStream; - - dump(stringStream); - - strncpy(buffer, stringStream.toCString().data(), bufferSize); - buffer[bufferSize] = '\0'; - - return buffer; -} - } // namespace JSC |