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 1360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1371 value = output_[frame_index - 1]->GetFp(); | 1371 value = output_[frame_index - 1]->GetFp(); |
1372 } | 1372 } |
1373 output_frame->SetCallerFp(output_offset, value); | 1373 output_frame->SetCallerFp(output_offset, value); |
1374 intptr_t fp_value = top_address + output_offset; | 1374 intptr_t fp_value = top_address + output_offset; |
1375 output_frame->SetFp(fp_value); | 1375 output_frame->SetFp(fp_value); |
1376 DebugPrintOutputSlot(value, frame_index, output_offset, "caller's fp\n"); | 1376 DebugPrintOutputSlot(value, frame_index, output_offset, "caller's fp\n"); |
1377 | 1377 |
1378 if (FLAG_enable_embedded_constant_pool) { | 1378 if (FLAG_enable_embedded_constant_pool) { |
1379 // Read the caller's constant pool from the previous frame. | 1379 // Read the caller's constant pool from the previous frame. |
1380 output_offset -= kPointerSize; | 1380 output_offset -= kPointerSize; |
1381 value = output_[frame_index - 1]->GetConstantPool(); | 1381 if (is_bottommost) { |
| 1382 value = caller_constant_pool_; |
| 1383 } else { |
| 1384 value = output_[frame_index - 1]->GetConstantPool(); |
| 1385 } |
1382 output_frame->SetCallerConstantPool(output_offset, value); | 1386 output_frame->SetCallerConstantPool(output_offset, value); |
1383 DebugPrintOutputSlot(value, frame_index, output_offset, | 1387 DebugPrintOutputSlot(value, frame_index, output_offset, |
1384 "caller's constant_pool\n"); | 1388 "caller's constant_pool\n"); |
1385 } | 1389 } |
1386 | 1390 |
1387 // A marker value is used in place of the context. | 1391 // A marker value is used in place of the context. |
1388 output_offset -= kPointerSize; | 1392 output_offset -= kPointerSize; |
1389 intptr_t context = reinterpret_cast<intptr_t>( | 1393 intptr_t context = reinterpret_cast<intptr_t>( |
1390 Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)); | 1394 Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)); |
1391 output_frame->SetFrameSlot(output_offset, context); | 1395 output_frame->SetFrameSlot(output_offset, context); |
(...skipping 2417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3809 CHECK(value_info->IsMaterializedObject()); | 3813 CHECK(value_info->IsMaterializedObject()); |
3810 | 3814 |
3811 value_info->value_ = | 3815 value_info->value_ = |
3812 Handle<Object>(previously_materialized_objects->get(i), isolate_); | 3816 Handle<Object>(previously_materialized_objects->get(i), isolate_); |
3813 } | 3817 } |
3814 } | 3818 } |
3815 } | 3819 } |
3816 | 3820 |
3817 } // namespace internal | 3821 } // namespace internal |
3818 } // namespace v8 | 3822 } // namespace v8 |
OLD | NEW |