v8  3.14.5(node0.10.28)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
String Class Reference

#include <objects.h>

Inheritance diagram for String:
Collaboration diagram for String:

Data Structures

class  FlatContent
 
class  ReadBlockBuffer
 

Public Member Functions

int length ()
 
void set_length (int value)
 
uint32_t hash_field ()
 
void set_hash_field (uint32_t value)
 
bool IsAsciiRepresentation ()
 
bool IsTwoByteRepresentation ()
 
bool IsAsciiRepresentationUnderneath ()
 
bool IsTwoByteRepresentationUnderneath ()
 
bool HasOnlyAsciiChars ()
 
void Set (int index, uint16_t value)
 
 INLINE (uint16_t Get(int index))
 
MaybeObject * TryFlatten (PretenureFlag pretenure=NOT_TENURED)
 
StringTryFlattenGetString (PretenureFlag pretenure=NOT_TENURED)
 
FlatContent GetFlatContent ()
 
StringGetUnderlying ()
 
bool MarkAsUndetectable ()
 
MUST_USE_RESULT MaybeObject * SubString (int from, int to, PretenureFlag pretenure=NOT_TENURED)
 
bool Equals (String *other)
 
bool IsEqualTo (Vector< const char > str)
 
bool IsAsciiEqualTo (Vector< const char > str)
 
bool IsTwoByteEqualTo (Vector< const uc16 > str)
 
SmartArrayPointer< char > ToCString (AllowNullsFlag allow_nulls, RobustnessFlag robustness_flag, int offset, int length, int *length_output=0)
 
SmartArrayPointer< char > ToCString (AllowNullsFlag allow_nulls=DISALLOW_NULLS, RobustnessFlag robustness_flag=FAST_STRING_TRAVERSAL, int *length_output=0)
 
SmartArrayPointer< uc16ToWideCString (RobustnessFlag robustness_flag=FAST_STRING_TRAVERSAL)
 
bool HasHashCode ()
 
uint32_t Hash ()
 
bool MakeExternal (v8::String::ExternalStringResource *resource)
 
bool MakeExternal (v8::String::ExternalAsciiStringResource *resource)
 
bool AsArrayIndex (uint32_t *index)
 
void PrintOn (FILE *out)
 
bool LooksValid ()
 
void StringShortPrint (StringStream *accumulator)
 
bool IsFlat ()
 
 STATIC_CHECK ((kArrayIndexLengthBits > 0))
 
 STATIC_CHECK (kMaxArrayIndexSize< (1<< kArrayIndexLengthBits))
 
 STATIC_CHECK (IS_POWER_OF_TWO(kMaxCachedArrayIndexLength+1))
 
const uc16GetTwoByteData ()
 
const uc16GetTwoByteData (unsigned start)
 
- Public Member Functions inherited from HeapObject
Mapmap ()
 
void set_map (Map *value)
 
void set_map_no_write_barrier (Map *value)
 
MapWord map_word ()
 
void set_map_word (MapWord map_word)
 
HeapGetHeap ()
 
IsolateGetIsolate ()
 
Address address ()
 
void Iterate (ObjectVisitor *v)
 
void IterateBody (InstanceType type, int object_size, ObjectVisitor *v)
 
int Size ()
 
int SizeFromMap (Map *map)
 
WriteBarrierMode GetWriteBarrierMode (const AssertNoAllocation &)
 
void HeapObjectShortPrint (StringStream *accumulator)
 
 STATIC_CHECK (kMapOffset==Internals::kHeapObjectMapOffset)
 
- Public Member Functions inherited from Object
bool IsObject ()
 
bool IsFixedArrayBase ()
 
bool IsInstanceOf (FunctionTemplateInfo *type)
 
bool IsStruct ()
 
 INLINE (bool IsSpecObject())
 
 INLINE (bool IsSpecFunction())
 
 INLINE (bool IsUndefined())
 
 INLINE (bool IsNull())
 
 INLINE (bool IsTheHole())
 
 INLINE (bool IsTrue())
 
 INLINE (bool IsFalse())
 
