V8 Project
v8::anonymous_namespace{api.cc} Namespace Reference

Functions

static i::ElementsKind GetElementsKindFromExternalArrayType (ExternalArrayType array_type)
 
void PrepareExternalArrayElements (i::Handle< i::JSObject > object, void *data, ExternalArrayType array_type, int length)
 
int StringLength (const char *string)
 
int StringLength (const uint8_t *string)
 
int StringLength (const uint16_t *string)
 
MUST_USE_RESULT i::MaybeHandle< i::StringNewString (i::Factory *factory, String::NewStringType type, i::Vector< const char > string)
 
MUST_USE_RESULT i::MaybeHandle< i::StringNewString (i::Factory *factory, String::NewStringType type, i::Vector< const uint8_t > string)
 
MUST_USE_RESULT i::MaybeHandle< i::StringNewString (i::Factory *factory, String::NewStringType type, i::Vector< const uint16_t > string)
 
template<typename Char >
Local< StringNewString (Isolate *v8_isolate, const char *location, const char *env, const Char *data, String::NewStringType type, int length)
 

Function Documentation

◆ GetElementsKindFromExternalArrayType()

static i::ElementsKind v8::anonymous_namespace{api.cc}::GetElementsKindFromExternalArrayType ( ExternalArrayType  array_type)
static

Definition at line 3816 of file api.cc.

3817  {
3818  switch (array_type) {
3819 #define ARRAY_TYPE_TO_ELEMENTS_KIND(Type, type, TYPE, ctype, size) \
3820  case kExternal##Type##Array: \
3821  return i::EXTERNAL_##TYPE##_ELEMENTS;
3822 
3824 #undef ARRAY_TYPE_TO_ELEMENTS_KIND
3825  }
3826  UNREACHABLE();
3827  return i::DICTIONARY_ELEMENTS;
3828 }
#define ARRAY_TYPE_TO_ELEMENTS_KIND(Type, type, TYPE, ctype, size)
#define UNREACHABLE()
Definition: logging.h:30
#define TYPED_ARRAYS(V)
Definition: objects.h:4433

References ARRAY_TYPE_TO_ELEMENTS_KIND, v8::internal::DICTIONARY_ELEMENTS, TYPED_ARRAYS, and UNREACHABLE.

Referenced by PrepareExternalArrayElements().

+ Here is the caller graph for this function:

◆ NewString() [1/4]

MUST_USE_RESULT i::MaybeHandle<i::String> v8::anonymous_namespace{api.cc}::NewString ( i::Factory *  factory,
String::NewStringType  type,
i::Vector< const char >  string 
)
inline

Definition at line 5387 of file api.cc.

5389  {
5390  if (type == String::kInternalizedString) {
5391  return factory->InternalizeUtf8String(string);
5392  }
5393  return factory->NewStringFromUtf8(string);
5394 }

References v8::String::kInternalizedString.

◆ NewString() [2/4]

MUST_USE_RESULT i::MaybeHandle<i::String> v8::anonymous_namespace{api.cc}::NewString ( i::Factory *  factory,
String::NewStringType  type,
i::Vector< const uint16_t >  string 
)
inline

Definition at line 5409 of file api.cc.

5411  {
5412  if (type == String::kInternalizedString) {
5413  return factory->InternalizeTwoByteString(string);
5414  }
5415  return factory->NewStringFromTwoByte(string);
5416 }

References v8::String::kInternalizedString.

◆ NewString() [3/4]

MUST_USE_RESULT i::MaybeHandle<i::String> v8::anonymous_namespace{api.cc}::NewString ( i::Factory *  factory,
String::NewStringType  type,
i::Vector< const uint8_t >  string 
)
inline

Definition at line 5398 of file api.cc.

5400  {
5401  if (type == String::kInternalizedString) {
5402  return factory->InternalizeOneByteString(string);
5403  }
5404  return factory->NewStringFromOneByte(string);
5405 }

References v8::String::kInternalizedString.

◆ NewString() [4/4]

