v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
deoptimized-frame-info.h
Go to the documentation of this file.
1// Copyright 2021 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_DEOPTIMIZER_DEOPTIMIZED_FRAME_INFO_H_
6#define V8_DEOPTIMIZER_DEOPTIMIZED_FRAME_INFO_H_
7
8#include <vector>
9
11
12namespace v8 {
13namespace internal {
14
15// Class used to represent an unoptimized frame when the debugger
16// needs to inspect a frame that is part of an optimized frame. The
17// internally used FrameDescription objects are not GC safe so for use
18// by the debugger frame information is copied to an object of this type.
19// Represents parameters in unadapted form so their number might mismatch
20// formal parameter count.
22 public:
24 TranslatedState::iterator frame_it, Isolate* isolate);
25
26 // Get the frame context.
28
29 // Get an incoming argument.
31 DCHECK(0 <= index && index < parameters_count());
32 return parameters_[index];
33 }
34
35 // Get an expression from the expression stack.
37 DCHECK(0 <= index && index < expression_count());
39 }
40
41 private:
42 // Return the number of incoming arguments.
43 int parameters_count() { return static_cast<int>(parameters_.size()); }
44
45 // Return the height of the expression stack.
46 int expression_count() { return static_cast<int>(expression_stack_.size()); }
47
48 // Set an incoming argument.
49 void SetParameter(int index, Handle<Object> obj) {
50 DCHECK(0 <= index && index < parameters_count());
51 parameters_[index] = obj;
52 }
53
54 // Set an expression on the expression stack.
55 void SetExpression(int index, Handle<Object> obj) {
56 DCHECK(0 <= index && index < expression_count());
58 }
59
61 std::vector<Handle<Object>> parameters_;
62 std::vector<Handle<Object>> expression_stack_;
63
64 friend class Deoptimizer;
65};
66
67} // namespace internal
68} // namespace v8
69
70#endif // V8_DEOPTIMIZER_DEOPTIMIZED_FRAME_INFO_H_
std::vector< Handle< Object > > parameters_
void SetParameter(int index, Handle< Object > obj)
Handle< Object > GetExpression(int index)
void SetExpression(int index, Handle< Object > obj)
DeoptimizedFrameInfo(TranslatedState *state, TranslatedState::iterator frame_it, Isolate *isolate)
std::vector< Handle< Object > > expression_stack_
Handle< Object > GetParameter(int index)
std::vector< TranslatedFrame >::iterator iterator
#define DCHECK(condition)
Definition logging.h:482