OLD | NEW |
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 1689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1700 if (!maybe_obj->ToObject(&obj)) return false; | 1700 if (!maybe_obj->ToObject(&obj)) return false; |
1701 } | 1701 } |
1702 set_byte_array_map(Map::cast(obj)); | 1702 set_byte_array_map(Map::cast(obj)); |
1703 | 1703 |
1704 { MaybeObject* maybe_obj = AllocateByteArray(0, TENURED); | 1704 { MaybeObject* maybe_obj = AllocateByteArray(0, TENURED); |
1705 if (!maybe_obj->ToObject(&obj)) return false; | 1705 if (!maybe_obj->ToObject(&obj)) return false; |
1706 } | 1706 } |
1707 set_empty_byte_array(ByteArray::cast(obj)); | 1707 set_empty_byte_array(ByteArray::cast(obj)); |
1708 | 1708 |
1709 { MaybeObject* maybe_obj = | 1709 { MaybeObject* maybe_obj = |
1710 AllocateMap(PIXEL_ARRAY_TYPE, PixelArray::kAlignedSize); | 1710 AllocateMap(EXTERNAL_PIXEL_ARRAY_TYPE, ExternalArray::kAlignedSize); |
1711 if (!maybe_obj->ToObject(&obj)) return false; | 1711 if (!maybe_obj->ToObject(&obj)) return false; |
1712 } | 1712 } |
1713 set_pixel_array_map(Map::cast(obj)); | 1713 set_external_pixel_array_map(Map::cast(obj)); |
1714 | 1714 |
1715 { MaybeObject* maybe_obj = AllocateMap(EXTERNAL_BYTE_ARRAY_TYPE, | 1715 { MaybeObject* maybe_obj = AllocateMap(EXTERNAL_BYTE_ARRAY_TYPE, |
1716 ExternalArray::kAlignedSize); | 1716 ExternalArray::kAlignedSize); |
1717 if (!maybe_obj->ToObject(&obj)) return false; | 1717 if (!maybe_obj->ToObject(&obj)) return false; |
1718 } | 1718 } |
1719 set_external_byte_array_map(Map::cast(obj)); | 1719 set_external_byte_array_map(Map::cast(obj)); |
1720 | 1720 |
1721 { MaybeObject* maybe_obj = AllocateMap(EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE, | 1721 { MaybeObject* maybe_obj = AllocateMap(EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE, |
1722 ExternalArray::kAlignedSize); | 1722 ExternalArray::kAlignedSize); |
1723 if (!maybe_obj->ToObject(&obj)) return false; | 1723 if (!maybe_obj->ToObject(&obj)) return false; |
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2221 case kExternalShortArray: | 2221 case kExternalShortArray: |
2222 return kExternalShortArrayMapRootIndex; | 2222 return kExternalShortArrayMapRootIndex; |
2223 case kExternalUnsignedShortArray: | 2223 case kExternalUnsignedShortArray: |
2224 return kExternalUnsignedShortArrayMapRootIndex; | 2224 return kExternalUnsignedShortArrayMapRootIndex; |
2225 case kExternalIntArray: | 2225 case kExternalIntArray: |
2226 return kExternalIntArrayMapRootIndex; | 2226 return kExternalIntArrayMapRootIndex; |
2227 case kExternalUnsignedIntArray: | 2227 case kExternalUnsignedIntArray: |
2228 return kExternalUnsignedIntArrayMapRootIndex; | 2228 return kExternalUnsignedIntArrayMapRootIndex; |
2229 case kExternalFloatArray: | 2229 case kExternalFloatArray: |
2230 return kExternalFloatArrayMapRootIndex; | 2230 return kExternalFloatArrayMapRootIndex; |
| 2231 case kExternalPixelArray: |
| 2232 return kExternalPixelArrayMapRootIndex; |
2231 default: | 2233 default: |
2232 UNREACHABLE(); | 2234 UNREACHABLE(); |
2233 return kUndefinedValueRootIndex; | 2235 return kUndefinedValueRootIndex; |
2234 } | 2236 } |
2235 } | 2237 } |
2236 | 2238 |
2237 | 2239 |
2238 MaybeObject* Heap::NumberFromDouble(double value, PretenureFlag pretenure) { | 2240 MaybeObject* Heap::NumberFromDouble(double value, PretenureFlag pretenure) { |
2239 // We need to distinguish the minus zero value and this cannot be | 2241 // We need to distinguish the minus zero value and this cannot be |
2240 // done after conversion to int. Doing this by comparing bit | 2242 // done after conversion to int. Doing this by comparing bit |
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2655 filler->set_map(one_pointer_filler_map()); | 2657 filler->set_map(one_pointer_filler_map()); |
2656 } else if (size == 2 * kPointerSize) { | 2658 } else if (size == 2 * kPointerSize) { |
2657 filler->set_map(two_pointer_filler_map()); | 2659 filler->set_map(two_pointer_filler_map()); |
2658 } else { | 2660 } else { |
2659 filler->set_map(byte_array_map()); | 2661 filler->set_map(byte_array_map()); |
2660 ByteArray::cast(filler)->set_length(ByteArray::LengthFor(size)); | 2662 ByteArray::cast(filler)->set_length(ByteArray::LengthFor(size)); |
2661 } | 2663 } |
2662 } | 2664 } |
2663 | 2665 |
2664 | 2666 |
2665 MaybeObject* Heap::AllocatePixelArray(int length, | |
2666 uint8_t* external_pointer, | |
2667 PretenureFlag pretenure) { | |
2668 AllocationSpace space = (pretenure == TENURED) ? OLD_DATA_SPACE : NEW_SPACE; | |
2669 Object* result; | |
2670 { MaybeObject* maybe_result = | |
2671 AllocateRaw(PixelArray::kAlignedSize, space, OLD_DATA_SPACE); | |
2672 if (!maybe_result->ToObject(&result)) return maybe_result; | |
2673 } | |
2674 | |
2675 reinterpret_cast<PixelArray*>(result)->set_map(pixel_array_map()); | |
2676 reinterpret_cast<PixelArray*>(result)->set_length(length); | |
2677 reinterpret_cast<PixelArray*>(result)->set_external_pointer(external_pointer); | |
2678 | |
2679 return result; | |
2680 } | |
2681 | |
2682 | |
2683 MaybeObject* Heap::AllocateExternalArray(int length, | 2667 MaybeObject* Heap::AllocateExternalArray(int length, |
2684 ExternalArrayType array_type, | 2668 ExternalArrayType array_type, |
2685 void* external_pointer, | 2669 void* external_pointer, |
2686 PretenureFlag pretenure) { | 2670 PretenureFlag pretenure) { |
2687 AllocationSpace space = (pretenure == TENURED) ? OLD_DATA_SPACE : NEW_SPACE; | 2671 AllocationSpace space = (pretenure == TENURED) ? OLD_DATA_SPACE : NEW_SPACE; |
2688 Object* result; | 2672 Object* result; |
2689 { MaybeObject* maybe_result = AllocateRaw(ExternalArray::kAlignedSize, | 2673 { MaybeObject* maybe_result = AllocateRaw(ExternalArray::kAlignedSize, |
2690 space, | 2674 space, |
2691 OLD_DATA_SPACE); | 2675 OLD_DATA_SPACE); |
2692 if (!maybe_result->ToObject(&result)) return maybe_result; | 2676 if (!maybe_result->ToObject(&result)) return maybe_result; |
(...skipping 2882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5575 void ExternalStringTable::TearDown() { | 5559 void ExternalStringTable::TearDown() { |
5576 new_space_strings_.Free(); | 5560 new_space_strings_.Free(); |
5577 old_space_strings_.Free(); | 5561 old_space_strings_.Free(); |
5578 } | 5562 } |
5579 | 5563 |
5580 | 5564 |
5581 List<Object*> ExternalStringTable::new_space_strings_; | 5565 List<Object*> ExternalStringTable::new_space_strings_; |
5582 List<Object*> ExternalStringTable::old_space_strings_; | 5566 List<Object*> ExternalStringTable::old_space_strings_; |
5583 | 5567 |
5584 } } // namespace v8::internal | 5568 } } // namespace v8::internal |
OLD | NEW |