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 "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/ast/prettyprinter.h" | 8 #include "src/ast/prettyprinter.h" |
9 #include "src/codegen.h" | 9 #include "src/codegen.h" |
10 #include "src/disasm.h" | 10 #include "src/disasm.h" |
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
937 // read from the previous one. Also compute and set this frame's frame | 937 // read from the previous one. Also compute and set this frame's frame |
938 // pointer. | 938 // pointer. |
939 output_offset -= kFPOnStackSize; | 939 output_offset -= kFPOnStackSize; |
940 if (is_bottommost) { | 940 if (is_bottommost) { |
941 value = caller_fp_; | 941 value = caller_fp_; |
942 } else { | 942 } else { |
943 value = output_[frame_index - 1]->GetFp(); | 943 value = output_[frame_index - 1]->GetFp(); |
944 } | 944 } |
945 output_frame->SetCallerFp(output_offset, value); | 945 output_frame->SetCallerFp(output_offset, value); |
946 intptr_t fp_value = top_address + output_offset; | 946 intptr_t fp_value = top_address + output_offset; |
947 DCHECK(!is_bottommost || stack_fp_ == fp_value); | |
948 output_frame->SetFp(fp_value); | 947 output_frame->SetFp(fp_value); |
949 if (is_topmost) output_frame->SetRegister(fp_reg.code(), fp_value); | 948 if (is_topmost) output_frame->SetRegister(fp_reg.code(), fp_value); |
950 DebugPrintOutputSlot(value, frame_index, output_offset, "caller's fp\n"); | 949 DebugPrintOutputSlot(value, frame_index, output_offset, "caller's fp\n"); |
951 | 950 |
952 if (FLAG_enable_embedded_constant_pool) { | 951 if (FLAG_enable_embedded_constant_pool) { |
953 // For the bottommost output frame the constant pool pointer can be gotten | 952 // For the bottommost output frame the constant pool pointer can be gotten |
954 // from the input frame. For subsequent output frames, it can be read from | 953 // from the input frame. For subsequent output frames, it can be read from |
955 // the previous frame. | 954 // the previous frame. |
956 output_offset -= kPointerSize; | 955 output_offset -= kPointerSize; |
957 if (is_bottommost) { | 956 if (is_bottommost) { |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1161 // read from the previous one. Also compute and set this frame's frame | 1160 // read from the previous one. Also compute and set this frame's frame |
1162 // pointer. | 1161 // pointer. |
1163 output_offset -= kFPOnStackSize; | 1162 output_offset -= kFPOnStackSize; |
1164 if (is_bottommost) { | 1163 if (is_bottommost) { |
1165 value = caller_fp_; | 1164 value = caller_fp_; |
1166 } else { | 1165 } else { |
1167 value = output_[frame_index - 1]->GetFp(); | 1166 value = output_[frame_index - 1]->GetFp(); |
1168 } | 1167 } |
1169 output_frame->SetCallerFp(output_offset, value); | 1168 output_frame->SetCallerFp(output_offset, value); |
1170 intptr_t fp_value = top_address + output_offset; | 1169 intptr_t fp_value = top_address + output_offset; |
1171 DCHECK(!is_bottommost || stack_fp_ == fp_value); | |
1172 output_frame->SetFp(fp_value); | 1170 output_frame->SetFp(fp_value); |
1173 if (is_topmost) output_frame->SetRegister(fp_reg.code(), fp_value); | 1171 if (is_topmost) output_frame->SetRegister(fp_reg.code(), fp_value); |
1174 DebugPrintOutputSlot(value, frame_index, output_offset, "caller's fp\n"); | 1172 DebugPrintOutputSlot(value, frame_index, output_offset, "caller's fp\n"); |
1175 | 1173 |
1176 if (FLAG_enable_embedded_constant_pool) { | 1174 if (FLAG_enable_embedded_constant_pool) { |
1177 // For the bottommost output frame the constant pool pointer can be gotten | 1175 // For the bottommost output frame the constant pool pointer can be gotten |
1178 // from the input frame. For subsequent output frames, it can be read from | 1176 // from the input frame. For subsequent output frames, it can be read from |
1179 // the previous frame. | 1177 // the previous frame. |
1180 output_offset -= kPointerSize; | 1178 output_offset -= kPointerSize; |
1181 if (is_bottommost) { | 1179 if (is_bottommost) { |
(...skipping 2631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3813 CHECK(value_info->IsMaterializedObject()); | 3811 CHECK(value_info->IsMaterializedObject()); |
3814 | 3812 |
3815 value_info->value_ = | 3813 value_info->value_ = |
3816 Handle<Object>(previously_materialized_objects->get(i), isolate_); | 3814 Handle<Object>(previously_materialized_objects->get(i), isolate_); |
3817 } | 3815 } |
3818 } | 3816 } |
3819 } | 3817 } |
3820 | 3818 |
3821 } // namespace internal | 3819 } // namespace internal |
3822 } // namespace v8 | 3820 } // namespace v8 |
OLD | NEW |