#include "objects.h"
#include "contexts.h"
#include "conversions-inl.h"
#include "property.h"
ネームスペース | |
namespace | v8 |
namespace | v8::internal |
マクロ定義 | |
#define | CAST_ACCESSOR(type) |
#define | INT_ACCESSORS(holder, name, offset) |
#define | ACCESSORS(holder, name, type, offset) |
#define | SMI_ACCESSORS(holder, name, offset) |
#define | BOOL_ACCESSORS(holder, field, name, offset) |
#define | MAKE_STRUCT_CASE(NAME, Name, name) case NAME##_TYPE: return true; |
#define | MAKE_STRUCT_PREDICATE(NAME, Name, name) |
#define | FIELD_ADDR(p, offset) (reinterpret_cast<byte*>(p) + offset - kHeapObjectTag) |
#define | READ_FIELD(p, offset) (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset))) |
#define | WRITE_FIELD(p, offset, value) (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset)) = value) |
#define | WRITE_BARRIER(object, offset) Heap::RecordWrite(object->address(), offset); |
#define | CONDITIONAL_WRITE_BARRIER(object, offset, mode) |
#define | READ_DOUBLE_FIELD(p, offset) (*reinterpret_cast<double*>(FIELD_ADDR(p, offset))) |
#define | WRITE_DOUBLE_FIELD(p, offset, value) (*reinterpret_cast<double*>(FIELD_ADDR(p, offset)) = value) |
#define | READ_INT_FIELD(p, offset) (*reinterpret_cast<int*>(FIELD_ADDR(p, offset))) |
#define | WRITE_INT_FIELD(p, offset, value) (*reinterpret_cast<int*>(FIELD_ADDR(p, offset)) = value) |
#define | READ_UINT32_FIELD(p, offset) (*reinterpret_cast<uint32_t*>(FIELD_ADDR(p, offset))) |
#define | WRITE_UINT32_FIELD(p, offset, value) (*reinterpret_cast<uint32_t*>(FIELD_ADDR(p, offset)) = value) |
#define | READ_SHORT_FIELD(p, offset) (*reinterpret_cast<uint16_t*>(FIELD_ADDR(p, offset))) |
#define | WRITE_SHORT_FIELD(p, offset, value) (*reinterpret_cast<uint16_t*>(FIELD_ADDR(p, offset)) = value) |
#define | READ_BYTE_FIELD(p, offset) (*reinterpret_cast<byte*>(FIELD_ADDR(p, offset))) |
#define | WRITE_BYTE_FIELD(p, offset, value) (*reinterpret_cast<byte*>(FIELD_ADDR(p, offset)) = value) |
#define | MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) |
関数 | |
template<> | |
bool | v8::internal::Is< JSFunction > (Object *obj) |
template<> | |
bool | v8::internal::Is< JSArray > (Object *obj) |
v8::internal::ACCESSORS (Map, instance_descriptors, DescriptorArray, kInstanceDescriptorsOffset) ACCESSORS(FunctionTemplateInfo | |
kPropertyAccessorsOffset | v8::internal::ACCESSORS (FunctionTemplateInfo, prototype_template, Object, kPrototypeTemplateOffset) ACCESSORS(FunctionTemplateInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset | v8::internal::ACCESSORS (FunctionTemplateInfo, indexed_property_handler, Object, kIndexedPropertyHandlerOffset) ACCESSORS(FunctionTemplateInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset | v8::internal::ACCESSORS (FunctionTemplateInfo, instance_call_handler, Object, kInstanceCallHandlerOffset) ACCESSORS(FunctionTemplateInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset | v8::internal::ACCESSORS (ObjectTemplateInfo, internal_field_count, Object, kInternalFieldCountOffset) ACCESSORS(SharedFunctionInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset | v8::internal::ACCESSORS (SharedFunctionInfo, function_data, Object, kExternalReferenceDataOffset) BOOL_ACCESSORS(FunctionTemplateInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset kHiddenPrototypeBit | v8::internal::BOOL_ACCESSORS (FunctionTemplateInfo, flag, needs_access_check, kNeedsAccessCheckBit) BOOL_ACCESSORS(SharedFunctionInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset kHiddenPrototypeBit kIsExpressionBit | v8::internal::BOOL_ACCESSORS (SharedFunctionInfo, start_position_and_type, is_toplevel, kIsTopLevelBit) INT_ACCESSORS(SharedFunctionInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset kHiddenPrototypeBit kIsExpressionBit kFormalParameterCountOffset | v8::internal::INT_ACCESSORS (SharedFunctionInfo, expected_nof_properties, kExpectedNofPropertiesOffset) INT_ACCESSORS(SharedFunctionInfo |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset kHiddenPrototypeBit kIsExpressionBit kFormalParameterCountOffset kStartPositionAndTypeOffset | v8::internal::INT_ACCESSORS (SharedFunctionInfo, function_token_position, kFunctionTokenPositionOffset) void SharedFunctionInfo |
v8::internal::ACCESSORS (JSFunction, prototype_or_initial_map, Object, kPrototypeOrInitialMapOffset) Map *JSFunction | |
変数 | |
v8::internal::property_accessors | |
v8::internal::Object | |
kPropertyAccessorsOffset | v8::internal::named_property_handler |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset | v8::internal::instance_template |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset | v8::internal::access_check_info |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset | v8::internal::instance_class_name |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset | v8::internal::flag |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset | v8::internal::hidden_prototype |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset kHiddenPrototypeBit | v8::internal::start_position_and_type |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset kHiddenPrototypeBit | v8::internal::is_expression |
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kInstanceClassNameOffset kHiddenPrototypeBit kIsExpressionBit | v8::internal::formal_parameter_count |
#define ACCESSORS | ( | holder, | ||
name, | ||||
type, | ||||
offset | ||||
) |
type* holder::name() { return type::cast(READ_FIELD(this, offset)); } \ void holder::set_##name(type* value, WriteBarrierMode mode) { \ WRITE_FIELD(this, offset, value); \ CONDITIONAL_WRITE_BARRIER(this, offset, mode); \ }
objects-inl.h の 67 行で定義されています。
#define BOOL_ACCESSORS | ( | holder, | ||
field, | ||||
name, | ||||
offset | ||||
) |
bool holder::name() { \ return BooleanBit::get(field(), offset); \ } \ void holder::set_##name(bool value) { \ set_##field(BooleanBit::set(field(), offset, value)); \ }
objects-inl.h の 86 行で定義されています。
#define CAST_ACCESSOR | ( | type | ) |
#define CONDITIONAL_WRITE_BARRIER | ( | object, | ||
offset, | ||||
mode | ||||
) |
if (mode == UPDATE_WRITE_BARRIER) { \ Heap::RecordWrite(object->address(), offset); \ } else { \ ASSERT(mode == SKIP_WRITE_BARRIER); \ ASSERT(Heap::InNewSpace(object) || \ !Heap::InNewSpace(READ_FIELD(object, offset))); \ }
objects-inl.h の 520 行で定義されています。
参照元 v8::internal::JSObject::InObjectPropertyAtPut(), v8::internal::FixedArray::set(), v8::internal::ConsString::set_first(), と v8::internal::ConsString::set_second().
#define FIELD_ADDR | ( | p, | ||
offset | ||||
) | (reinterpret_cast<byte*>(p) + offset - kHeapObjectTag) |
objects-inl.h の 505 行で定義されています。
参照元 v8::internal::SeqTwoByteString::GetChars(), v8::internal::SeqTwoByteString::GetCharsAddress(), v8::internal::SeqAsciiString::GetCharsAddress(), v8::internal::Code::instruction_start(), v8::internal::HeapObject::IteratePointer(), v8::internal::HeapObject::IteratePointers(), v8::internal::Proxy::ProxyIterateBody(), v8::internal::Code::relocation_start(), v8::internal::ExternalTwoByteString::resource(), v8::internal::ExternalAsciiString::resource(), v8::internal::ExternalTwoByteString::set_resource(), v8::internal::ExternalAsciiString::set_resource(), と v8::internal::Code::sinfo_start().
#define INT_ACCESSORS | ( | holder, | ||
name, | ||||
offset | ||||
) |
int holder::name() { return READ_INT_FIELD(this, offset); } \ void holder::set_##name(int value) { WRITE_INT_FIELD(this, offset, value); }
objects-inl.h の 62 行で定義されています。
#define MAKE_STRUCT_CASE | ( | NAME, | ||
Name, | ||||
name | ||||
) | case NAME##_TYPE: return true; |
#define MAKE_STRUCT_CAST | ( | NAME, | ||
Name, | ||||
name | ||||
) | CAST_ACCESSOR(Name) |
objects-inl.h の 1254 行で定義されています。
#define MAKE_STRUCT_PREDICATE | ( | NAME, | ||
Name, | ||||
name | ||||
) |
bool Object::Is##Name() { \ return Object::IsHeapObject() \ && HeapObject::cast(this)->map()->instance_type() == NAME##_TYPE; \ }
objects-inl.h の 428 行で定義されています。
#define READ_BYTE_FIELD | ( | p, | ||
offset | ||||
) | (*reinterpret_cast<byte*>(FIELD_ADDR(p, offset))) |
objects-inl.h の 553 行で定義されています。
参照元 v8::internal::Map::bit_field(), v8::internal::ByteArray::get(), v8::internal::Code::ic_flag(), v8::internal::Map::inobject_properties(), v8::internal::Map::instance_size(), v8::internal::Map::instance_type(), v8::internal::Code::major_key(), v8::internal::SeqAsciiString::SeqAsciiStringGet(), と v8::internal::Map::unused_property_fields().
#define READ_DOUBLE_FIELD | ( | p, | ||
offset | ||||
) | (*reinterpret_cast<double*>(FIELD_ADDR(p, offset))) |
objects-inl.h の 529 行で定義されています。
#define READ_FIELD | ( | p, | ||
offset | ||||
) | (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset))) |
objects-inl.h の 508 行で定義されています。
参照元 v8::internal::SlicedString::buffer(), v8::internal::JSFunction::context(), v8::internal::JSObject::FastPropertyAt(), v8::internal::ConsString::first(), v8::internal::FixedArray::get(), v8::internal::JSObject::GetInternalField(), v8::internal::JSBuiltinsObject::javascript_builtin(), v8::internal::HeapObject::map_word(), v8::internal::HeapObject::RawField(), v8::internal::ConsString::second(), と v8::internal::JSFunction::unchecked_context().
#define READ_INT_FIELD | ( | p, | ||
offset | ||||
) | (*reinterpret_cast<int*>(FIELD_ADDR(p, offset))) |
objects-inl.h の 535 行で定義されています。
参照元 v8::internal::Code::flags(), v8::internal::ByteArray::get_int(), v8::internal::String::length(), v8::internal::Proxy::proxy(), v8::internal::SeqAsciiString::SeqAsciiStringSize(), v8::internal::SeqTwoByteString::SeqTwoByteStringSize(), と v8::internal::SlicedString::start().
#define READ_SHORT_FIELD | ( | p, | ||
offset | ||||
) | (*reinterpret_cast<uint16_t*>(FIELD_ADDR(p, offset))) |
objects-inl.h の 547 行で定義されています。
#define READ_UINT32_FIELD | ( | p, | ||
offset | ||||
) | (*reinterpret_cast<uint32_t*>(FIELD_ADDR(p, offset))) |
objects-inl.h の 541 行で定義されています。
#define SMI_ACCESSORS | ( | holder, | ||
name, | ||||
offset | ||||
) |
int holder::name() { \ Object* value = READ_FIELD(this, offset); \ return Smi::cast(value)->value(); \ } \ void holder::set_##name(int value) { \ WRITE_FIELD(this, offset, Smi::FromInt(value)); \ }
objects-inl.h の 76 行で定義されています。
#define WRITE_BARRIER | ( | object, | ||
offset | ||||
) | Heap::RecordWrite(object->address(), offset); |
objects-inl.h の 515 行で定義されています。
参照元 v8::internal::JSObject::FastPropertyAtPut(), v8::internal::FixedArray::set(), v8::internal::SlicedString::set_buffer(), v8::internal::JSFunction::set_context(), v8::internal::JSBuiltinsObject::set_javascript_builtin(), と v8::internal::JSObject::SetInternalField().
#define WRITE_BYTE_FIELD | ( | p, | ||
offset, | ||||
value | ||||
) | (*reinterpret_cast<byte*>(FIELD_ADDR(p, offset)) = value) |
objects-inl.h の 556 行で定義されています。
参照元 v8::internal::SeqAsciiString::SeqAsciiStringSet(), v8::internal::ByteArray::set(), v8::internal::Map::set_bit_field(), v8::internal::Code::set_ic_flag(), v8::internal::Map::set_inobject_properties(), v8::internal::Map::set_instance_size(), v8::internal::Map::set_instance_type(), v8::internal::Code::set_major_key(), と v8::internal::Map::set_unused_property_fields().
#define WRITE_DOUBLE_FIELD | ( | p, | ||
offset, | ||||
value | ||||
) | (*reinterpret_cast<double*>(FIELD_ADDR(p, offset)) = value) |
objects-inl.h の 532 行で定義されています。
#define WRITE_FIELD | ( | p, | ||
offset, | ||||
value | ||||
) | (*reinterpret_cast<Object**>(FIELD_ADDR(p, offset)) = value) |
objects-inl.h の 511 行で定義されています。
参照元 v8::internal::Map::ClearCodeCache(), v8::internal::FixedArray::fast_set(), v8::internal::JSObject::FastPropertyAtPut(), v8::internal::Struct::InitializeBody(), v8::internal::JSObject::InitializeBody(), v8::internal::JSObject::InObjectPropertyAtPut(), v8::internal::FixedArray::set(), v8::internal::SlicedString::set_buffer(), v8::internal::JSFunction::set_context(), v8::internal::ConsString::set_first(), v8::internal::JSBuiltinsObject::set_javascript_builtin(), v8::internal::HeapObject::set_map_word(), v8::internal::FixedArray::set_null(), v8::internal::ConsString::set_second(), v8::internal::FixedArray::set_the_hole(), v8::internal::FixedArray::set_undefined(), と v8::internal::JSObject::SetInternalField().
#define WRITE_INT_FIELD | ( | p, | ||
offset, | ||||
value | ||||
) | (*reinterpret_cast<int*>(FIELD_ADDR(p, offset)) = value) |
#define WRITE_SHORT_FIELD | ( | p, | ||
offset, | ||||
value | ||||
) | (*reinterpret_cast<uint16_t*>(FIELD_ADDR(p, offset)) = value) |
objects-inl.h の 550 行で定義されています。
#define WRITE_UINT32_FIELD | ( | p, | ||
offset, | ||||
value | ||||
) | (*reinterpret_cast<uint32_t*>(FIELD_ADDR(p, offset)) = value) |
objects-inl.h の 544 行で定義されています。