bool IsArgumentsMarker ()
 
bool NonFailureIsHeapObject ()
 
bool IsFiller ()
 
double Number ()
 
bool IsNaN ()
 
bool HasValidElements ()
 
bool HasSpecificClassOf (String *name)
 
MUST_USE_RESULT MaybeObject * ToObject ()
 
ObjectToBoolean ()
 
MUST_USE_RESULT MaybeObject * ToObject (Context *native_context)
 
MUST_USE_RESULT MaybeObject * ToSmi ()
 
void Lookup (String *name, LookupResult *result)
 
MUST_USE_RESULT MaybeObject * GetProperty (String *key)
 
MUST_USE_RESULT MaybeObject * GetProperty (String *key, PropertyAttributes *attributes)
 
MUST_USE_RESULT MaybeObject * GetPropertyWithReceiver (Object *receiver, String *key, PropertyAttributes *attributes)
 
MUST_USE_RESULT MaybeObject * GetProperty (Object *receiver, LookupResult *result, String *key, PropertyAttributes *attributes)
 
MUST_USE_RESULT MaybeObject * GetPropertyWithDefinedGetter (Object *receiver, JSReceiver *getter)
 
MUST_USE_RESULT MaybeObject * GetElement (uint32_t index)
 
ObjectGetElementNoExceptionThrown (uint32_t index)
 
MUST_USE_RESULT MaybeObject * GetElementWithReceiver (Object *receiver, uint32_t index)
 
ObjectGetPrototype ()
 
MUST_USE_RESULT MaybeObject * GetHash (CreationFlag flag)
 
bool SameValue (Object *other)
 
bool ToArrayIndex (uint32_t *index)
 
bool IsStringObjectWithCharacterAt (uint32_t index)
 
void VerifyApiCallResultType ()
 
void ShortPrint ()
 
void ShortPrint (FILE *out)
 
void ShortPrint (StringStream *accumulator)
 

Static Public Member Functions

static uint32_t ComputeHashField (unibrow::CharacterStream *buffer, int length, uint32_t seed)
 
static bool ComputeArrayIndex (unibrow::CharacterStream *buffer, uint32_t *index, int length)
 
static Stringcast (Object *obj)
 
static const unibrow::byteReadBlock (String *input, unibrow::byte *util_buffer, unsigned capacity, unsigned *remaining, unsigned *offset)
 
static const unibrow::byteReadBlock (String **input, unibrow::byte *util_buffer, unsigned capacity, unsigned *remaining, unsigned *offset)
 
template<typename sinkchar >
static void WriteToFlat (String *source, sinkchar *sink, int from, int to)
 
static int NonAsciiStart (const char *chars, int length)
 
static bool IsAscii (const char *chars, int length)
 
static int NonAsciiStart (const uc16 *chars, int length)
 
static bool IsAscii (const uc16 *chars, int length)
 
- Static Public Member Functions inherited from HeapObject
static HeapObjectFromAddress (Address address)
 
static Object ** RawField (HeapObject *obj, int offset)
 
static HeapObjectcast (Object *obj)
 
- Static Public Member Functions inherited from Object
static Handle< ObjectGetProperty (Handle< Object > object, Handle< Object > receiver, LookupResult *result, Handle< String > key, PropertyAttributes *attributes)
 
static Handle< ObjectGetElement (Handle< Object > object, uint32_t index)
 
static Objectcast (Object *value)
 

Static Public Attributes

static const int kLengthOffset = HeapObject::kHeaderSize
 
static const int kHashFieldOffset = kLengthOffset + kPointerSize
 
static const int kSize = kHashFieldOffset + kPointerSize
 
static const int kMaxArrayIndexSize = 10
 
static const int kMaxAsciiCharCode = unibrow::Utf8::kMaxOneByteChar
 
static const unsigned kMaxAsciiCharCodeU = unibrow::Utf8::kMaxOneByteChar
 
