OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/deoptimizer.h" | 5 #include "src/deoptimizer.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "src/accessors.h" | 9 #include "src/accessors.h" |
10 #include "src/ast/prettyprinter.h" | 10 #include "src/ast/prettyprinter.h" |
(...skipping 3756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3767 slot->value_ = object; | 3767 slot->value_ = object; |
3768 Handle<Object> properties = MaterializeAt(frame_index, value_index); | 3768 Handle<Object> properties = MaterializeAt(frame_index, value_index); |
3769 Handle<Object> elements = MaterializeAt(frame_index, value_index); | 3769 Handle<Object> elements = MaterializeAt(frame_index, value_index); |
3770 Handle<Object> length = MaterializeAt(frame_index, value_index); | 3770 Handle<Object> length = MaterializeAt(frame_index, value_index); |
3771 object->set_properties(FixedArray::cast(*properties)); | 3771 object->set_properties(FixedArray::cast(*properties)); |
3772 object->set_elements(FixedArrayBase::cast(*elements)); | 3772 object->set_elements(FixedArrayBase::cast(*elements)); |
3773 object->set_length(*length); | 3773 object->set_length(*length); |
3774 return object; | 3774 return object; |
3775 } | 3775 } |
3776 case JS_FUNCTION_TYPE: { | 3776 case JS_FUNCTION_TYPE: { |
| 3777 Handle<SharedFunctionInfo> temporary_shared = |
| 3778 isolate_->factory()->NewSharedFunctionInfo( |
| 3779 isolate_->factory()->empty_string(), MaybeHandle<Code>(), |
| 3780 false); |
3777 Handle<JSFunction> object = | 3781 Handle<JSFunction> object = |
3778 isolate_->factory()->NewFunctionFromSharedFunctionInfo( | 3782 isolate_->factory()->NewFunctionFromSharedFunctionInfo( |
3779 handle(isolate_->object_function()->shared()), | 3783 map, temporary_shared, isolate_->factory()->undefined_value(), |
3780 handle(isolate_->context())); | 3784 NOT_TENURED); |
3781 slot->value_ = object; | 3785 slot->value_ = object; |
3782 // We temporarily allocated a JSFunction for the {Object} function | |
3783 // within the current context, to break cycles in the object graph. | |
3784 // The correct function and context will be set below once available. | |
3785 Handle<Object> properties = MaterializeAt(frame_index, value_index); | 3786 Handle<Object> properties = MaterializeAt(frame_index, value_index); |
3786 Handle<Object> elements = MaterializeAt(frame_index, value_index); | 3787 Handle<Object> elements = MaterializeAt(frame_index, value_index); |
3787 Handle<Object> prototype = MaterializeAt(frame_index, value_index); | 3788 Handle<Object> prototype = MaterializeAt(frame_index, value_index); |
3788 Handle<Object> shared = MaterializeAt(frame_index, value_index); | 3789 Handle<Object> shared = MaterializeAt(frame_index, value_index); |
3789 Handle<Object> context = MaterializeAt(frame_index, value_index); | 3790 Handle<Object> context = MaterializeAt(frame_index, value_index); |
3790 Handle<Object> literals = MaterializeAt(frame_index, value_index); | 3791 Handle<Object> literals = MaterializeAt(frame_index, value_index); |
3791 Handle<Object> entry = MaterializeAt(frame_index, value_index); | 3792 Handle<Object> entry = MaterializeAt(frame_index, value_index); |
3792 Handle<Object> next_link = MaterializeAt(frame_index, value_index); | 3793 Handle<Object> next_link = MaterializeAt(frame_index, value_index); |
3793 object->ReplaceCode(*isolate_->builtins()->CompileLazy()); | 3794 object->ReplaceCode(*isolate_->builtins()->CompileLazy()); |
3794 object->set_map(*map); | 3795 object->set_map(*map); |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4036 CHECK(value_info->IsMaterializedObject()); | 4037 CHECK(value_info->IsMaterializedObject()); |
4037 | 4038 |
4038 value_info->value_ = | 4039 value_info->value_ = |
4039 Handle<Object>(previously_materialized_objects->get(i), isolate_); | 4040 Handle<Object>(previously_materialized_objects->get(i), isolate_); |
4040 } | 4041 } |
4041 } | 4042 } |
4042 } | 4043 } |
4043 | 4044 |
4044 } // namespace internal | 4045 } // namespace internal |
4045 } // namespace v8 | 4046 } // namespace v8 |
OLD | NEW |