Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: src/objects-inl.h

Issue 6725030: [Arguments] Introduce a new backing store for non-strict arguments objects. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/arguments
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 607
608 608
609 bool Object::IsHashTable() { 609 bool Object::IsHashTable() {
610 return Object::IsHeapObject() && 610 return Object::IsHeapObject() &&
611 HeapObject::cast(this)->map() == 611 HeapObject::cast(this)->map() ==
612 HeapObject::cast(this)->GetHeap()->hash_table_map(); 612 HeapObject::cast(this)->GetHeap()->hash_table_map();
613 } 613 }
614 614
615 615
616 bool Object::IsDictionary() { 616 bool Object::IsDictionary() {
617 return IsHashTable() && this != 617 return IsHashTable() &&
618 HeapObject::cast(this)->GetHeap()->symbol_table(); 618 this != HeapObject::cast(this)->GetHeap()->symbol_table();
619 } 619 }
620 620
621 621
622 bool Object::IsSymbolTable() { 622 bool Object::IsSymbolTable() {
623 return IsHashTable() && this == 623 return IsHashTable() && this ==
624 HeapObject::cast(this)->GetHeap()->raw_unchecked_symbol_table(); 624 HeapObject::cast(this)->GetHeap()->raw_unchecked_symbol_table();
625 } 625 }
626 626
627 627
628 bool Object::IsJSFunctionResultCache() { 628 bool Object::IsJSFunctionResultCache() {
(...skipping 2925 matching lines...) Expand 10 before | Expand all | Expand 10 after
3554 3554
3555 3555
3556 JSObject::ElementsKind JSObject::GetElementsKind() { 3556 JSObject::ElementsKind JSObject::GetElementsKind() {
3557 if (map()->has_fast_elements()) { 3557 if (map()->has_fast_elements()) {
3558 ASSERT(elements()->map() == GetHeap()->fixed_array_map() || 3558 ASSERT(elements()->map() == GetHeap()->fixed_array_map() ||
3559 elements()->map() == GetHeap()->fixed_cow_array_map()); 3559 elements()->map() == GetHeap()->fixed_cow_array_map());
3560 return FAST_ELEMENTS; 3560 return FAST_ELEMENTS;
3561 } 3561 }
3562 HeapObject* array = elements(); 3562 HeapObject* array = elements();
3563 if (array->IsFixedArray()) { 3563 if (array->IsFixedArray()) {
3564 // FAST_ELEMENTS or DICTIONARY_ELEMENTS are both stored in a 3564 // FAST_ELEMENTS, DICTIONARY_ELEMENTS, and NON_STRICT_ARGUMENTS_ELEMENTS
3565 // FixedArray, but FAST_ELEMENTS is already handled above. 3565 // are all stored in a FixedArray, but FAST_ELEMENTS is already handled
3566 // above.
3567 if (array->map() == GetHeap()->non_strict_arguments_elements()) {
3568 return NON_STRICT_ARGUMENTS_ELEMENTS;
3569 }
3566 ASSERT(array->IsDictionary()); 3570 ASSERT(array->IsDictionary());
3567 return DICTIONARY_ELEMENTS; 3571 return DICTIONARY_ELEMENTS;
3568 } 3572 }
3569 ASSERT(!map()->has_fast_elements()); 3573 ASSERT(array->IsExternalArray());
3570 if (array->IsExternalArray()) { 3574 switch (array->map()->instance_type()) {
3571 switch (array->map()->instance_type()) { 3575 case EXTERNAL_BYTE_ARRAY_TYPE:
3572 case EXTERNAL_BYTE_ARRAY_TYPE: 3576 return EXTERNAL_BYTE_ELEMENTS;
3573 return EXTERNAL_BYTE_ELEMENTS; 3577 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE:
3574 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: 3578 return EXTERNAL_UNSIGNED_BYTE_ELEMENTS;
3575 return EXTERNAL_UNSIGNED_BYTE_ELEMENTS; 3579 case EXTERNAL_SHORT_ARRAY_TYPE:
3576 case EXTERNAL_SHORT_ARRAY_TYPE: 3580 return EXTERNAL_SHORT_ELEMENTS;
3577 return EXTERNAL_SHORT_ELEMENTS; 3581 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE:
3578 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: 3582 return EXTERNAL_UNSIGNED_SHORT_ELEMENTS;
3579 return EXTERNAL_UNSIGNED_SHORT_ELEMENTS; 3583 case EXTERNAL_INT_ARRAY_TYPE:
3580 case EXTERNAL_INT_ARRAY_TYPE: 3584 return EXTERNAL_INT_ELEMENTS;
3581 return EXTERNAL_INT_ELEMENTS; 3585 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE:
3582 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: 3586 return EXTERNAL_UNSIGNED_INT_ELEMENTS;
3583 return EXTERNAL_UNSIGNED_INT_ELEMENTS; 3587 case EXTERNAL_PIXEL_ARRAY_TYPE:
3584 case EXTERNAL_PIXEL_ARRAY_TYPE: 3588 return EXTERNAL_PIXEL_ELEMENTS;
3585 return EXTERNAL_PIXEL_ELEMENTS;
3586 default:
3587 break;
3588 }
3589 } 3589 }
3590 ASSERT(array->map()->instance_type() == EXTERNAL_FLOAT_ARRAY_TYPE); 3590 ASSERT(array->map()->instance_type() == EXTERNAL_FLOAT_ARRAY_TYPE);
3591 return EXTERNAL_FLOAT_ELEMENTS; 3591 return EXTERNAL_FLOAT_ELEMENTS;
3592 } 3592 }
3593 3593
3594 3594
3595 bool JSObject::HasFastElements() { 3595 bool JSObject::HasFastElements() {
3596 return GetElementsKind() == FAST_ELEMENTS; 3596 return GetElementsKind() == FAST_ELEMENTS;
3597 } 3597 }
3598 3598
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
4091 #undef WRITE_INT_FIELD 4091 #undef WRITE_INT_FIELD
4092 #undef READ_SHORT_FIELD 4092 #undef READ_SHORT_FIELD
4093 #undef WRITE_SHORT_FIELD 4093 #undef WRITE_SHORT_FIELD
4094 #undef READ_BYTE_FIELD 4094 #undef READ_BYTE_FIELD
4095 #undef WRITE_BYTE_FIELD 4095 #undef WRITE_BYTE_FIELD
4096 4096
4097 4097
4098 } } // namespace v8::internal 4098 } } // namespace v8::internal
4099 4099
4100 #endif // V8_OBJECTS_INL_H_ 4100 #endif // V8_OBJECTS_INL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698