static const int kMaxUtf16CodeUnit = 0xffff
 
static const int kHashNotComputedMask = 1
 
static const int kIsNotArrayIndexMask = 1 << 1
 
static const int kNofHashBitFields = 2
 
static const int kHashShift = kNofHashBitFields
 
static const uint32_t kHashBitMask = 0xffffffffu >> kHashShift
 
static const int kMaxCachedArrayIndexLength = 7
 
static const int kArrayIndexValueBits = 24
 
static const int kArrayIndexLengthBits
 
static const int kArrayIndexHashLengthShift
 
static const int kArrayIndexHashMask = (1 << kArrayIndexHashLengthShift) - 1
 
static const int kArrayIndexValueMask
 
static const int kContainsCachedArrayIndexMask
 
static const int kEmptyHashField
 
static const int kEmptyStringHash = kIsNotArrayIndexMask
 
static const int kMaxLength = (1 << (32 - 2)) - 1
 
static const int kMaxHashCalcLength = 16383
 
static const int kMaxShortPrintLength = 1024
 
- Static Public Attributes inherited from HeapObject
static const int kMapOffset = Object::kHeaderSize
 
static const int kHeaderSize = kMapOffset + kPointerSize
 
- Static Public Attributes inherited from Object
static const int kHeaderSize = 0
 

Static Protected Member Functions

static const unibrow::byteReadBlock (String *input, ReadBlockBuffer *buffer, unsigned *offset, unsigned max_chars)
 
static void ReadBlockIntoBuffer (String *input, ReadBlockBuffer *buffer, unsigned *offset_ptr, unsigned max_chars)
 

Additional Inherited Members

- Protected Member Functions inherited from HeapObject
void IteratePointers (ObjectVisitor *v, int start, int end)
 
void IteratePointer (ObjectVisitor *v, int offset)
 

Detailed Description

Definition at line 7121 of file objects.h.

Member Function Documentation

static String* cast ( Object obj)
inlinestatic

