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

Side by Side Diff: src/heap.cc

Issue 7033024: Add bit_field3 to Map objects (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: implement all three platforms Created 9 years, 7 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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 1585 matching lines...) Expand 10 before | Expand all | Expand 10 after
1596 Map* map = reinterpret_cast<Map*>(result); 1596 Map* map = reinterpret_cast<Map*>(result);
1597 map->set_map(meta_map()); 1597 map->set_map(meta_map());
1598 map->set_instance_type(instance_type); 1598 map->set_instance_type(instance_type);
1599 map->set_visitor_id( 1599 map->set_visitor_id(
1600 StaticVisitorBase::GetVisitorId(instance_type, instance_size)); 1600 StaticVisitorBase::GetVisitorId(instance_type, instance_size));
1601 map->set_prototype(null_value()); 1601 map->set_prototype(null_value());
1602 map->set_constructor(null_value()); 1602 map->set_constructor(null_value());
1603 map->set_instance_size(instance_size); 1603 map->set_instance_size(instance_size);
1604 map->set_inobject_properties(0); 1604 map->set_inobject_properties(0);
1605 map->set_pre_allocated_property_fields(0); 1605 map->set_pre_allocated_property_fields(0);
1606 map->set_instance_descriptors(empty_descriptor_array()); 1606 map->init_instance_descriptors();
1607 map->set_code_cache(empty_fixed_array()); 1607 map->set_code_cache(empty_fixed_array());
1608 map->set_prototype_transitions(empty_fixed_array()); 1608 map->set_prototype_transitions(empty_fixed_array());
1609 map->set_unused_property_fields(0); 1609 map->set_unused_property_fields(0);
1610 map->set_bit_field(0); 1610 map->set_bit_field(0);
1611 map->set_bit_field2((1 << Map::kIsExtensible) | (1 << Map::kHasFastElements)); 1611 map->set_bit_field2((1 << Map::kIsExtensible) | (1 << Map::kHasFastElements));
1612 1612
1613 // If the map object is aligned fill the padding area with Smi 0 objects. 1613 // If the map object is aligned fill the padding area with Smi 0 objects.
1614 if (Map::kPadStart < Map::kSize) { 1614 if (Map::kPadStart < Map::kSize) {
1615 memset(reinterpret_cast<byte*>(map) + Map::kPadStart - kHeapObjectTag, 1615 memset(reinterpret_cast<byte*>(map) + Map::kPadStart - kHeapObjectTag,
1616 0, 1616 0,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1689 set_null_value(obj); 1689 set_null_value(obj);
1690 Oddball::cast(obj)->set_kind(Oddball::kNull); 1690 Oddball::cast(obj)->set_kind(Oddball::kNull);
1691 1691
1692 // Allocate the empty descriptor array. 1692 // Allocate the empty descriptor array.
1693 { MaybeObject* maybe_obj = AllocateEmptyFixedArray(); 1693 { MaybeObject* maybe_obj = AllocateEmptyFixedArray();
1694 if (!maybe_obj->ToObject(&obj)) return false; 1694 if (!maybe_obj->ToObject(&obj)) return false;
1695 } 1695 }
1696 set_empty_descriptor_array(DescriptorArray::cast(obj)); 1696 set_empty_descriptor_array(DescriptorArray::cast(obj));
1697 1697
1698 // Fix the instance_descriptors for the existing maps. 1698 // Fix the instance_descriptors for the existing maps.
1699 meta_map()->set_instance_descriptors(empty_descriptor_array()); 1699 meta_map()->init_instance_descriptors();
1700 meta_map()->set_code_cache(empty_fixed_array()); 1700 meta_map()->set_code_cache(empty_fixed_array());
1701 meta_map()->set_prototype_transitions(empty_fixed_array()); 1701 meta_map()->set_prototype_transitions(empty_fixed_array());
1702 1702
1703 fixed_array_map()->set_instance_descriptors(empty_descriptor_array()); 1703 fixed_array_map()->init_instance_descriptors();
1704 fixed_array_map()->set_code_cache(empty_fixed_array()); 1704 fixed_array_map()->set_code_cache(empty_fixed_array());
1705 fixed_array_map()->set_prototype_transitions(empty_fixed_array()); 1705 fixed_array_map()->set_prototype_transitions(empty_fixed_array());
1706 1706
1707 oddball_map()->set_instance_descriptors(empty_descriptor_array()); 1707 oddball_map()->init_instance_descriptors();
1708 oddball_map()->set_code_cache(empty_fixed_array()); 1708 oddball_map()->set_code_cache(empty_fixed_array());
1709 oddball_map()->set_prototype_transitions(empty_fixed_array()); 1709 oddball_map()->set_prototype_transitions(empty_fixed_array());
1710 1710
1711 // Fix prototype object for existing maps. 1711 // Fix prototype object for existing maps.
1712 meta_map()->set_prototype(null_value()); 1712 meta_map()->set_prototype(null_value());
1713 meta_map()->set_constructor(null_value()); 1713 meta_map()->set_constructor(null_value());
1714 1714
1715 fixed_array_map()->set_prototype(null_value()); 1715 fixed_array_map()->set_prototype(null_value());
1716 fixed_array_map()->set_constructor(null_value()); 1716 fixed_array_map()->set_constructor(null_value());
1717 1717
(...skipping 1583 matching lines...) Expand 10 before | Expand all | Expand 10 after
3301 InitializeJSObjectFromMap(global, dictionary, map); 3301 InitializeJSObjectFromMap(global, dictionary, map);
3302 3302
3303 // Create a new map for the global object. 3303 // Create a new map for the global object.
3304 { MaybeObject* maybe_obj = map->CopyDropDescriptors(); 3304 { MaybeObject* maybe_obj = map->CopyDropDescriptors();
3305 if (!maybe_obj->ToObject(&obj)) return maybe_obj; 3305 if (!maybe_obj->ToObject(&obj)) return maybe_obj;
3306 } 3306 }
3307 Map* new_map = Map::cast(obj); 3307 Map* new_map = Map::cast(obj);
3308 3308
3309 // Setup the global object as a normalized object. 3309 // Setup the global object as a normalized object.
3310 global->set_map(new_map); 3310 global->set_map(new_map);
3311 global->map()->set_instance_descriptors(empty_descriptor_array()); 3311 global->map()->clear_instance_descriptors();
3312 global->set_properties(dictionary); 3312 global->set_properties(dictionary);
3313 3313
3314 // Make sure result is a global object with properties in dictionary. 3314 // Make sure result is a global object with properties in dictionary.
3315 ASSERT(global->IsGlobalObject()); 3315 ASSERT(global->IsGlobalObject());
3316 ASSERT(!global->HasFastProperties()); 3316 ASSERT(!global->HasFastProperties());
3317 return global; 3317 return global;
3318 } 3318 }
3319 3319
3320 3320
3321 MaybeObject* Heap::CopyJSObject(JSObject* source) { 3321 MaybeObject* Heap::CopyJSObject(JSObject* source) {
(...skipping 2580 matching lines...) Expand 10 before | Expand all | Expand 10 after
5902 } 5902 }
5903 5903
5904 5904
5905 void ExternalStringTable::TearDown() { 5905 void ExternalStringTable::TearDown() {
5906 new_space_strings_.Free(); 5906 new_space_strings_.Free();
5907 old_space_strings_.Free(); 5907 old_space_strings_.Free();
5908 } 5908 }
5909 5909
5910 5910
5911 } } // namespace v8::internal 5911 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698