Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: src/deoptimizer.cc

Issue 88043002: Out-of-line constant pool on Arm: Stage 3 - Set Constant Pool Pointer on Function Entry (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Re-upload to fix code-review error. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« src/arm/builtins-arm.cc ('K') | « src/deoptimizer.h ('k') | src/frames.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698