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 1734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1745 // Found a previously materialized object by de-duplication. | 1745 // Found a previously materialized object by de-duplication. |
1746 object_index = desc.duplicate_object(); | 1746 object_index = desc.duplicate_object(); |
1747 materialized_objects_->Add(Handle<Object>()); | 1747 materialized_objects_->Add(Handle<Object>()); |
1748 } else if (desc.is_arguments() && ArgumentsObjectIsAdapted(object_index)) { | 1748 } else if (desc.is_arguments() && ArgumentsObjectIsAdapted(object_index)) { |
1749 // Use the arguments adapter frame we just built to materialize the | 1749 // Use the arguments adapter frame we just built to materialize the |
1750 // arguments object. FunctionGetArguments can't throw an exception. | 1750 // arguments object. FunctionGetArguments can't throw an exception. |
1751 Handle<JSFunction> function = ArgumentsObjectFunction(object_index); | 1751 Handle<JSFunction> function = ArgumentsObjectFunction(object_index); |
1752 Handle<JSObject> arguments = Handle<JSObject>::cast( | 1752 Handle<JSObject> arguments = Handle<JSObject>::cast( |
1753 Accessors::FunctionGetArguments(function)); | 1753 Accessors::FunctionGetArguments(function)); |
1754 materialized_objects_->Add(arguments); | 1754 materialized_objects_->Add(arguments); |
1755 materialization_value_index_ += length; | 1755 // To keep consistent object counters, we still materialize the |
| 1756 // nested values (but we throw them away). |
| 1757 for (int i = 0; i < length; ++i) { |
| 1758 MaterializeNextValue(); |
| 1759 } |
1756 } else if (desc.is_arguments()) { | 1760 } else if (desc.is_arguments()) { |
1757 // Construct an arguments object and copy the parameters to a newly | 1761 // Construct an arguments object and copy the parameters to a newly |
1758 // allocated arguments object backing store. | 1762 // allocated arguments object backing store. |
1759 Handle<JSFunction> function = ArgumentsObjectFunction(object_index); | 1763 Handle<JSFunction> function = ArgumentsObjectFunction(object_index); |
1760 Handle<JSObject> arguments = | 1764 Handle<JSObject> arguments = |
1761 isolate_->factory()->NewArgumentsObject(function, length); | 1765 isolate_->factory()->NewArgumentsObject(function, length); |
1762 Handle<FixedArray> array = isolate_->factory()->NewFixedArray(length); | 1766 Handle<FixedArray> array = isolate_->factory()->NewFixedArray(length); |
1763 ASSERT(array->length() == length); | 1767 ASSERT(array->length() == length); |
1764 arguments->set_elements(*array); | 1768 arguments->set_elements(*array); |
1765 materialized_objects_->Add(arguments); | 1769 materialized_objects_->Add(arguments); |
(...skipping 1705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3471 | 3475 |
3472 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { | 3476 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { |
3473 v->VisitPointer(BitCast<Object**>(&function_)); | 3477 v->VisitPointer(BitCast<Object**>(&function_)); |
3474 v->VisitPointers(parameters_, parameters_ + parameters_count_); | 3478 v->VisitPointers(parameters_, parameters_ + parameters_count_); |
3475 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); | 3479 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); |
3476 } | 3480 } |
3477 | 3481 |
3478 #endif // ENABLE_DEBUGGER_SUPPORT | 3482 #endif // ENABLE_DEBUGGER_SUPPORT |
3479 | 3483 |
3480 } } // namespace v8::internal | 3484 } } // namespace v8::internal |
OLD | NEW |