Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Friends | List of all members
dart::NativeArguments Class Reference

#include <native_arguments.h>

Public Member Functions

Threadthread () const
 
int ArgCount () const
 
ObjectPtr ArgAt (int index) const
 
void SetArgAt (int index, const Object &value) const
 
int NativeArgCount () const
 
ObjectPtr NativeArg0 () const
 
ObjectPtr NativeArgAt (int index) const
 
TypeArgumentsPtr NativeTypeArgs () const
 
int NativeTypeArgCount () const
 
AbstractTypePtr NativeTypeArgAt (int index) const
 
void SetReturn (const Object &value) const
 
ObjectPtr ReturnValue () const
 

Static Public Member Functions

static intptr_t thread_offset ()
 
static intptr_t argc_tag_offset ()
 
static intptr_t argv_offset ()
 
static intptr_t retval_offset ()
 
static intptr_t ParameterCountForResolution (const Function &function)
 
static int ComputeArgcTag (const Function &function)
 

Friends

class Api
 
class NativeEntry
 
class Simulator
 

Detailed Description

Definition at line 76 of file native_arguments.h.

Member Function Documentation

◆ ArgAt()

ObjectPtr dart::NativeArguments::ArgAt ( int  index) const
inline

Definition at line 83 of file native_arguments.h.

83 {
84 ASSERT((index >= 0) && (index < ArgCount()));
85 ObjectPtr* arg_ptr = &(argv_[-index]);
86 // Tell MemorySanitizer the ObjectPtr was initialized (by generated code).
87 MSAN_UNPOISON(arg_ptr, kWordSize);
88 return *arg_ptr;
89 }
#define ASSERT(E)
#define MSAN_UNPOISON(ptr, len)
constexpr intptr_t kWordSize
Definition globals.h:509

◆ argc_tag_offset()

static intptr_t dart::NativeArguments::argc_tag_offset ( )
inlinestatic

Definition at line 159 of file native_arguments.h.

159 {
160 return OFFSET_OF(NativeArguments, argc_tag_);
161 }
#define OFFSET_OF(type, field)
Definition globals.h:138

◆ ArgCount()

int dart::NativeArguments::ArgCount ( ) const
inline

Definition at line 81 of file native_arguments.h.

81{ return ArgcBits::decode(argc_tag_); }
static constexpr int32_t decode(intptr_t value)
Definition bitfield.h:173

◆ argv_offset()

static intptr_t dart::NativeArguments::argv_offset ( )
inlinestatic

Definition at line 162 of file native_arguments.h.

162{ return OFFSET_OF(NativeArguments, argv_); }

◆ ComputeArgcTag()

static int dart::NativeArguments::ComputeArgcTag ( const Function function)
inlinestatic

Definition at line 174 of file native_arguments.h.

174 {
175 ASSERT(function.is_old_native());
176 ASSERT(!function.IsGenerativeConstructor()); // Not supported.
177 ASSERT(!function.IsClosureFunction()); // Not supported.
178 int argc = function.NumParameters();
179 int function_bits = 0;
180 if (function.IsGeneric()) {
181 function_bits |= kGenericFunctionBit;
182 argc++;
183 }
184 int tag = ArgcBits::encode(argc);
185 tag = FunctionBits::update(function_bits, tag);
186 return tag;
187 }
static constexpr intptr_t update(int value, intptr_t original)
Definition bitfield.h:190
static constexpr intptr_t encode(int32_t value)
Definition bitfield.h:167
Dart_NativeFunction function
Definition fuchsia.cc:51

◆ NativeArg0()

ObjectPtr dart::NativeArguments::NativeArg0 ( ) const
inline

Definition at line 103 of file native_arguments.h.

103 {
104 int function_bits = FunctionBits::decode(argc_tag_);
105 return ArgAt(NumHiddenArgs(function_bits));
106 }
ObjectPtr ArgAt(int index) const

◆ NativeArgAt()

ObjectPtr dart::NativeArguments::NativeArgAt ( int  index) const
inline

Definition at line 108 of file native_arguments.h.

108 {
109 ASSERT((index >= 0) && (index < NativeArgCount()));
110 if (index == 0) {
111 return NativeArg0();
112 }
113 int function_bits = FunctionBits::decode(argc_tag_);
114 const int actual_index = index + NumHiddenArgs(function_bits);
115 return ArgAt(actual_index);
116 }
ObjectPtr NativeArg0() const