Referenced by Heap::AllocateAsciiSymbol(), Heap::AllocateInternalSymbol(), Heap::AllocateRawAsciiString(), Heap::AllocateRawTwoByteString(), Heap::AllocateSubString(), Heap::AllocateTwoByteSymbol(), Logger::ApiNamedPropertyAccess(), Logger::ApiNamedSecurityCheck(), Map::AppendCallbackDescriptors(), RegExpImpl::AtomExecRaw(), JSReceiver::class_name(), ConsString::ConsStringGet(), ConsString::ConsStringReadBlockIntoBuffer(), JSReceiver::constructor_name(), ScopeInfo::ContextLocalName(), SharedFunctionInfo::DebugName(), JSObject::DefineAccessor(), Scope::DeserializeScopeChain(), Isolate::DoThrow(), RegExpResultsCache::Enter(), StringDictionary::FindEntry(), ConsString::first(), ScopeInfo::FunctionName(), V8HeapExplorer::GetConstructorName(), Runtime::GetElementOrCharAt(), Object::GetHash(), CodeCache::GetIndex(), TransitionArray::GetKey(), DescriptorArray::GetKey(), JSObject::GetLocalElementKeys(), Heap::GetNumberStringCache(), v8::internal::GetScriptLineNumberSafe(), SharedFunctionInfo::GetSourceCode(), SharedFunctionInfo::GetThisPropertyAssignmentName(), String::GetUnderlying(), StringDictionaryShape::HashForObject(), CodeCacheHashTableKey::HashForObject(), StringKey::HashForObject(), StringSharedKey::HashForObject(), RegExpKey::HashForObject(), Utf8SymbolKey::HashForObject(), SequentialSymbolKey< char >::HashForObject(), SubStringAsciiSymbolKey::HashForObject(), SymbolKey::HashForObject(), TwoCharHashTableKey::HashForObject(), SymbolsKey::HashForObject(), Script::HasValidSource(), HeapObject::HeapObjectShortPrint(), Runtime::InitializeIntrinsicFunctionNames(), v8::internal::InitScriptLineEnds(), StringDictionaryShape::IsMatch(), CodeCacheHashTableKey::IsMatch(), StringKey::IsMatch(), StringSharedKey::IsMatch(), RegExpKey::IsMatch(), Utf8SymbolKey::IsMatch(), AsciiSymbolKey::IsMatch(), SubStringAsciiSymbolKey::IsMatch(), TwoByteSymbolKey::IsMatch(), SymbolKey::IsMatch(), TwoCharHashTableKey::IsMatch(), Literal::IsPropertyName(), Object::IsStringObjectWithCharacterAt(), JSObject::JSObjectShortPrint(), LoadIC::Load(), ScopeInfo::LocalName(), Logger::LogAccessorCallbacks(), Logger::LogExistingFunction(), Logger::LogRuntime(), Context::Lookup(), Heap::LookupSingleCharacterStringFromCode(), SymbolTable::LookupSymbolIfExists(), SymbolTable::LookupTwoCharsSymbolIfExists(), FullCodeGenerator::MakeCode(), Heap::NumberToString(), ScopeInfo::ParameterName(), SlicedString::parent(), Parser::ParseLazy(), Parser::ParseProgram(), JSRegExp::Pattern(), LStoreNamedField::PrintDataTo(), LStoreNamedGeneric::PrintDataTo(), HLoadNamedFieldPolymorphic::PrintDataTo(), HLoadNamedGeneric::PrintDataTo(), HStoreNamedField::PrintDataTo(), HStoreNamedGeneric::PrintDataTo(), StringStream::PrintName(), StringStream::PrintPrototype(), JavaScriptFrame::PrintTop(), StringStream::PrintUsingMap(), ObjectLiteral::Property::Property(), ToBooleanStub::Types::Record(), Compiler::RecordFunctionCompilation(), CodeCache::RemoveByIndex(), v8::internal::RUNTIME_FUNCTION(), Object::SameValue(), ConsString::second(), Runtime::SetObjectProperty(), JSObject::SetPropertyForResult(), SlicedString::SlicedStringReadBlock(), SlicedString::SlicedStringReadBlockIntoBuffer(), SharedFunctionInfo::SourceCodePrint(), ScopeInfo::StackLocalName(), Value::StrictEquals(), SymbolKey::StringHash(), StringSharedKey::StringSharedHashHelper(), StringObject::StringValue(), V8HeapExplorer::TagGlobalObjects(), TEST(), Object::ToBoolean(), HConstant::ToBoolean(), StringDictionary::TransformPropertiesToFastFor(), String::TryFlattenGetString(), CallICBase::TryUpdateExtraICState(), Heap::VisitExternalResources(), and SymbolTableCleaner::VisitPointers().

bool ComputeArrayIndex ( unibrow::CharacterStream buffer,
uint32_t *  index,
int  length 
)
static
const uc16 * GetTwoByteData ( )

Definition at line 6292 of file objects.cc.

Referenced by String::GetTwoByteData().

uint32_t hash_field ( )
inline
bool HasHashCode ( )
inline

Definition at line 4916 of file objects-inl.h.

Referenced by v8::internal::RUNTIME_FUNCTION().

INLINE ( uint16_t   Getint index)
static bool IsAscii ( const char *  chars,
int  length 
)
inlinestatic
static bool IsAscii ( const uc16 chars,
int  length 
)
inlinestatic

Definition at line 7457 of file objects.h.

bool LooksValid ( )

Definition at line 6185 of file objects.cc.

Referenced by SharedFunctionInfo::SourceCodePrint(), and String::StringShortPrint().

bool MarkAsUndetectable ( )

Definition at line 7146 of file objects.cc.

References HeapObject::GetHeap(), HeapObject::map(), and HeapObject::set_map().

static int NonAsciiStart ( const char *  chars,
int  length 
)
inlinestatic
static int NonAsciiStart ( const uc16 chars,
int  length 
)
inlinestatic

