| 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 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 output_frame->SetFrameSlot(output_offset, value); | 973 output_frame->SetFrameSlot(output_offset, value); |
| 974 output_frame->SetContext(value); | 974 output_frame->SetContext(value); |
| 975 if (is_topmost) output_frame->SetRegister(context_reg.code(), value); | 975 if (is_topmost) output_frame->SetRegister(context_reg.code(), value); |
| 976 if (trace_scope_ != NULL) { | 976 if (trace_scope_ != NULL) { |
| 977 PrintF(trace_scope_->file(), | 977 PrintF(trace_scope_->file(), |
| 978 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 978 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 979 V8PRIxPTR "; context\n", | 979 V8PRIxPTR "; context\n", |
| 980 top_address + output_offset, output_offset, value); | 980 top_address + output_offset, output_offset, value); |
| 981 } | 981 } |
| 982 | 982 |
| 983 if (FLAG_enable_ool_constant_pool) { |
| 984 // For the bottommost output frame the constant pool pointer can be gotten |
| 985 // from the input frame. For subsequent output frames, it can be gotten from |
| 986 // the function. |
| 987 Register constant_pool_reg = |
| 988 JavaScriptFrame::constant_pool_pointer_register(); |
| 989 output_offset -= kPointerSize; |
| 990 input_offset -= kPointerSize; |
| 991 if (is_bottommost) { |
| 992 value = input_->GetFrameSlot(input_offset); |
| 993 } else { |
| 994 value = reinterpret_cast<intptr_t>(function->constant_pool()); |
| 995 } |
| 996 output_frame->SetFrameSlot(output_offset, value); |
| 997 output_frame->SetConstantPool(value); |
| 998 if (is_topmost) output_frame->SetRegister(constant_pool_reg.code(), value); |
| 999 if (trace_scope_) { |
| 1000 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1001 V8PRIxPTR "; constant_pool\n", |
| 1002 top_address + output_offset, output_offset, value); |
| 1003 } |
| 1004 } |
| 1005 |
| 983 // The function was mentioned explicitly in the BEGIN_FRAME. | 1006 // The function was mentioned explicitly in the BEGIN_FRAME. |
| 984 output_offset -= kPointerSize; | 1007 output_offset -= kPointerSize; |
| 985 input_offset -= kPointerSize; | 1008 input_offset -= kPointerSize; |
| 986 value = reinterpret_cast<intptr_t>(function); | 1009 value = reinterpret_cast<intptr_t>(function); |
| 987 // The function for the bottommost output frame should also agree with the | 1010 // The function for the bottommost output frame should also agree with the |
| 988 // input frame. | 1011 // input frame. |
| 989 ASSERT(!is_bottommost || input_->GetFrameSlot(input_offset) == value); | 1012 ASSERT(!is_bottommost || input_->GetFrameSlot(input_offset) == value); |
| 990 output_frame->SetFrameSlot(output_offset, value); | 1013 output_frame->SetFrameSlot(output_offset, value); |
| 991 if (trace_scope_ != NULL) { | 1014 if (trace_scope_ != NULL) { |
| 992 PrintF(trace_scope_->file(), | 1015 PrintF(trace_scope_->file(), |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 intptr_t context = reinterpret_cast<intptr_t>( | 1122 intptr_t context = reinterpret_cast<intptr_t>( |
| 1100 Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)); | 1123 Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)); |
| 1101 output_frame->SetFrameSlot(output_offset, context); | 1124 output_frame->SetFrameSlot(output_offset, context); |
| 1102 if (trace_scope_ != NULL) { | 1125 if (trace_scope_ != NULL) { |
| 1103 PrintF(trace_scope_->file(), | 1126 PrintF(trace_scope_->file(), |
| 1104 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1127 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1105 V8PRIxPTR " ; context (adaptor sentinel)\n", | 1128 V8PRIxPTR " ; context (adaptor sentinel)\n", |
| 1106 top_address + output_offset, output_offset, context); | 1129 top_address + output_offset, output_offset, context); |
| 1107 } | 1130 } |
| 1108 | 1131 |
| 1132 if (FLAG_enable_ool_constant_pool) { |
| 1133 // A marker value is used in place of the constant pool. |
| 1134 output_offset -= kPointerSize; |
| 1135 intptr_t constant_pool = reinterpret_cast<intptr_t>( |
| 1136 Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)); |
| 1137 output_frame->SetFrameSlot(output_offset, constant_pool); |
| 1138 if (trace_scope_) { |
| 1139 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1140 V8PRIxPTR " ; constant_pool (adaptor sentinel)\n", |
| 1141 top_address + output_offset, output_offset, constant_pool); |
| 1142 } |
| 1143 } |
| 1144 |
| 1109 // The function was mentioned explicitly in the ARGUMENTS_ADAPTOR_FRAME. | 1145 // The function was mentioned explicitly in the ARGUMENTS_ADAPTOR_FRAME. |
| 1110 output_offset -= kPointerSize; | 1146 output_offset -= kPointerSize; |
| 1111 value = reinterpret_cast<intptr_t>(function); | 1147 value = reinterpret_cast<intptr_t>(function); |
| 1112 output_frame->SetFrameSlot(output_offset, value); | 1148 output_frame->SetFrameSlot(output_offset, value); |
| 1113 if (trace_scope_ != NULL) { | 1149 if (trace_scope_ != NULL) { |
| 1114 PrintF(trace_scope_->file(), | 1150 PrintF(trace_scope_->file(), |
| 1115 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1151 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1116 V8PRIxPTR " ; function\n", | 1152 V8PRIxPTR " ; function\n", |
| 1117 top_address + output_offset, output_offset, value); | 1153 top_address + output_offset, output_offset, value); |
| 1118 } | 1154 } |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1215 output_offset -= kPointerSize; | 1251 output_offset -= kPointerSize; |
| 1216 value = output_[frame_index - 1]->GetContext(); | 1252 value = output_[frame_index - 1]->GetContext(); |
| 1217 output_frame->SetFrameSlot(output_offset, value); | 1253 output_frame->SetFrameSlot(output_offset, value); |
| 1218 if (trace_scope_ != NULL) { | 1254 if (trace_scope_ != NULL) { |
| 1219 PrintF(trace_scope_->file(), | 1255 PrintF(trace_scope_->file(), |
| 1220 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1256 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1221 V8PRIxPTR " ; context\n", | 1257 V8PRIxPTR " ; context\n", |
| 1222 top_address + output_offset, output_offset, value); | 1258 top_address + output_offset, output_offset, value); |
| 1223 } | 1259 } |
| 1224 | 1260 |
| 1261 if (FLAG_enable_ool_constant_pool) { |
| 1262 // The constant pool pointer can be gotten from the previous frame. |
| 1263 output_offset -= kPointerSize; |
| 1264 value = output_[frame_index - 1]->GetConstantPool(); |
| 1265 output_frame->SetFrameSlot(output_offset, value); |
| 1266 if (trace_scope_) { |
| 1267 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1268 V8PRIxPTR " ; constant pool\n", |
| 1269 top_address + output_offset, output_offset, value); |
| 1270 } |
| 1271 } |
| 1272 |
| 1225 // A marker value is used in place of the function. | 1273 // A marker value is used in place of the function. |
| 1226 output_offset -= kPointerSize; | 1274 output_offset -= kPointerSize; |
| 1227 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::CONSTRUCT)); | 1275 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::CONSTRUCT)); |
| 1228 output_frame->SetFrameSlot(output_offset, value); | 1276 output_frame->SetFrameSlot(output_offset, value); |
| 1229 if (trace_scope_ != NULL) { | 1277 if (trace_scope_ != NULL) { |
| 1230 PrintF(trace_scope_->file(), | 1278 PrintF(trace_scope_->file(), |
| 1231 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1279 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1232 V8PRIxPTR " ; function (construct sentinel)\n", | 1280 V8PRIxPTR " ; function (construct sentinel)\n", |
| 1233 top_address + output_offset, output_offset, value); | 1281 top_address + output_offset, output_offset, value); |
| 1234 } | 1282 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1299 // frame. This means that we have to use a height of 0. | 1347 // frame. This means that we have to use a height of 0. |
| 1300 unsigned height = 0; | 1348 unsigned height = 0; |
| 1301 unsigned height_in_bytes = height * kPointerSize; | 1349 unsigned height_in_bytes = height * kPointerSize; |
| 1302 const char* kind = is_setter_stub_frame ? "setter" : "getter"; | 1350 const char* kind = is_setter_stub_frame ? "setter" : "getter"; |
| 1303 if (trace_scope_ != NULL) { | 1351 if (trace_scope_ != NULL) { |
| 1304 PrintF(trace_scope_->file(), | 1352 PrintF(trace_scope_->file(), |
| 1305 " translating %s stub => height=%u\n", kind, height_in_bytes); | 1353 " translating %s stub => height=%u\n", kind, height_in_bytes); |
| 1306 } | 1354 } |
| 1307 | 1355 |
| 1308 // We need 1 stack entry for the return address and enough entries for the | 1356 // We need 1 stack entry for the return address and enough entries for the |
| 1309 // StackFrame::INTERNAL (FP, context, frame type and code object - see | 1357 // StackFrame::INTERNAL (FP, context, frame type, code object and constant |
| 1310 // MacroAssembler::EnterFrame). For a setter stub frame we need one additional | 1358 // pool (if FLAG_enable_ool_constant_pool)- see MacroAssembler::EnterFrame). |
| 1311 // entry for the implicit return value, see | 1359 // For a setter stub frame we need one additional entry for the implicit |
| 1312 // StoreStubCompiler::CompileStoreViaSetter. | 1360 // return value, see StoreStubCompiler::CompileStoreViaSetter. |
| 1313 unsigned fixed_frame_entries = | 1361 unsigned fixed_frame_entries = |
| 1314 (StandardFrameConstants::kFixedFrameSize / kPointerSize) + 1 + | 1362 (StandardFrameConstants::kFixedFrameSize / kPointerSize) + 1 + |
| 1315 (is_setter_stub_frame ? 1 : 0); | 1363 (is_setter_stub_frame ? 1 : 0); |
| 1316 unsigned fixed_frame_size = fixed_frame_entries * kPointerSize; | 1364 unsigned fixed_frame_size = fixed_frame_entries * kPointerSize; |
| 1317 unsigned output_frame_size = height_in_bytes + fixed_frame_size; | 1365 unsigned output_frame_size = height_in_bytes + fixed_frame_size; |
| 1318 | 1366 |
| 1319 // Allocate and store the output frame description. | 1367 // Allocate and store the output frame description. |
| 1320 FrameDescription* output_frame = | 1368 FrameDescription* output_frame = |
| 1321 new(output_frame_size) FrameDescription(output_frame_size, accessor); | 1369 new(output_frame_size) FrameDescription(output_frame_size, accessor); |
| 1322 output_frame->SetFrameType(StackFrame::INTERNAL); | 1370 output_frame->SetFrameType(StackFrame::INTERNAL); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1361 output_offset -= kPointerSize; | 1409 output_offset -= kPointerSize; |
| 1362 value = output_[frame_index - 1]->GetContext(); | 1410 value = output_[frame_index - 1]->GetContext(); |
| 1363 output_frame->SetFrameSlot(output_offset, value); | 1411 output_frame->SetFrameSlot(output_offset, value); |
| 1364 if (trace_scope_ != NULL) { | 1412 if (trace_scope_ != NULL) { |
| 1365 PrintF(trace_scope_->file(), | 1413 PrintF(trace_scope_->file(), |
| 1366 " 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR | 1414 " 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR |
| 1367 " ; context\n", | 1415 " ; context\n", |
| 1368 top_address + output_offset, output_offset, value); | 1416 top_address + output_offset, output_offset, value); |
| 1369 } | 1417 } |
| 1370 | 1418 |
| 1419 if (FLAG_enable_ool_constant_pool) { |
| 1420 // The constant pool pointer can be gotten from the previous frame. |
| 1421 output_offset -= kPointerSize; |
| 1422 value = output_[frame_index - 1]->GetConstantPool(); |
| 1423 output_frame->SetFrameSlot(output_offset, value); |
| 1424 if (trace_scope_) { |
| 1425 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1426 V8PRIxPTR " ; constant pool\n", |
| 1427 top_address + output_offset, output_offset, value); |
| 1428 } |
| 1429 } |
| 1430 |
| 1371 // A marker value is used in place of the function. | 1431 // A marker value is used in place of the function. |
| 1372 output_offset -= kPointerSize; | 1432 output_offset -= kPointerSize; |
| 1373 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::INTERNAL)); | 1433 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::INTERNAL)); |
| 1374 output_frame->SetFrameSlot(output_offset, value); | 1434 output_frame->SetFrameSlot(output_offset, value); |
| 1375 if (trace_scope_ != NULL) { | 1435 if (trace_scope_ != NULL) { |
| 1376 PrintF(trace_scope_->file(), | 1436 PrintF(trace_scope_->file(), |
| 1377 " 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR | 1437 " 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR |
| 1378 " ; function (%s sentinel)\n", | 1438 " ; function (%s sentinel)\n", |
| 1379 top_address + output_offset, output_offset, value, kind); | 1439 top_address + output_offset, output_offset, value, kind); |
| 1380 } | 1440 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1421 int frame_index) { | 1481 int frame_index) { |
| 1422 // | 1482 // |
| 1423 // FROM TO | 1483 // FROM TO |
| 1424 // | .... | | .... | | 1484 // | .... | | .... | |
| 1425 // +-------------------------+ +-------------------------+ | 1485 // +-------------------------+ +-------------------------+ |
| 1426 // | JSFunction continuation | | JSFunction continuation | | 1486 // | JSFunction continuation | | JSFunction continuation | |
| 1427 // +-------------------------+ +-------------------------+ | 1487 // +-------------------------+ +-------------------------+ |
| 1428 // | | saved frame (FP) | | saved frame (FP) | | 1488 // | | saved frame (FP) | | saved frame (FP) | |
| 1429 // | +=========================+<-fpreg +=========================+<-fpreg | 1489 // | +=========================+<-fpreg +=========================+<-fpreg |
| 1430 // | | JSFunction context | | JSFunction context | | 1490 // | | JSFunction context | | JSFunction context | |
| 1491 // | +-------------------------+ +-------------------------| |
| 1492 // | | JSFunction constant pool| | JSFunction constant pool| |
| 1431 // v +-------------------------+ +-------------------------| | 1493 // v +-------------------------+ +-------------------------| |
| 1432 // | COMPILED_STUB marker | | STUB_FAILURE marker | | 1494 // | COMPILED_STUB marker | | STUB_FAILURE marker | |
| 1433 // +-------------------------+ +-------------------------+ | 1495 // +-------------------------+ +-------------------------+ |
| 1434 // | | | caller args.arguments_ | | 1496 // | | | caller args.arguments_ | |
| 1435 // | ... | +-------------------------+ | 1497 // | ... | +-------------------------+ |
| 1436 // | | | caller args.length_ | | 1498 // | | | caller args.length_ | |
| 1437 // |-------------------------|<-spreg +-------------------------+ | 1499 // |-------------------------|<-spreg +-------------------------+ |
| 1438 // | caller args pointer | | 1500 // | caller args pointer | |
| 1439 // +-------------------------+ | 1501 // +-------------------------+ |
| 1440 // | caller stack param 1 | | 1502 // | caller stack param 1 | |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1522 output_frame->SetRegister(context_reg.code(), value); | 1584 output_frame->SetRegister(context_reg.code(), value); |
| 1523 output_frame_offset -= kPointerSize; | 1585 output_frame_offset -= kPointerSize; |
| 1524 output_frame->SetFrameSlot(output_frame_offset, value); | 1586 output_frame->SetFrameSlot(output_frame_offset, value); |
| 1525 if (trace_scope_ != NULL) { | 1587 if (trace_scope_ != NULL) { |
| 1526 PrintF(trace_scope_->file(), | 1588 PrintF(trace_scope_->file(), |
| 1527 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1589 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1528 V8PRIxPTR " ; context\n", | 1590 V8PRIxPTR " ; context\n", |
| 1529 top_address + output_frame_offset, output_frame_offset, value); | 1591 top_address + output_frame_offset, output_frame_offset, value); |
| 1530 } | 1592 } |
| 1531 | 1593 |
| 1594 if (FLAG_enable_ool_constant_pool) { |
| 1595 // The constant pool pointer can be gotten from the input frame. |
| 1596 Register constant_pool_pointer_register = |
| 1597 StubFailureTrampolineFrame::constant_pool_pointer_register(); |
| 1598 input_frame_offset -= kPointerSize; |
| 1599 value = input_->GetFrameSlot(input_frame_offset); |
| 1600 output_frame->SetRegister(constant_pool_pointer_register.code(), value); |
| 1601 output_frame_offset -= kPointerSize; |
| 1602 output_frame->SetFrameSlot(output_frame_offset, value); |
| 1603 if (trace_scope_) { |
| 1604 PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1605 V8PRIxPTR " ; constant_pool_pointer\n", |
| 1606 top_address + output_frame_offset, output_frame_offset, value); |
| 1607 } |
| 1608 } |
| 1609 |
| 1532 // A marker value is used in place of the function. | 1610 // A marker value is used in place of the function. |
| 1533 output_frame_offset -= kPointerSize; | 1611 output_frame_offset -= kPointerSize; |
| 1534 value = reinterpret_cast<intptr_t>( | 1612 value = reinterpret_cast<intptr_t>( |
| 1535 Smi::FromInt(StackFrame::STUB_FAILURE_TRAMPOLINE)); | 1613 Smi::FromInt(StackFrame::STUB_FAILURE_TRAMPOLINE)); |
| 1536 output_frame->SetFrameSlot(output_frame_offset, value); | 1614 output_frame->SetFrameSlot(output_frame_offset, value); |
| 1537 if (trace_scope_ != NULL) { | 1615 if (trace_scope_ != NULL) { |
| 1538 PrintF(trace_scope_->file(), | 1616 PrintF(trace_scope_->file(), |
| 1539 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" | 1617 " 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
| 1540 V8PRIxPTR " ; function (stub failure sentinel)\n", | 1618 V8PRIxPTR " ; function (stub failure sentinel)\n", |
| 1541 top_address + output_frame_offset, output_frame_offset, value); | 1619 top_address + output_frame_offset, output_frame_offset, value); |
| (...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2447 DoTranslateObject(iterator, object_index, i); | 2525 DoTranslateObject(iterator, object_index, i); |
| 2448 } | 2526 } |
| 2449 return; | 2527 return; |
| 2450 } | 2528 } |
| 2451 } | 2529 } |
| 2452 } | 2530 } |
| 2453 | 2531 |
| 2454 | 2532 |
| 2455 unsigned Deoptimizer::ComputeInputFrameSize() const { | 2533 unsigned Deoptimizer::ComputeInputFrameSize() const { |
| 2456 unsigned fixed_size = ComputeFixedSize(function_); | 2534 unsigned fixed_size = ComputeFixedSize(function_); |
| 2457 // The fp-to-sp delta already takes the context and the function | 2535 // The fp-to-sp delta already takes the context, constant pool pointer and the |
| 2458 // into account so we have to avoid double counting them. | 2536 // function into account so we have to avoid double counting them. |
| 2459 unsigned result = fixed_size + fp_to_sp_delta_ - | 2537 unsigned result = fixed_size + fp_to_sp_delta_ - |
| 2460 StandardFrameConstants::kFixedFrameSizeFromFp; | 2538 StandardFrameConstants::kFixedFrameSizeFromFp; |
| 2461 #ifdef DEBUG | 2539 #ifdef DEBUG |
| 2462 if (compiled_code_->kind() == Code::OPTIMIZED_FUNCTION) { | 2540 if (compiled_code_->kind() == Code::OPTIMIZED_FUNCTION) { |
| 2463 unsigned stack_slots = compiled_code_->stack_slots(); | 2541 unsigned stack_slots = compiled_code_->stack_slots(); |
| 2464 unsigned outgoing_size = ComputeOutgoingArgumentSize(); | 2542 unsigned outgoing_size = ComputeOutgoingArgumentSize(); |
| 2465 ASSERT(result == fixed_size + (stack_slots * kPointerSize) + outgoing_size); | 2543 ASSERT(result == fixed_size + (stack_slots * kPointerSize) + outgoing_size); |
| 2466 } | 2544 } |
| 2467 #endif | 2545 #endif |
| 2468 return result; | 2546 return result; |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2573 } | 2651 } |
| 2574 | 2652 |
| 2575 | 2653 |
| 2576 FrameDescription::FrameDescription(uint32_t frame_size, | 2654 FrameDescription::FrameDescription(uint32_t frame_size, |
| 2577 JSFunction* function) | 2655 JSFunction* function) |
| 2578 : frame_size_(frame_size), | 2656 : frame_size_(frame_size), |
| 2579 function_(function), | 2657 function_(function), |
| 2580 top_(kZapUint32), | 2658 top_(kZapUint32), |
| 2581 pc_(kZapUint32), | 2659 pc_(kZapUint32), |
| 2582 fp_(kZapUint32), | 2660 fp_(kZapUint32), |
| 2583 context_(kZapUint32) { | 2661 context_(kZapUint32), |
| 2662 constant_pool_(kZapUint32) { |
| 2584 // Zap all the registers. | 2663 // Zap all the registers. |
| 2585 for (int r = 0; r < Register::kNumRegisters; r++) { | 2664 for (int r = 0; r < Register::kNumRegisters; r++) { |
| 2586 SetRegister(r, kZapUint32); | 2665 SetRegister(r, kZapUint32); |
| 2587 } | 2666 } |
| 2588 | 2667 |
| 2589 // Zap all the slots. | 2668 // Zap all the slots. |
| 2590 for (unsigned o = 0; o < frame_size; o += kPointerSize) { | 2669 for (unsigned o = 0; o < frame_size; o += kPointerSize) { |
| 2591 SetFrameSlot(o, kZapUint32); | 2670 SetFrameSlot(o, kZapUint32); |
| 2592 } | 2671 } |
| 2593 } | 2672 } |
| (...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3054 | 3133 |
| 3055 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { | 3134 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { |
| 3056 v->VisitPointer(BitCast<Object**>(&function_)); | 3135 v->VisitPointer(BitCast<Object**>(&function_)); |
| 3057 v->VisitPointers(parameters_, parameters_ + parameters_count_); | 3136 v->VisitPointers(parameters_, parameters_ + parameters_count_); |
| 3058 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); | 3137 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); |
| 3059 } | 3138 } |
| 3060 | 3139 |
| 3061 #endif // ENABLE_DEBUGGER_SUPPORT | 3140 #endif // ENABLE_DEBUGGER_SUPPORT |
| 3062 | 3141 |
| 3063 } } // namespace v8::internal | 3142 } } // namespace v8::internal |
| OLD | NEW |