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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/codegen.h" | 8 #include "src/codegen.h" |
9 #include "src/cpu-profiler.h" | 9 #include "src/cpu-profiler.h" |
10 #include "src/deoptimizer.h" | 10 #include "src/deoptimizer.h" |
(...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
985 if (is_topmost) output_frame->SetRegister(fp_reg.code(), fp_value); | 985 if (is_topmost) output_frame->SetRegister(fp_reg.code(), fp_value); |
986 if (trace_scope_ != NULL) { | 986 if (trace_scope_ != NULL) { |
987 PrintF(trace_scope_->file(), | 987 PrintF(trace_scope_->file(), |
988 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 988 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
989 V8PRIxPTR " ; caller's fp\n", | 989 V8PRIxPTR " ; caller's fp\n", |
990 fp_value, output_offset, value); | 990 fp_value, output_offset, value); |
991 } | 991 } |
992 DCHECK(!is_bottommost || !has_alignment_padding_ || | 992 DCHECK(!is_bottommost || !has_alignment_padding_ || |
993 (fp_value & kPointerSize) != 0); | 993 (fp_value & kPointerSize) != 0); |
994 | 994 |
995 if (FLAG_enable_embedded_constant_pool) { | 995 if (FLAG_enable_ool_constant_pool) { |
996 // For the bottommost output frame the constant pool pointer can be gotten | 996 // For the bottommost output frame the constant pool pointer can be gotten |
997 // from the input frame. For subsequent output frames, it can be read from | 997 // from the input frame. For subsequent output frames, it can be read from |
998 // the previous frame. | 998 // the previous frame. |
999 output_offset -= kPointerSize; | 999 output_offset -= kPointerSize; |
1000 input_offset -= kPointerSize; | 1000 input_offset -= kPointerSize; |
1001 if (is_bottommost) { | 1001 if (is_bottommost) { |
1002 value = input_->GetFrameSlot(input_offset); | 1002 value = input_->GetFrameSlot(input_offset); |
1003 } else { | 1003 } else { |
1004 value = output_[frame_index - 1]->GetConstantPool(); | 1004 value = output_[frame_index - 1]->GetConstantPool(); |
1005 } | 1005 } |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1070 Code* non_optimized_code = function->shared()->code(); | 1070 Code* non_optimized_code = function->shared()->code(); |
1071 FixedArray* raw_data = non_optimized_code->deoptimization_data(); | 1071 FixedArray* raw_data = non_optimized_code->deoptimization_data(); |
1072 DeoptimizationOutputData* data = DeoptimizationOutputData::cast(raw_data); | 1072 DeoptimizationOutputData* data = DeoptimizationOutputData::cast(raw_data); |
1073 Address start = non_optimized_code->instruction_start(); | 1073 Address start = non_optimized_code->instruction_start(); |
1074 unsigned pc_and_state = GetOutputInfo(data, node_id, function->shared()); | 1074 unsigned pc_and_state = GetOutputInfo(data, node_id, function->shared()); |
1075 unsigned pc_offset = FullCodeGenerator::PcField::decode(pc_and_state); | 1075 unsigned pc_offset = FullCodeGenerator::PcField::decode(pc_and_state); |
1076 intptr_t pc_value = reinterpret_cast<intptr_t>(start + pc_offset); | 1076 intptr_t pc_value = reinterpret_cast<intptr_t>(start + pc_offset); |
1077 output_frame->SetPc(pc_value); | 1077 output_frame->SetPc(pc_value); |
1078 | 1078 |
1079 // Update constant pool. | 1079 // Update constant pool. |
1080 if (FLAG_enable_embedded_constant_pool) { | 1080 if (FLAG_enable_ool_constant_pool) { |
1081 intptr_t constant_pool_value = | 1081 intptr_t constant_pool_value = |
1082 reinterpret_cast<intptr_t>(non_optimized_code->constant_pool()); | 1082 reinterpret_cast<intptr_t>(non_optimized_code->constant_pool()); |
1083 output_frame->SetConstantPool(constant_pool_value); | 1083 output_frame->SetConstantPool(constant_pool_value); |
1084 if (is_topmost) { | 1084 if (is_topmost) { |
1085 Register constant_pool_reg = | 1085 Register constant_pool_reg = |
1086 JavaScriptFrame::constant_pool_pointer_register(); | 1086 JavaScriptFrame::constant_pool_pointer_register(); |
1087 output_frame->SetRegister(constant_pool_reg.code(), constant_pool_value); | 1087 output_frame->SetRegister(constant_pool_reg.code(), constant_pool_value); |
1088 } | 1088 } |
1089 } | 1089 } |
1090 | 1090 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1163 output_frame->SetCallerFp(output_offset, value); | 1163 output_frame->SetCallerFp(output_offset, value); |
1164 intptr_t fp_value = top_address + output_offset; | 1164 intptr_t fp_value = top_address + output_offset; |
1165 output_frame->SetFp(fp_value); | 1165 output_frame->SetFp(fp_value); |
1166 if (trace_scope_ != NULL) { | 1166 if (trace_scope_ != NULL) { |
1167 PrintF(trace_scope_->file(), | 1167 PrintF(trace_scope_->file(), |
1168 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1168 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
1169 V8PRIxPTR " ; caller's fp\n", | 1169 V8PRIxPTR " ; caller's fp\n", |
1170 fp_value, output_offset, value); | 1170 fp_value, output_offset, value); |
1171 } | 1171 } |
1172 | 1172 |
1173 if (FLAG_enable_embedded_constant_pool) { | 1173 if (FLAG_enable_ool_constant_pool) { |
1174 // Read the caller's constant pool from the previous frame. | 1174 // Read the caller's constant pool from the previous frame. |
1175 output_offset -= kPointerSize; | 1175 output_offset -= kPointerSize; |
1176 value = output_[frame_index - 1]->GetConstantPool(); | 1176 value = output_[frame_index - 1]->GetConstantPool(); |
1177 output_frame->SetCallerConstantPool(output_offset, value); | 1177 output_frame->SetCallerConstantPool(output_offset, value); |
1178 if (trace_scope_) { | 1178 if (trace_scope_) { |
1179 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1179 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
1180 V8PRIxPTR "; caller's constant_pool\n", | 1180 V8PRIxPTR "; caller's constant_pool\n", |
1181 top_address + output_offset, output_offset, value); | 1181 top_address + output_offset, output_offset, value); |
1182 } | 1182 } |
1183 } | 1183 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1218 | 1218 |
1219 DCHECK(0 == output_offset); | 1219 DCHECK(0 == output_offset); |
1220 | 1220 |
1221 Builtins* builtins = isolate_->builtins(); | 1221 Builtins* builtins = isolate_->builtins(); |
1222 Code* adaptor_trampoline = | 1222 Code* adaptor_trampoline = |
1223 builtins->builtin(Builtins::kArgumentsAdaptorTrampoline); | 1223 builtins->builtin(Builtins::kArgumentsAdaptorTrampoline); |
1224 intptr_t pc_value = reinterpret_cast<intptr_t>( | 1224 intptr_t pc_value = reinterpret_cast<intptr_t>( |
1225 adaptor_trampoline->instruction_start() + | 1225 adaptor_trampoline->instruction_start() + |
1226 isolate_->heap()->arguments_adaptor_deopt_pc_offset()->value()); | 1226 isolate_->heap()->arguments_adaptor_deopt_pc_offset()->value()); |
1227 output_frame->SetPc(pc_value); | 1227 output_frame->SetPc(pc_value); |
1228 if (FLAG_enable_embedded_constant_pool) { | 1228 if (FLAG_enable_ool_constant_pool) { |
1229 intptr_t constant_pool_value = | 1229 intptr_t constant_pool_value = |
1230 reinterpret_cast<intptr_t>(adaptor_trampoline->constant_pool()); | 1230 reinterpret_cast<intptr_t>(adaptor_trampoline->constant_pool()); |
1231 output_frame->SetConstantPool(constant_pool_value); | 1231 output_frame->SetConstantPool(constant_pool_value); |
1232 } | 1232 } |
1233 } | 1233 } |
1234 | 1234 |
1235 | 1235 |
1236 void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator, | 1236 void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator, |
1237 int frame_index) { | 1237 int frame_index) { |
1238 Builtins* builtins = isolate_->builtins(); | 1238 Builtins* builtins = isolate_->builtins(); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1297 output_frame->SetCallerFp(output_offset, value); | 1297 output_frame->SetCallerFp(output_offset, value); |
1298 intptr_t fp_value = top_address + output_offset; | 1298 intptr_t fp_value = top_address + output_offset; |
1299 output_frame->SetFp(fp_value); | 1299 output_frame->SetFp(fp_value); |
1300 if (trace_scope_ != NULL) { | 1300 if (trace_scope_ != NULL) { |
1301 PrintF(trace_scope_->file(), | 1301 PrintF(trace_scope_->file(), |
1302 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1302 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
1303 V8PRIxPTR " ; caller's fp\n", | 1303 V8PRIxPTR " ; caller's fp\n", |
1304 fp_value, output_offset, value); | 1304 fp_value, output_offset, value); |
1305 } | 1305 } |
1306 | 1306 |
1307 if (FLAG_enable_embedded_constant_pool) { | 1307 if (FLAG_enable_ool_constant_pool) { |
1308 // Read the caller's constant pool from the previous frame. | 1308 // Read the caller's constant pool from the previous frame. |
1309 output_offset -= kPointerSize; | 1309 output_offset -= kPointerSize; |
1310 value = output_[frame_index - 1]->GetConstantPool(); | 1310 value = output_[frame_index - 1]->GetConstantPool(); |
1311 output_frame->SetCallerConstantPool(output_offset, value); | 1311 output_frame->SetCallerConstantPool(output_offset, value); |
1312 if (trace_scope_) { | 1312 if (trace_scope_) { |
1313 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1313 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
1314 V8PRIxPTR " ; caller's constant pool\n", | 1314 V8PRIxPTR " ; caller's constant pool\n", |
1315 top_address + output_offset, output_offset, value); | 1315 top_address + output_offset, output_offset, value); |
1316 } | 1316 } |
1317 } | 1317 } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1385 V8PRIxPTR " ; allocated receiver\n", | 1385 V8PRIxPTR " ; allocated receiver\n", |
1386 top_address + output_offset, output_offset, value); | 1386 top_address + output_offset, output_offset, value); |
1387 } | 1387 } |
1388 | 1388 |
1389 CHECK_EQ(0u, output_offset); | 1389 CHECK_EQ(0u, output_offset); |
1390 | 1390 |
1391 intptr_t pc = reinterpret_cast<intptr_t>( | 1391 intptr_t pc = reinterpret_cast<intptr_t>( |
1392 construct_stub->instruction_start() + | 1392 construct_stub->instruction_start() + |
1393 isolate_->heap()->construct_stub_deopt_pc_offset()->value()); | 1393 isolate_->heap()->construct_stub_deopt_pc_offset()->value()); |
1394 output_frame->SetPc(pc); | 1394 output_frame->SetPc(pc); |
1395 if (FLAG_enable_embedded_constant_pool) { | 1395 if (FLAG_enable_ool_constant_pool) { |
1396 intptr_t constant_pool_value = | 1396 intptr_t constant_pool_value = |
1397 reinterpret_cast<intptr_t>(construct_stub->constant_pool()); | 1397 reinterpret_cast<intptr_t>(construct_stub->constant_pool()); |
1398 output_frame->SetConstantPool(constant_pool_value); | 1398 output_frame->SetConstantPool(constant_pool_value); |
1399 } | 1399 } |
1400 } | 1400 } |
1401 | 1401 |
1402 | 1402 |
1403 void Deoptimizer::DoComputeAccessorStubFrame(TranslationIterator* iterator, | 1403 void Deoptimizer::DoComputeAccessorStubFrame(TranslationIterator* iterator, |
1404 int frame_index, | 1404 int frame_index, |
1405 bool is_setter_stub_frame) { | 1405 bool is_setter_stub_frame) { |
1406 JSFunction* accessor = JSFunction::cast(ComputeLiteral(iterator->Next())); | 1406 JSFunction* accessor = JSFunction::cast(ComputeLiteral(iterator->Next())); |
1407 // The receiver (and the implicit return value, if any) are expected in | 1407 // The receiver (and the implicit return value, if any) are expected in |
1408 // registers by the LoadIC/StoreIC, so they don't belong to the output stack | 1408 // registers by the LoadIC/StoreIC, so they don't belong to the output stack |
1409 // frame. This means that we have to use a height of 0. | 1409 // frame. This means that we have to use a height of 0. |
1410 unsigned height = 0; | 1410 unsigned height = 0; |
1411 unsigned height_in_bytes = height * kPointerSize; | 1411 unsigned height_in_bytes = height * kPointerSize; |
1412 const char* kind = is_setter_stub_frame ? "setter" : "getter"; | 1412 const char* kind = is_setter_stub_frame ? "setter" : "getter"; |
1413 if (trace_scope_ != NULL) { | 1413 if (trace_scope_ != NULL) { |
1414 PrintF(trace_scope_->file(), | 1414 PrintF(trace_scope_->file(), |
1415 " translating %s stub => height=%u\n", kind, height_in_bytes); | 1415 " translating %s stub => height=%u\n", kind, height_in_bytes); |
1416 } | 1416 } |
1417 | 1417 |
1418 // We need 1 stack entry for the return address and enough entries for the | 1418 // We need 1 stack entry for the return address and enough entries for the |
1419 // StackFrame::INTERNAL (FP, context, frame type, code object and constant | 1419 // StackFrame::INTERNAL (FP, context, frame type, code object and constant |
1420 // pool (if enabled)- see MacroAssembler::EnterFrame). | 1420 // pool (if FLAG_enable_ool_constant_pool)- see MacroAssembler::EnterFrame). |
1421 // For a setter stub frame we need one additional entry for the implicit | 1421 // For a setter stub frame we need one additional entry for the implicit |
1422 // return value, see StoreStubCompiler::CompileStoreViaSetter. | 1422 // return value, see StoreStubCompiler::CompileStoreViaSetter. |
1423 unsigned fixed_frame_entries = | 1423 unsigned fixed_frame_entries = |
1424 (StandardFrameConstants::kFixedFrameSize / kPointerSize) + 1 + | 1424 (StandardFrameConstants::kFixedFrameSize / kPointerSize) + 1 + |
1425 (is_setter_stub_frame ? 1 : 0); | 1425 (is_setter_stub_frame ? 1 : 0); |
1426 unsigned fixed_frame_size = fixed_frame_entries * kPointerSize; | 1426 unsigned fixed_frame_size = fixed_frame_entries * kPointerSize; |
1427 unsigned output_frame_size = height_in_bytes + fixed_frame_size; | 1427 unsigned output_frame_size = height_in_bytes + fixed_frame_size; |
1428 | 1428 |
1429 // Allocate and store the output frame description. | 1429 // Allocate and store the output frame description. |
1430 FrameDescription* output_frame = | 1430 FrameDescription* output_frame = |
(...skipping 29 matching lines...) Expand all Loading... |
1460 output_frame->SetCallerFp(output_offset, value); | 1460 output_frame->SetCallerFp(output_offset, value); |
1461 intptr_t fp_value = top_address + output_offset; | 1461 intptr_t fp_value = top_address + output_offset; |
1462 output_frame->SetFp(fp_value); | 1462 output_frame->SetFp(fp_value); |
1463 if (trace_scope_ != NULL) { | 1463 if (trace_scope_ != NULL) { |
1464 PrintF(trace_scope_->file(), | 1464 PrintF(trace_scope_->file(), |
1465 " 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR | 1465 " 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR |
1466 " ; caller's fp\n", | 1466 " ; caller's fp\n", |
1467 fp_value, output_offset, value); | 1467 fp_value, output_offset, value); |
1468 } | 1468 } |
1469 | 1469 |
1470 if (FLAG_enable_embedded_constant_pool) { | 1470 if (FLAG_enable_ool_constant_pool) { |
1471 // Read the caller's constant pool from the previous frame. | 1471 // Read the caller's constant pool from the previous frame. |
1472 output_offset -= kPointerSize; | 1472 output_offset -= kPointerSize; |
1473 value = output_[frame_index - 1]->GetConstantPool(); | 1473 value = output_[frame_index - 1]->GetConstantPool(); |
1474 output_frame->SetCallerConstantPool(output_offset, value); | 1474 output_frame->SetCallerConstantPool(output_offset, value); |
1475 if (trace_scope_) { | 1475 if (trace_scope_) { |
1476 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1476 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
1477 V8PRIxPTR " ; caller's constant pool\n", | 1477 V8PRIxPTR " ; caller's constant pool\n", |
1478 top_address + output_offset, output_offset, value); | 1478 top_address + output_offset, output_offset, value); |
1479 } | 1479 } |
1480 } | 1480 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 } | 1527 } |
1528 | 1528 |
1529 CHECK_EQ(0u, output_offset); | 1529 CHECK_EQ(0u, output_offset); |
1530 | 1530 |
1531 Smi* offset = is_setter_stub_frame ? | 1531 Smi* offset = is_setter_stub_frame ? |
1532 isolate_->heap()->setter_stub_deopt_pc_offset() : | 1532 isolate_->heap()->setter_stub_deopt_pc_offset() : |
1533 isolate_->heap()->getter_stub_deopt_pc_offset(); | 1533 isolate_->heap()->getter_stub_deopt_pc_offset(); |
1534 intptr_t pc = reinterpret_cast<intptr_t>( | 1534 intptr_t pc = reinterpret_cast<intptr_t>( |
1535 accessor_stub->instruction_start() + offset->value()); | 1535 accessor_stub->instruction_start() + offset->value()); |
1536 output_frame->SetPc(pc); | 1536 output_frame->SetPc(pc); |
1537 if (FLAG_enable_embedded_constant_pool) { | 1537 if (FLAG_enable_ool_constant_pool) { |
1538 intptr_t constant_pool_value = | 1538 intptr_t constant_pool_value = |
1539 reinterpret_cast<intptr_t>(accessor_stub->constant_pool()); | 1539 reinterpret_cast<intptr_t>(accessor_stub->constant_pool()); |
1540 output_frame->SetConstantPool(constant_pool_value); | 1540 output_frame->SetConstantPool(constant_pool_value); |
1541 } | 1541 } |
1542 } | 1542 } |
1543 | 1543 |
1544 | 1544 |
1545 void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator, | 1545 void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator, |
1546 int frame_index) { | 1546 int frame_index) { |
1547 // | 1547 // |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1634 intptr_t frame_ptr = input_->GetRegister(fp_reg.code()); | 1634 intptr_t frame_ptr = input_->GetRegister(fp_reg.code()); |
1635 output_frame->SetRegister(fp_reg.code(), frame_ptr); | 1635 output_frame->SetRegister(fp_reg.code(), frame_ptr); |
1636 output_frame->SetFp(frame_ptr); | 1636 output_frame->SetFp(frame_ptr); |
1637 if (trace_scope_ != NULL) { | 1637 if (trace_scope_ != NULL) { |
1638 PrintF(trace_scope_->file(), | 1638 PrintF(trace_scope_->file(), |
1639 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1639 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
1640 V8PRIxPTR " ; caller's fp\n", | 1640 V8PRIxPTR " ; caller's fp\n", |
1641 top_address + output_frame_offset, output_frame_offset, value); | 1641 top_address + output_frame_offset, output_frame_offset, value); |
1642 } | 1642 } |
1643 | 1643 |
1644 if (FLAG_enable_embedded_constant_pool) { | 1644 if (FLAG_enable_ool_constant_pool) { |
1645 // Read the caller's constant pool from the input frame. | 1645 // Read the caller's constant pool from the input frame. |
1646 input_frame_offset -= kPointerSize; | 1646 input_frame_offset -= kPointerSize; |
1647 value = input_->GetFrameSlot(input_frame_offset); | 1647 value = input_->GetFrameSlot(input_frame_offset); |
1648 output_frame_offset -= kPointerSize; | 1648 output_frame_offset -= kPointerSize; |
1649 output_frame->SetCallerConstantPool(output_frame_offset, value); | 1649 output_frame->SetCallerConstantPool(output_frame_offset, value); |
1650 if (trace_scope_) { | 1650 if (trace_scope_) { |
1651 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1651 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
1652 V8PRIxPTR " ; caller's constant_pool\n", | 1652 V8PRIxPTR " ; caller's constant_pool\n", |
1653 top_address + output_frame_offset, output_frame_offset, value); | 1653 top_address + output_frame_offset, output_frame_offset, value); |
1654 } | 1654 } |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1776 SetPlatformCompiledStubRegisters(output_frame, &descriptor); | 1776 SetPlatformCompiledStubRegisters(output_frame, &descriptor); |
1777 | 1777 |
1778 // Compute this frame's PC, state, and continuation. | 1778 // Compute this frame's PC, state, and continuation. |
1779 Code* trampoline = NULL; | 1779 Code* trampoline = NULL; |
1780 StubFunctionMode function_mode = descriptor.function_mode(); | 1780 StubFunctionMode function_mode = descriptor.function_mode(); |
1781 StubFailureTrampolineStub(isolate_, | 1781 StubFailureTrampolineStub(isolate_, |
1782 function_mode).FindCodeInCache(&trampoline); | 1782 function_mode).FindCodeInCache(&trampoline); |
1783 DCHECK(trampoline != NULL); | 1783 DCHECK(trampoline != NULL); |
1784 output_frame->SetPc(reinterpret_cast<intptr_t>( | 1784 output_frame->SetPc(reinterpret_cast<intptr_t>( |
1785 trampoline->instruction_start())); | 1785 trampoline->instruction_start())); |
1786 if (FLAG_enable_embedded_constant_pool) { | 1786 if (FLAG_enable_ool_constant_pool) { |
1787 Register constant_pool_reg = | 1787 Register constant_pool_reg = |
1788 StubFailureTrampolineFrame::constant_pool_pointer_register(); | 1788 StubFailureTrampolineFrame::constant_pool_pointer_register(); |
1789 intptr_t constant_pool_value = | 1789 intptr_t constant_pool_value = |
1790 reinterpret_cast<intptr_t>(trampoline->constant_pool()); | 1790 reinterpret_cast<intptr_t>(trampoline->constant_pool()); |
1791 output_frame->SetConstantPool(constant_pool_value); | 1791 output_frame->SetConstantPool(constant_pool_value); |
1792 output_frame->SetRegister(constant_pool_reg.code(), constant_pool_value); | 1792 output_frame->SetRegister(constant_pool_reg.code(), constant_pool_value); |
1793 } | 1793 } |
1794 output_frame->SetState(Smi::FromInt(FullCodeGenerator::NO_REGISTERS)); | 1794 output_frame->SetState(Smi::FromInt(FullCodeGenerator::NO_REGISTERS)); |
1795 Code* notify_failure = | 1795 Code* notify_failure = |
1796 isolate_->builtins()->builtin(Builtins::kNotifyStubFailureSaveDoubles); | 1796 isolate_->builtins()->builtin(Builtins::kNotifyStubFailureSaveDoubles); |
(...skipping 2045 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3842 last_position = raw_position ? SourcePosition::FromRaw(raw_position) | 3842 last_position = raw_position ? SourcePosition::FromRaw(raw_position) |
3843 : SourcePosition::Unknown(); | 3843 : SourcePosition::Unknown(); |
3844 } else if (info->rmode() == RelocInfo::DEOPT_REASON) { | 3844 } else if (info->rmode() == RelocInfo::DEOPT_REASON) { |
3845 last_reason = static_cast<Deoptimizer::DeoptReason>(info->data()); | 3845 last_reason = static_cast<Deoptimizer::DeoptReason>(info->data()); |
3846 } | 3846 } |
3847 } | 3847 } |
3848 return DeoptInfo(SourcePosition::Unknown(), NULL, Deoptimizer::kNoReason); | 3848 return DeoptInfo(SourcePosition::Unknown(), NULL, Deoptimizer::kNoReason); |
3849 } | 3849 } |
3850 } // namespace internal | 3850 } // namespace internal |
3851 } // namespace v8 | 3851 } // namespace v8 |
OLD | NEW |