| 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 | 
|---|