| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 634 return heap->undefined_value(); | 634 return heap->undefined_value(); |
| 635 } | 635 } |
| 636 *attributes = result->GetAttributes(); | 636 *attributes = result->GetAttributes(); |
| 637 Object* value; | 637 Object* value; |
| 638 switch (result->type()) { | 638 switch (result->type()) { |
| 639 case NORMAL: | 639 case NORMAL: |
| 640 value = result->holder()->GetNormalizedProperty(result); | 640 value = result->holder()->GetNormalizedProperty(result); |
| 641 ASSERT(!value->IsTheHole() || result->IsReadOnly()); | 641 ASSERT(!value->IsTheHole() || result->IsReadOnly()); |
| 642 return value->IsTheHole() ? heap->undefined_value() : value; | 642 return value->IsTheHole() ? heap->undefined_value() : value; |
| 643 case FIELD: | 643 case FIELD: |
| 644 value = result->holder()->FastPropertyAt(result->GetFieldIndex()); | 644 value = result->holder()->FastPropertyAt( |
| 645 result->GetFieldIndex().FieldIndex()); |
| 645 ASSERT(!value->IsTheHole() || result->IsReadOnly()); | 646 ASSERT(!value->IsTheHole() || result->IsReadOnly()); |
| 646 return value->IsTheHole() ? heap->undefined_value() : value; | 647 return value->IsTheHole() ? heap->undefined_value() : value; |
| 647 case CONSTANT_FUNCTION: | 648 case CONSTANT_FUNCTION: |
| 648 return result->GetConstantFunction(); | 649 return result->GetConstantFunction(); |
| 649 case CALLBACKS: | 650 case CALLBACKS: |
| 650 return result->holder()->GetPropertyWithCallback( | 651 return result->holder()->GetPropertyWithCallback( |
| 651 receiver, result->GetCallbackObject(), name); | 652 receiver, result->GetCallbackObject(), name); |
| 652 case HANDLER: | 653 case HANDLER: |
| 653 return result->proxy()->GetPropertyWithHandler(receiver, name); | 654 return result->proxy()->GetPropertyWithHandler(receiver, name); |
| 654 case INTERCEPTOR: | 655 case INTERCEPTOR: |
| (...skipping 1774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2429 map()->LookupDescriptor(this, name, result); | 2430 map()->LookupDescriptor(this, name, result); |
| 2430 // A property or a map transition was found. We return all of these result | 2431 // A property or a map transition was found. We return all of these result |
| 2431 // types because LocalLookupRealNamedProperty is used when setting | 2432 // types because LocalLookupRealNamedProperty is used when setting |
| 2432 // properties where map transitions are handled. | 2433 // properties where map transitions are handled. |
| 2433 ASSERT(!result->IsFound() || | 2434 ASSERT(!result->IsFound() || |
| 2434 (result->holder() == this && result->IsFastPropertyType())); | 2435 (result->holder() == this && result->IsFastPropertyType())); |
| 2435 // Disallow caching for uninitialized constants. These can only | 2436 // Disallow caching for uninitialized constants. These can only |
| 2436 // occur as fields. | 2437 // occur as fields. |
| 2437 if (result->IsField() && | 2438 if (result->IsField() && |
| 2438 result->IsReadOnly() && | 2439 result->IsReadOnly() && |
| 2439 FastPropertyAt(result->GetFieldIndex())->IsTheHole()) { | 2440 FastPropertyAt(result->GetFieldIndex().FieldIndex())->IsTheHole()) { |
| 2440 result->DisallowCaching(); | 2441 result->DisallowCaching(); |
| 2441 } | 2442 } |
| 2442 return; | 2443 return; |
| 2443 } | 2444 } |
| 2444 | 2445 |
| 2445 int entry = property_dictionary()->FindEntry(name); | 2446 int entry = property_dictionary()->FindEntry(name); |
| 2446 if (entry != StringDictionary::kNotFound) { | 2447 if (entry != StringDictionary::kNotFound) { |
| 2447 Object* value = property_dictionary()->ValueAt(entry); | 2448 Object* value = property_dictionary()->ValueAt(entry); |
| 2448 if (IsGlobalObject()) { | 2449 if (IsGlobalObject()) { |
| 2449 PropertyDetails d = property_dictionary()->DetailsAt(entry); | 2450 PropertyDetails d = property_dictionary()->DetailsAt(entry); |
| (...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2922 } | 2923 } |
| 2923 | 2924 |
| 2924 // This is a real property that is not read-only, or it is a | 2925 // This is a real property that is not read-only, or it is a |
| 2925 // transition or null descriptor and there are no setters in the prototypes. | 2926 // transition or null descriptor and there are no setters in the prototypes. |
| 2926 MaybeObject* result = *value; | 2927 MaybeObject* result = *value; |
| 2927 switch (lookup->type()) { | 2928 switch (lookup->type()) { |
| 2928 case NORMAL: | 2929 case NORMAL: |
| 2929 result = self->SetNormalizedProperty(lookup, *value); | 2930 result = self->SetNormalizedProperty(lookup, *value); |
| 2930 break; | 2931 break; |
| 2931 case FIELD: | 2932 case FIELD: |
| 2932 result = self->FastPropertyAtPut(lookup->GetFieldIndex(), *value); | 2933 result = self->FastPropertyAtPut( |
| 2934 lookup->GetFieldIndex().FieldIndex(), *value); |
| 2933 break; | 2935 break; |
| 2934 case CONSTANT_FUNCTION: | 2936 case CONSTANT_FUNCTION: |
| 2935 // Only replace the function if necessary. | 2937 // Only replace the function if necessary. |
| 2936 if (*value == lookup->GetConstantFunction()) return *value; | 2938 if (*value == lookup->GetConstantFunction()) return *value; |
| 2937 // Preserve the attributes of this existing property. | 2939 // Preserve the attributes of this existing property. |
| 2938 attributes = lookup->GetAttributes(); | 2940 attributes = lookup->GetAttributes(); |
| 2939 result = self->ConvertDescriptorToField(*name, *value, attributes); | 2941 result = self->ConvertDescriptorToField(*name, *value, attributes); |
| 2940 break; | 2942 break; |
| 2941 case CALLBACKS: { | 2943 case CALLBACKS: { |
| 2942 Object* callback_object = lookup->GetCallbackObject(); | 2944 Object* callback_object = lookup->GetCallbackObject(); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3088 | 3090 |
| 3089 // Check of IsReadOnly removed from here in clone. | 3091 // Check of IsReadOnly removed from here in clone. |
| 3090 MaybeObject* result = *value; | 3092 MaybeObject* result = *value; |
| 3091 switch (lookup.type()) { | 3093 switch (lookup.type()) { |
| 3092 case NORMAL: { | 3094 case NORMAL: { |
| 3093 PropertyDetails details = PropertyDetails(attributes, NORMAL); | 3095 PropertyDetails details = PropertyDetails(attributes, NORMAL); |
| 3094 result = self->SetNormalizedProperty(*name, *value, details); | 3096 result = self->SetNormalizedProperty(*name, *value, details); |
| 3095 break; | 3097 break; |
| 3096 } | 3098 } |
| 3097 case FIELD: | 3099 case FIELD: |
| 3098 result = self->FastPropertyAtPut(lookup.GetFieldIndex(), *value); | 3100 result = self->FastPropertyAtPut( |
| 3101 lookup.GetFieldIndex().FieldIndex(), *value); |
| 3099 break; | 3102 break; |
| 3100 case CONSTANT_FUNCTION: | 3103 case CONSTANT_FUNCTION: |
| 3101 // Only replace the function if necessary. | 3104 // Only replace the function if necessary. |
| 3102 if (*value != lookup.GetConstantFunction()) { | 3105 if (*value != lookup.GetConstantFunction()) { |
| 3103 // Preserve the attributes of this existing property. | 3106 // Preserve the attributes of this existing property. |
| 3104 attributes = lookup.GetAttributes(); | 3107 attributes = lookup.GetAttributes(); |
| 3105 result = self->ConvertDescriptorToField(*name, *value, attributes); | 3108 result = self->ConvertDescriptorToField(*name, *value, attributes); |
| 3106 } | 3109 } |
| 3107 break; | 3110 break; |
| 3108 case CALLBACKS: | 3111 case CALLBACKS: |
| (...skipping 10751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13860 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER); | 13863 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER); |
| 13861 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER); | 13864 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER); |
| 13862 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER); | 13865 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER); |
| 13863 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER); | 13866 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER); |
| 13864 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER); | 13867 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER); |
| 13865 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER); | 13868 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER); |
| 13866 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER); | 13869 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER); |
| 13867 } | 13870 } |
| 13868 | 13871 |
| 13869 } } // namespace v8::internal | 13872 } } // namespace v8::internal |
| OLD | NEW |