diff options
| author | Konstantin Tokarev <annulen@yandex.ru> | 2016-08-25 19:20:41 +0300 |
|---|---|---|
| committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-02-02 12:30:55 +0000 |
| commit | 6882a04fb36642862b11efe514251d32070c3d65 (patch) | |
| tree | b7959826000b061fd5ccc7512035c7478742f7b0 /Source/JavaScriptCore/debugger/DebuggerCallFrame.h | |
| parent | ab6df191029eeeb0b0f16f127d553265659f739e (diff) | |
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/JavaScriptCore/debugger/DebuggerCallFrame.h')
| -rw-r--r-- | Source/JavaScriptCore/debugger/DebuggerCallFrame.h | 84 |
1 files changed, 55 insertions, 29 deletions
diff --git a/Source/JavaScriptCore/debugger/DebuggerCallFrame.h b/Source/JavaScriptCore/debugger/DebuggerCallFrame.h index 66585a637..aa3cca52b 100644 --- a/Source/JavaScriptCore/debugger/DebuggerCallFrame.h +++ b/Source/JavaScriptCore/debugger/DebuggerCallFrame.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2013, 2014 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * 3. Neither the name of Apple Inc. ("Apple") nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -29,39 +29,65 @@ #ifndef DebuggerCallFrame_h #define DebuggerCallFrame_h -#include "CallFrame.h" +#include "DebuggerPrimitives.h" +#include "Strong.h" +#include <wtf/NakedPtr.h> +#include <wtf/PassRefPtr.h> +#include <wtf/RefCounted.h> +#include <wtf/text/TextPosition.h> namespace JSC { - - class DebuggerCallFrame { - public: - enum Type { ProgramType, FunctionType }; - DebuggerCallFrame(CallFrame* callFrame) - : m_callFrame(callFrame) - { - } +class DebuggerScope; +class Exception; +class ExecState; +typedef ExecState CallFrame; - DebuggerCallFrame(CallFrame* callFrame, JSValue exception) - : m_callFrame(callFrame) - , m_exception(exception) - { - } +class DebuggerCallFrame : public RefCounted<DebuggerCallFrame> { +public: + enum Type { ProgramType, FunctionType }; - CallFrame* callFrame() const { return m_callFrame; } - JSGlobalObject* dynamicGlobalObject() const { return m_callFrame->dynamicGlobalObject(); } - JSScope* scope() const { return m_callFrame->scope(); } - JS_EXPORT_PRIVATE String functionName() const; - JS_EXPORT_PRIVATE String calculatedFunctionName() const; - JS_EXPORT_PRIVATE Type type() const; - JS_EXPORT_PRIVATE JSObject* thisObject() const; - JS_EXPORT_PRIVATE JSValue evaluate(const String&, JSValue& exception) const; - JSValue exception() const { return m_exception; } + static Ref<DebuggerCallFrame> create(CallFrame* callFrame) + { + return adoptRef(*new DebuggerCallFrame(callFrame)); + } - private: - CallFrame* m_callFrame; - JSValue m_exception; - }; + JS_EXPORT_PRIVATE explicit DebuggerCallFrame(CallFrame*); + + JS_EXPORT_PRIVATE RefPtr<DebuggerCallFrame> callerFrame(); + ExecState* exec() const { return m_callFrame; } + JS_EXPORT_PRIVATE SourceID sourceID() const; + + // line and column are in base 0 e.g. the first line is line 0. + int line() const { return m_position.m_line.zeroBasedInt(); } + int column() const { return m_position.m_column.zeroBasedInt(); } + JS_EXPORT_PRIVATE const TextPosition& position() const { return m_position; } + + JS_EXPORT_PRIVATE JSGlobalObject* vmEntryGlobalObject() const; + JS_EXPORT_PRIVATE DebuggerScope* scope(); + JS_EXPORT_PRIVATE String functionName() const; + JS_EXPORT_PRIVATE Type type() const; + JS_EXPORT_PRIVATE JSValue thisValue() const; + JSValue evaluate(const String&, NakedPtr<Exception>&); + + bool isValid() const { return !!m_callFrame; } + JS_EXPORT_PRIVATE void invalidate(); + + // The following are only public for the Debugger's use only. They will be + // made private soon. Other clients should not use these. + + JS_EXPORT_PRIVATE static TextPosition positionForCallFrame(CallFrame*); + JS_EXPORT_PRIVATE static SourceID sourceIDForCallFrame(CallFrame*); + static JSValue thisValueForCallFrame(CallFrame*); + +private: + CallFrame* m_callFrame; + RefPtr<DebuggerCallFrame> m_caller; + TextPosition m_position; + // The DebuggerPausedScope is responsible for calling invalidate() which, + // in turn, will clear this strong ref. + Strong<DebuggerScope> m_scope; +}; } // namespace JSC |