◆ NativeArgCount()

int dart::NativeArguments::NativeArgCount ( ) const
inline

Definition at line 98 of file native_arguments.h.

98 {
99 int function_bits = FunctionBits::decode(argc_tag_);
100 return ArgCount() - NumHiddenArgs(function_bits);
101 }

◆ NativeTypeArgAt()

AbstractTypePtr dart::NativeArguments::NativeTypeArgAt ( int  index) const
inline

Definition at line 135 of file native_arguments.h.

135 {
136 ASSERT((index >= 0) && (index < NativeTypeArgCount()));
137 TypeArguments& type_args = TypeArguments::Handle(NativeTypeArgs());
138 if (type_args.IsNull()) {
139 // null vector represents infinite list of dynamics
140 return Type::dynamic_type().ptr();
141 }
142 return type_args.TypeAt(index);
143 }
TypeArgumentsPtr NativeTypeArgs() const
static Object & Handle()
Definition object.h:407

◆ NativeTypeArgCount()

int dart::NativeArguments::NativeTypeArgCount ( ) const
inline

Definition at line 123 of file native_arguments.h.

123 {
124 if (ToGenericFunction()) {
125 TypeArguments& type_args = TypeArguments::Handle(NativeTypeArgs());
126 if (type_args.IsNull()) {
127 // null vector represents infinite list of dynamics
128 return INT_MAX;
129 }
130 return type_args.Length();
131 }
132 return 0;
133 }

◆ NativeTypeArgs()

TypeArgumentsPtr dart::NativeArguments::NativeTypeArgs ( ) const
inline

Definition at line 118 of file native_arguments.h.

118 {
119 ASSERT(ToGenericFunction());
120 return TypeArguments::RawCast(ArgAt(0));
121 }
static ObjectPtr RawCast(ObjectPtr obj)
Definition object.h:325

◆ ParameterCountForResolution()

static intptr_t dart::NativeArguments::ParameterCountForResolution ( const Function function)
inlinestatic

Definition at line 167 of file native_arguments.h.

167 {
168 ASSERT(function.is_old_native());
169 ASSERT(!function.IsGenerativeConstructor()); // Not supported.
170 ASSERT(!function.IsClosureFunction()); // Not supported.
171 return function.NumParameters();
172 }

◆ ReturnValue()

ObjectPtr dart::NativeArguments::ReturnValue ( ) const
inline

Definition at line 150 of file native_arguments.h.

150 {
151 // Tell MemorySanitizer the retval_ was initialized (by generated code).
152 MSAN_UNPOISON(retval_, kWordSize);
153 return *retval_;
154 }

◆ retval_offset()

static intptr_t dart::NativeArguments::retval_offset ( )
inlinestatic

Definition at line 163 of file native_arguments.h.

163 {
164 return OFFSET_OF(NativeArguments, retval_);
165 }

◆ SetArgAt()

void dart::NativeArguments::SetArgAt ( int  index,
const Object value 
) const
inline

Definition at line 91 of file native_arguments.h.

91 {
93 ASSERT((index >= 0) && (index < ArgCount()));
94 argv_[-index] = value.ptr();
95 }
ExecutionState execution_state() const
Definition thread.h:1027
uint8_t value

◆ SetReturn()

void dart::NativeArguments::SetReturn ( const Object value) const
inline

Definition at line 145 of file native_arguments.h.

145 {
147 *retval_ = value.ptr();
148 }

◆ thread()

Thread * dart::NativeArguments::thread ( ) const
inline

Definition at line 78 of file native_arguments.h.

78{ return thread_; }

◆ thread_offset()

static intptr_t dart::NativeArguments::thread_offset ( )
inlinestatic

Definition at line 156 of file native_arguments.h.

156 {
157 return OFFSET_OF(NativeArguments, thread_);
158 }

Friends And Related Symbol Documentation

◆ Api

friend class Api
friend

Definition at line 202 of file native_arguments.h.

◆ NativeEntry

friend class NativeEntry
friend

Definition at line 203 of file native_arguments.h.

◆ Simulator

friend class Simulator
friend

Definition at line 204 of file native_arguments.h.


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