template<typename Char >
Local<String> v8::anonymous_namespace{api.cc}::NewString ( Isolate v8_isolate,
const char *  location,
const char *  env,
const Char *  data,
String::NewStringType  type,
int  length 
)
inline

Definition at line 5420 of file api.cc.

5425  {
5426  i::Isolate* isolate = reinterpret_cast<internal::Isolate*>(v8_isolate);
5427  LOG_API(isolate, env);
5428  if (length == 0 && type != String::kUndetectableString) {
5429  return String::Empty(v8_isolate);
5430  }
5431  ENTER_V8(isolate);
5432  if (length == -1) length = StringLength(data);
5433  // We do not expect this to fail. Change this if it does.
5435  isolate->factory(),
5436  type,
5437  i::Vector<const Char>(data, length)).ToHandleChecked();
5438  if (type == String::kUndetectableString) {
5439  result->MarkAsUndetectable();
5440  }
5441  return Utils::ToLocal(result);
5442 }
#define LOG_API(isolate, expr)
Definition: api.cc:52
#define ENTER_V8(isolate)
Definition: api.cc:54
Factory * factory()
Definition: isolate.h:982
Local< String > NewString(Isolate *v8_isolate, const char *location, const char *env, const Char *data, String::NewStringType type, int length)
Definition: api.cc:5420
int StringLength(const uint16_t *string)
Definition: api.cc:5378

References v8::String::Empty(), ENTER_V8, v8::internal::Isolate::factory(), v8::String::kUndetectableString, LOG_API, StringLength(), and v8::Utils::ToLocal().

Referenced by v8::String::NewFromOneByte(), v8::String::NewFromTwoByte(), and v8::String::NewFromUtf8().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrepareExternalArrayElements()

void v8::anonymous_namespace{api.cc}::PrepareExternalArrayElements ( i::Handle< i::JSObject object,
void *  data,
ExternalArrayType  array_type,
int  length 
)

Definition at line 3831 of file api.cc.

3834  {
3835  i::Isolate* isolate = object->GetIsolate();
3837  isolate->factory()->NewExternalArray(length, array_type, data);
3838 
3839  i::Handle<i::Map> external_array_map =
3841  object,
3843 
3844  i::JSObject::SetMapAndElements(object, external_array_map, array);
3845 }
static void SetMapAndElements(Handle< JSObject > object, Handle< Map > map, Handle< FixedArrayBase > elements)
Definition: objects-inl.h:1814
static Handle< Map > GetElementsTransitionMap(Handle< JSObject > object, ElementsKind to_kind)
Definition: objects.cc:3385
static i::ElementsKind GetElementsKindFromExternalArrayType(ExternalArrayType array_type)
Definition: api.cc:3816

References v8::internal::Isolate::factory(), GetElementsKindFromExternalArrayType(), v8::internal::JSObject::GetElementsTransitionMap(), and v8::internal::JSObject::SetMapAndElements().

Referenced by v8::Object::SetIndexedPropertiesToExternalArrayData(), and v8::Object::SetIndexedPropertiesToPixelData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StringLength() [1/3]

int v8::anonymous_namespace{api.cc}::StringLength ( const char *  string)
inline

Definition at line 5368 of file api.cc.

5368  {
5369  return i::StrLength(string);
5370 }
int StrLength(const char *string)
Definition: vector.h:147

References v8::internal::StrLength().

+ Here is the call graph for this function:

◆ StringLength() [2/3]

int v8::anonymous_namespace{api.cc}::StringLength ( const uint16_t *  string)
inline

Definition at line 5378 of file api.cc.

5378  {
5379  int length = 0;
5380  while (string[length] != '\0')
5381  length++;
5382  return length;
5383 }

Referenced by NewString().

+ Here is the caller graph for this function:

◆ StringLength() [3/3]

int v8::anonymous_namespace{api.cc}::StringLength ( const uint8_t *  string)
inline

Definition at line 5373 of file api.cc.

5373  {
5374  return i::StrLength(reinterpret_cast<const char*>(string));
5375 }

References v8::internal::StrLength().

+ Here is the call graph for this function: