Flutter Engine
The Flutter Engine
Public Member Functions | List of all members
dart::DeferredPp Class Reference

#include <deferred_objects.h>

Inheritance diagram for dart::DeferredPp:
dart::DeferredSlot

Public Member Functions

 DeferredPp (intptr_t index, ObjectPtr *slot, DeferredSlot *next)
 
virtual void Materialize (DeoptContext *deopt_context)
 
intptr_t index () const
 
- Public Member Functions inherited from dart::DeferredSlot
 DeferredSlot (ObjectPtr *slot, DeferredSlot *next)
 
virtual ~DeferredSlot ()
 
ObjectPtrslot () const
 
DeferredSlotnext () const
 
virtual void Materialize (DeoptContext *deopt_context)=0
 

Detailed Description

Definition at line 166 of file deferred_objects.h.

Constructor & Destructor Documentation

◆ DeferredPp()

dart::DeferredPp::DeferredPp ( intptr_t  index,
ObjectPtr slot,
DeferredSlot next 
)
inline

Definition at line 168 of file deferred_objects.h.

169 : DeferredSlot(slot, next), index_(index) {}
intptr_t index() const
ObjectPtr * slot() const
DeferredSlot * next() const
DeferredSlot(ObjectPtr *slot, DeferredSlot *next)

Member Function Documentation

◆ index()

intptr_t dart::DeferredPp::index ( ) const
inline

Definition at line 173 of file deferred_objects.h.

173{ return index_; }

◆ Materialize()

void dart::DeferredPp::Materialize ( DeoptContext deopt_context)
virtual

Implements dart::DeferredSlot.

Definition at line 191 of file deferred_objects.cc.

191 {
192 Thread* thread = deopt_context->thread();
193 Zone* zone = deopt_context->zone();
194 Function& function = Function::Handle(zone);
195 function ^= deopt_context->ObjectAt(index_);
196 ASSERT(!function.IsNull());
197 const Error& error =
199 if (!error.IsNull()) {
201 }
202 const Code& code = Code::Handle(zone, function.unoptimized_code());
203 ASSERT(!code.IsNull());
204 ASSERT(code.GetObjectPool() != Object::null());
205 *slot() = code.GetObjectPool();
206
207 if (FLAG_trace_deoptimization_verbose) {
208 OS::PrintErr("materializing pp at 0x%" Px ": 0x%" Px "\n",
209 reinterpret_cast<uword>(slot()),
210 static_cast<uword>(code.GetObjectPool()));
211 }
212}
static ErrorPtr EnsureUnoptimizedCode(Thread *thread, const Function &function)
Definition: compiler.cc:854
static DART_NORETURN void PropagateError(const Error &error)
Definition: exceptions.cc:1003
static void static void PrintErr(const char *format,...) PRINTF_ATTRIBUTE(1
static ObjectPtr null()
Definition: object.h:433
static Object & Handle()
Definition: object.h:407
#define ASSERT(E)
const uint8_t uint32_t uint32_t GError ** error
Dart_NativeFunction function
Definition: fuchsia.cc:51
uintptr_t uword
Definition: globals.h:501
#define Px
Definition: globals.h:410

The documentation for this class was generated from the following files: