| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 11671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11682 | 11682 |
| 11683 | 11683 |
| 11684 void Map::ZapPrototypeTransitions() { | 11684 void Map::ZapPrototypeTransitions() { |
| 11685 FixedArray* proto_transitions = GetPrototypeTransitions(); | 11685 FixedArray* proto_transitions = GetPrototypeTransitions(); |
| 11686 MemsetPointer(proto_transitions->data_start(), | 11686 MemsetPointer(proto_transitions->data_start(), |
| 11687 GetHeap()->the_hole_value(), | 11687 GetHeap()->the_hole_value(), |
| 11688 proto_transitions->length()); | 11688 proto_transitions->length()); |
| 11689 } | 11689 } |
| 11690 | 11690 |
| 11691 | 11691 |
| 11692 void Map::AddDependentCompilationInfo(DependentCode::DependencyGroup group, | 11692 // static |
| 11693 void Map::AddDependentCompilationInfo(Handle<Map> map, |
| 11694 DependentCode::DependencyGroup group, |
| 11693 CompilationInfo* info) { | 11695 CompilationInfo* info) { |
| 11694 Handle<DependentCode> dep(dependent_code()); | |
| 11695 Handle<DependentCode> codes = | 11696 Handle<DependentCode> codes = |
| 11696 DependentCode::Insert(dep, group, info->object_wrapper()); | 11697 DependentCode::Insert(handle(map->dependent_code(), info->isolate()), |
| 11697 if (*codes != dependent_code()) set_dependent_code(*codes); | 11698 group, info->object_wrapper()); |
| 11698 info->dependencies(group)->Add(Handle<HeapObject>(this), info->zone()); | 11699 if (*codes != map->dependent_code()) map->set_dependent_code(*codes); |
| 11700 info->dependencies(group)->Add(map, info->zone()); |
| 11699 } | 11701 } |
| 11700 | 11702 |
| 11701 | 11703 |
| 11702 void Map::AddDependentCode(DependentCode::DependencyGroup group, | 11704 // static |
| 11705 void Map::AddDependentCode(Handle<Map> map, |
| 11706 DependentCode::DependencyGroup group, |
| 11703 Handle<Code> code) { | 11707 Handle<Code> code) { |
| 11704 Handle<DependentCode> codes = DependentCode::Insert( | 11708 Handle<DependentCode> codes = DependentCode::Insert( |
| 11705 Handle<DependentCode>(dependent_code()), group, code); | 11709 Handle<DependentCode>(map->dependent_code()), group, code); |
| 11706 if (*codes != dependent_code()) set_dependent_code(*codes); | 11710 if (*codes != map->dependent_code()) map->set_dependent_code(*codes); |
| 11707 } | 11711 } |
| 11708 | 11712 |
| 11709 | 11713 |
| 11710 void Map::AddDependentIC(Handle<Code> stub) { | 11714 // static |
| 11715 void Map::AddDependentIC(Handle<Map> map, |
| 11716 Handle<Code> stub) { |
| 11711 ASSERT(stub->next_code_link()->IsUndefined()); | 11717 ASSERT(stub->next_code_link()->IsUndefined()); |
| 11712 int n = dependent_code()->number_of_entries(DependentCode::kWeakICGroup); | 11718 int n = map->dependent_code()->number_of_entries(DependentCode::kWeakICGroup); |
| 11713 if (n == 0) { | 11719 if (n == 0) { |
| 11714 // Slow path: insert the head of the list with possible heap allocation. | 11720 // Slow path: insert the head of the list with possible heap allocation. |
| 11715 AddDependentCode(DependentCode::kWeakICGroup, stub); | 11721 Map::AddDependentCode(map, DependentCode::kWeakICGroup, stub); |
| 11716 } else { | 11722 } else { |
| 11717 // Fast path: link the stub to the existing head of the list without any | 11723 // Fast path: link the stub to the existing head of the list without any |
| 11718 // heap allocation. | 11724 // heap allocation. |
| 11719 ASSERT(n == 1); | 11725 ASSERT(n == 1); |
| 11720 dependent_code()->AddToDependentICList(stub); | 11726 map->dependent_code()->AddToDependentICList(stub); |
| 11721 } | 11727 } |
| 11722 } | 11728 } |
| 11723 | 11729 |
| 11724 | 11730 |
| 11725 DependentCode::GroupStartIndexes::GroupStartIndexes(DependentCode* entries) { | 11731 DependentCode::GroupStartIndexes::GroupStartIndexes(DependentCode* entries) { |
| 11726 Recompute(entries); | 11732 Recompute(entries); |
| 11727 } | 11733 } |
| 11728 | 11734 |
| 11729 | 11735 |
| 11730 void DependentCode::GroupStartIndexes::Recompute(DependentCode* entries) { | 11736 void DependentCode::GroupStartIndexes::Recompute(DependentCode* entries) { |
| (...skipping 4866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16597 void PropertyCell::SetValueInferType(Handle<PropertyCell> cell, | 16603 void PropertyCell::SetValueInferType(Handle<PropertyCell> cell, |
| 16598 Handle<Object> value) { | 16604 Handle<Object> value) { |
| 16599 cell->set_value(*value); | 16605 cell->set_value(*value); |
| 16600 if (!HeapType::Any()->Is(cell->type())) { | 16606 if (!HeapType::Any()->Is(cell->type())) { |
| 16601 Handle<HeapType> new_type = UpdatedType(cell, value); | 16607 Handle<HeapType> new_type = UpdatedType(cell, value); |
| 16602 cell->set_type(*new_type); | 16608 cell->set_type(*new_type); |
| 16603 } | 16609 } |
| 16604 } | 16610 } |
| 16605 | 16611 |
| 16606 | 16612 |
| 16607 void PropertyCell::AddDependentCompilationInfo(CompilationInfo* info) { | 16613 // static |
| 16608 Handle<DependentCode> dep(dependent_code()); | 16614 void PropertyCell::AddDependentCompilationInfo(Handle<PropertyCell> cell, |
| 16615 CompilationInfo* info) { |
| 16609 Handle<DependentCode> codes = | 16616 Handle<DependentCode> codes = |
| 16610 DependentCode::Insert(dep, DependentCode::kPropertyCellChangedGroup, | 16617 DependentCode::Insert(handle(cell->dependent_code(), info->isolate()), |
| 16618 DependentCode::kPropertyCellChangedGroup, |
| 16611 info->object_wrapper()); | 16619 info->object_wrapper()); |
| 16612 if (*codes != dependent_code()) set_dependent_code(*codes); | 16620 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); |
| 16613 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( | 16621 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( |
| 16614 Handle<HeapObject>(this), info->zone()); | 16622 cell, info->zone()); |
| 16615 } | 16623 } |
| 16616 | 16624 |
| 16617 | 16625 |
| 16618 const char* GetBailoutReason(BailoutReason reason) { | 16626 const char* GetBailoutReason(BailoutReason reason) { |
| 16619 ASSERT(reason < kLastErrorMessage); | 16627 ASSERT(reason < kLastErrorMessage); |
| 16620 #define ERROR_MESSAGES_TEXTS(C, T) T, | 16628 #define ERROR_MESSAGES_TEXTS(C, T) T, |
| 16621 static const char* error_messages_[] = { | 16629 static const char* error_messages_[] = { |
| 16622 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) | 16630 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) |
| 16623 }; | 16631 }; |
| 16624 #undef ERROR_MESSAGES_TEXTS | 16632 #undef ERROR_MESSAGES_TEXTS |
| 16625 return error_messages_[reason]; | 16633 return error_messages_[reason]; |
| 16626 } | 16634 } |
| 16627 | 16635 |
| 16628 | 16636 |
| 16629 } } // namespace v8::internal | 16637 } } // namespace v8::internal |
| OLD | NEW |