Definition at line 7447 of file objects.h.

References v8::internal::kMaxAsciiCharCodeU.

void PrintOn ( FILE *  out)

Definition at line 7371 of file objects.cc.

References String::length().

const unibrow::byte * ReadBlock ( String input,
unibrow::byte util_buffer,
unsigned  capacity,
unsigned *  remaining,
unsigned *  offset 
)
static
const unibrow::byte * ReadBlock ( String **  input,
unibrow::byte util_buffer,
unsigned  capacity,
unsigned *  remaining,
unsigned *  offset 
)
static
STATIC_CHECK ( (kArrayIndexLengthBits > 0)  )
STATIC_CHECK ( )
MaybeObject * SubString ( int  from,
int  to,
PretenureFlag  pretenure = NOT_TENURED 
)

Definition at line 7363 of file objects.cc.

References Heap::AllocateSubString(), HeapObject::GetHeap(), and String::length().

SmartArrayPointer< char > ToCString ( AllowNullsFlag  allow_nulls = DISALLOW_NULLS,
RobustnessFlag  robustness_flag = FAST_STRING_TRAVERSAL,
int *  length_output = 0 
)

Definition at line 6285 of file objects.cc.

References ToCString().

MaybeObject * TryFlatten ( PretenureFlag  pretenure = NOT_TENURED)
inline
String * TryFlattenGetString ( PretenureFlag  pretenure = NOT_TENURED)
inline

Definition at line 2436 of file objects-inl.h.

References String::cast().

Referenced by Heap::AllocateSubString(), and SymbolKey::AsObject().

Field Documentation

const int kArrayIndexHashLengthShift
static
Initial value:

Definition at line 7361 of file objects.h.

Referenced by StringHasher::MakeArrayIndexHash().

const int kArrayIndexHashMask = (1 << kArrayIndexHashLengthShift) - 1
static

Definition at line 7364 of file objects.h.

const int kArrayIndexLengthBits
static
Initial value:

Definition at line 7355 of file objects.h.

const int kArrayIndexValueBits = 24
static

Definition at line 7354 of file objects.h.

Referenced by StringHasher::MakeArrayIndexHash().

const int kArrayIndexValueMask
static
Initial value:
=

Definition at line 7366 of file objects.h.

const int kContainsCachedArrayIndexMask
static
const int kEmptyStringHash = kIsNotArrayIndexMask
static

Definition at line 7383 of file objects.h.

const uint32_t kHashBitMask = 0xffffffffu >> kHashShift
static

Definition at line 7345 of file objects.h.

Referenced by TwoCharHashTableKey::TwoCharHashTableKey().

const int kHashFieldOffset = kLengthOffset + kPointerSize
static

Definition at line 7319 of file objects.h.

const int kHashNotComputedMask = 1
static

Definition at line 7336 of file objects.h.

const int kIsNotArrayIndexMask = 1 << 1
static
const int kLengthOffset = HeapObject::kHeaderSize
static

Definition at line 7318 of file objects.h.

const int kMaxArrayIndexSize = 10
static
const unsigned kMaxAsciiCharCodeU = unibrow::Utf8::kMaxOneByteChar
static

Definition at line 7328 of file objects.h.

Referenced by Logger::NameBuffer::AppendString().

const int kMaxCachedArrayIndexLength = 7
static

Definition at line 7349 of file objects.h.

Referenced by StringHasher::MakeArrayIndexHash().

const int kMaxHashCalcLength = 16383
static

Definition at line 7390 of file objects.h.

Referenced by StringHasher::GetHashField(), and StringHasher::has_trivial_hash().

const int kMaxShortPrintLength = 1024
static

Definition at line 7393 of file objects.h.

Referenced by String::StringShortPrint().

const int kNofHashBitFields = 2
static

Definition at line 7338 of file objects.h.

const int kSize = kHashFieldOffset + kPointerSize
static

Definition at line 7320 of file objects.h.


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