Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
dart::DeoptPcMarkerInstr Class Reference
Inheritance diagram for dart::DeoptPcMarkerInstr:
dart::DeoptInstr dart::ZoneAllocated

Public Member Functions

 DeoptPcMarkerInstr (intptr_t object_table_index)
 
virtual intptr_t source_index () const
 
virtual DeoptInstr::Kind kind () const
 
virtual const char * ArgumentsToCString () const
 
void Execute (DeoptContext *deopt_context, intptr_t *dest_addr)
 
- Public Member Functions inherited from dart::DeoptInstr
 DeoptInstr ()
 
virtual ~DeoptInstr ()
 
virtual const char * ToCString () const
 
virtual CatchEntryMove ToCatchEntryMove (DeoptContext *deopt_context, intptr_t dest_slot)
 
bool Equals (const DeoptInstr &other) const
 
- Public Member Functions inherited from dart::ZoneAllocated
 ZoneAllocated ()
 
void * operator new (size_t size)
 
void * operator new (size_t size, Zone *zone)
 
void operator delete (void *pointer)
 

Additional Inherited Members

- Public Types inherited from dart::DeoptInstr
enum  Kind {
  kRetAddress , kConstant , kWord , kFloat ,
  kDouble , kFloat32x4 , kFloat64x2 , kInt32x4 ,
  kMintPair , kMint , kInt32 , kUint32 ,
  kPcMarker , kPp , kCallerFp , kCallerPp ,
  kCallerPc , kMaterializedObjectRef , kMaterializeObject
}
 
- Static Public Member Functions inherited from dart::DeoptInstr
static DeoptInstrCreate (intptr_t kind_as_int, intptr_t source_index)
 
static uword GetRetAddress (DeoptInstr *instr, const ObjectPool &object_pool, Code *code)
 
static intptr_t GetFieldCount (DeoptInstr *instr)
 

Detailed Description

Definition at line 701 of file deopt_instructions.cc.

Constructor & Destructor Documentation

◆ DeoptPcMarkerInstr()

dart::DeoptPcMarkerInstr::DeoptPcMarkerInstr ( intptr_t  object_table_index)
inlineexplicit

Definition at line 703 of file deopt_instructions.cc.

704 : object_table_index_(object_table_index) {
705 ASSERT(object_table_index >= 0);
706 }
#define ASSERT(E)

Member Function Documentation

◆ ArgumentsToCString()

virtual const char * dart::DeoptPcMarkerInstr::ArgumentsToCString ( ) const
inlinevirtual

Reimplemented from dart::DeoptInstr.

Definition at line 711 of file deopt_instructions.cc.

711 {
712 return Thread::Current()->zone()->PrintToString("%" Pd "",
713 object_table_index_);
714 }
Zone * zone() const
static Thread * Current()
Definition thread.h:361
char * PrintToString(const char *format,...) PRINTF_ATTRIBUTE(2
Definition zone.cc:313
#define Pd
Definition globals.h:408

◆ Execute()

void dart::DeoptPcMarkerInstr::Execute ( DeoptContext deopt_context,
intptr_t *  dest_addr 
)
inlinevirtual

Implements dart::DeoptInstr.

Definition at line 716 of file deopt_instructions.cc.

716 {
717 Function& function = Function::Handle(deopt_context->zone());
718 function ^= deopt_context->ObjectAt(object_table_index_);
719 if (function.IsNull()) {
720 *reinterpret_cast<ObjectPtr*>(dest_addr) =
721 deopt_context->is_lazy_deopt()
722 ? StubCode::DeoptimizeLazyFromReturn().ptr()
723 : StubCode::Deoptimize().ptr();
724 return;
725 }
726
727 // We don't always have the Code object for the frame's corresponding
728 // unoptimized code as it may have been collected. Use a stub as the pc
729 // marker until we can recreate that Code object during deferred
730 // materialization to maintain the invariant that Dart frames always have
731 // a pc marker.
732 *reinterpret_cast<ObjectPtr*>(dest_addr) =
733 StubCode::FrameAwaitingMaterialization().ptr();
734 deopt_context->DeferPcMarkerMaterialization(object_table_index_, dest_addr);
735 }
static Object & Handle()
Definition object.h:407
Dart_NativeFunction function
Definition fuchsia.cc:51

◆ kind()

virtual DeoptInstr::Kind dart::DeoptPcMarkerInstr::kind ( ) const
inlinevirtual

Implements dart::DeoptInstr.

Definition at line 709 of file deopt_instructions.cc.

709{ return kPcMarker; }

◆ source_index()

virtual intptr_t dart::DeoptPcMarkerInstr::source_index ( ) const
inlinevirtual

Implements dart::DeoptInstr.

Definition at line 708 of file deopt_instructions.cc.

708{ return object_table_index_; }

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