28 #ifndef V8_PROPERTY_H_ 
   29 #define V8_PROPERTY_H_ 
   51     if (!StringShape(key_).IsSymbol()) {
 
   52       MaybeObject* maybe_result = 
HEAP->LookupSymbol(key_);
 
   53       if (!maybe_result->To(&key_)) 
return maybe_result;
 
   63   void Print(FILE* out);
 
   67     ASSERT(PropertyDetails::IsValidIndex(index));
 
   68     details_ = PropertyDetails(details_.attributes(), details_.type(), index);
 
   71   bool ContainsTransition();
 
   76   PropertyDetails details_;
 
   99         details_(attributes, type, index) { }
 
  132       : Descriptor(key, 
Smi::FromInt(field_index), attributes, 
FIELD, index) {}
 
  152       : Descriptor(key, foreign, attributes, 
CALLBACKS, index) {}
 
  158   switch (desc->type()) {
 
  166       Object* callback_object = desc->GetCallbackObject();
 
  171       return (!callback_object->IsAccessorPair() ||
 
  188         next_(isolate->top_lookup_result()),
 
  189         lookup_type_(NOT_FOUND),
 
  197     ASSERT(isolate_->top_lookup_result() == 
this);
 
  198     isolate_->SetTopLookupResult(next_);
 
  202     lookup_type_ = DESCRIPTOR_TYPE;
 
  209     lookup_type_ = CONSTANT_TYPE;
 
  212         PropertyDetails(static_cast<PropertyAttributes>(
DONT_ENUM |
 
  219     lookup_type_ = DICTIONARY_TYPE;
 
  226     lookup_type_ = HANDLER_TYPE;
 
  233     lookup_type_ = INTERCEPTOR_TYPE;
 
  239     lookup_type_ = NOT_FOUND;
 
  255     return details_.type();
 
  260     return details_.attributes();
 
  271   bool IsFound() { 
return lookup_type_ != NOT_FOUND; }
 
  272   bool IsHandler() { 
return lookup_type_ == HANDLER_TYPE; }
 
  285         return holder()->FastPropertyAt(GetFieldIndex());
 
  288         value = holder()->property_dictionary()->ValueAt(GetDictionaryEntry());
 
  289         if (holder()->IsGlobalObject()) {
 
  295         return GetConstantFunction();
 
  303     ASSERT(lookup_type_ == DESCRIPTOR_TYPE);
 
  310     ASSERT(lookup_type_ == DESCRIPTOR_TYPE);
 
  312     return Map::cast(map->instance_descriptors()->GetValue(number_));
 
  316     ASSERT(lookup_type_ == DESCRIPTOR_TYPE);
 
  318     return Descriptor::IndexFromValue(GetValue());
 
  322     ASSERT(lookup_type_ == DESCRIPTOR_TYPE);
 
  324     return Descriptor::IndexFromValue(
 
  325         map->instance_descriptors()->GetValue(number_)) -
 
  330     ASSERT(lookup_type_ == DICTIONARY_TYPE);
 
  340     ASSERT(lookup_type_ == DESCRIPTOR_TYPE);
 
  346     if (lookup_type_ == CONSTANT_TYPE) {
 
  348       return HEAP->prototype_accessors();
 
  354   void Print(FILE* out);
 
  358     if (lookup_type_ == DESCRIPTOR_TYPE) {
 
  360       return descriptors->
GetValue(number_);
 
  363     ASSERT(lookup_type_ == DICTIONARY_TYPE);
 
  364     return holder()->GetNormalizedProperty(
this);
 
  367   void Iterate(ObjectVisitor* visitor);
 
  386   PropertyDetails details_;
 
  392 #endif  // V8_PROPERTY_H_ 
void DescriptorResult(JSObject *holder, PropertyDetails details, int number)
 
void ConstantResult(JSObject *holder)
 
int GetLocalFieldIndexFromMap(Map *map)
 
int inobject_properties()
 
MUST_USE_RESULT MaybeObject * KeyToSymbol()
 
Descriptor(String *key, Object *value, PropertyAttributes attributes, PropertyType type, int index=0)
 
static Smi * FromInt(int value)
 
static AccessorPair * cast(Object *obj)
 
static Map * cast(Object *obj)
 
ConstTransitionDescriptor(String *key, Map *map)
 
#define ASSERT(condition)
 
v8::Handle< v8::Value > Print(const v8::Arguments &args)
 
void SetEnumerationIndex(int index)
 
Object * GetCallbackObject()
 
ConstantFunctionDescriptor(String *key, JSFunction *function, PropertyAttributes attributes, int index=0)
 
PropertyDetails GetPropertyDetails()
 
Object * GetValue(int descriptor_number)
 
static Smi * cast(Object *object)
 
bool IsPropertyDescriptor(T *desc)
 
MapTransitionDescriptor(String *key, Map *map, PropertyAttributes attributes)
 
static int IndexFromValue(Object *value)
 
LookupResult(Isolate *isolate)
 
PropertyAttributes GetAttributes()
 
FieldDescriptor(String *key, int field_index, PropertyAttributes attributes, int index=0)
 
Descriptor(String *key, Object *value, PropertyDetails details)
 
JSFunction * GetConstantFunctionFromMap(Map *map)
 
void SetTopLookupResult(LookupResult *top)
 
#define T(name, string, precedence)
 
void HandlerResult(JSProxy *proxy)
 
static JSGlobalPropertyCell * cast(Object *obj)
 
PropertyDetails DetailsAt(int entry)
 
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if enable use of VFP3 instructions if available this implies enabling ARMv7 enable use of ARMv7 instructions if enable use of MIPS FPU instructions if NULL
 
static JSProxy * cast(Object *obj)
 
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping true
 
void InterceptorResult(JSObject *holder)
 
void DictionaryResult(JSObject *holder, int entry)
 
Map * GetTransitionMapFromMap(Map *map)
 
CallbacksDescriptor(String *key, Object *foreign, PropertyAttributes attributes, int index=0)
 
JSFunction * GetConstantFunction()
 
void Init(String *key, Object *value, PropertyDetails details)
 
StringDictionary * property_dictionary()
 
static JSObject * cast(Object *obj)
 
PropertyDetails GetDetails()
 
static JSFunction * cast(Object *obj)