Line data Source code
1 : // Copyright 2017 the V8 project authors. All rights reserved.
2 : // Use of this source code is governed by a BSD-style license that can be
3 : // found in the LICENSE file.
4 :
5 : #ifndef V8_DEBUG_DEBUG_SCOPE_ITERATOR_H_
6 : #define V8_DEBUG_DEBUG_SCOPE_ITERATOR_H_
7 :
8 : #include "src/debug/debug-frames.h"
9 : #include "src/debug/debug-interface.h"
10 : #include "src/debug/debug-scopes.h"
11 : #include "src/frames.h"
12 :
13 : namespace v8 {
14 : namespace internal {
15 :
16 294094 : class DebugScopeIterator final : public debug::ScopeIterator {
17 : public:
18 : DebugScopeIterator(Isolate* isolate, FrameInspector* frame_inspector);
19 : DebugScopeIterator(Isolate* isolate, Handle<JSFunction> function);
20 : DebugScopeIterator(Isolate* isolate, Handle<JSGeneratorObject> generator);
21 :
22 : bool Done() override;
23 : void Advance() override;
24 : ScopeType GetType() override;
25 : v8::Local<v8::Object> GetObject() override;
26 : v8::Local<v8::Value> GetFunctionDebugName() override;
27 : int GetScriptId() override;
28 : bool HasLocationInfo() override;
29 : debug::Location GetStartLocation() override;
30 : debug::Location GetEndLocation() override;
31 :
32 : bool SetVariableValue(v8::Local<v8::String> name,
33 : v8::Local<v8::Value> value) override;
34 :
35 : private:
36 : bool ShouldIgnore();
37 :
38 : v8::internal::ScopeIterator iterator_;
39 : };
40 :
41 928 : class DebugWasmScopeIterator final : public debug::ScopeIterator {
42 : public:
43 : DebugWasmScopeIterator(Isolate* isolate, StandardFrame* frame,
44 : int inlined_frame_index);
45 :
46 : bool Done() override;
47 : void Advance() override;
48 : ScopeType GetType() override;
49 : v8::Local<v8::Object> GetObject() override;
50 : v8::Local<v8::Value> GetFunctionDebugName() override;
51 : int GetScriptId() override;
52 : bool HasLocationInfo() override;
53 : debug::Location GetStartLocation() override;
54 : debug::Location GetEndLocation() override;
55 :
56 : bool SetVariableValue(v8::Local<v8::String> name,
57 : v8::Local<v8::Value> value) override;
58 : private:
59 : Isolate* isolate_;
60 : StandardFrame* frame_;
61 : int inlined_frame_index_;
62 : ScopeType type_;
63 : };
64 : } // namespace internal
65 : } // namespace v8
66 :
67 : #endif // V8_DEBUG_DEBUG_SCOPE_ITERATOR_H_
|