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

Side by Side Diff: src/frames.cc

Issue 2803853005: Inline Array.prototype.forEach in TurboFan (Closed)
Patch Set: Remove stray changes Created 3 years, 6 months 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/frames.h" 5 #include "src/frames.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 return NONE; 497 return NONE;
498 } 498 }
499 } 499 }
500 500
501 DCHECK(StackFrame::IsTypeMarker(marker)); 501 DCHECK(StackFrame::IsTypeMarker(marker));
502 StackFrame::Type candidate = StackFrame::MarkerToType(marker); 502 StackFrame::Type candidate = StackFrame::MarkerToType(marker);
503 switch (candidate) { 503 switch (candidate) {
504 case ENTRY: 504 case ENTRY:
505 case ENTRY_CONSTRUCT: 505 case ENTRY_CONSTRUCT:
506 case EXIT: 506 case EXIT:
507 case BUILTIN_CONTINUATION:
508 case JAVA_SCRIPT_BUILTIN_CONTINUATION:
507 case BUILTIN_EXIT: 509 case BUILTIN_EXIT:
508 case STUB: 510 case STUB:
509 case STUB_FAILURE_TRAMPOLINE: 511 case STUB_FAILURE_TRAMPOLINE:
510 case INTERNAL: 512 case INTERNAL:
511 case CONSTRUCT: 513 case CONSTRUCT:
512 case ARGUMENTS_ADAPTOR: 514 case ARGUMENTS_ADAPTOR:
513 case WASM_TO_JS: 515 case WASM_TO_JS:
514 case WASM_COMPILED: 516 case WASM_COMPILED:
515 return candidate; 517 return candidate;
516 case JS_TO_WASM: 518 case JS_TO_WASM:
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 // Determine the fixed header and spill slot area size. 797 // Determine the fixed header and spill slot area size.
796 int frame_header_size = StandardFrameConstants::kFixedFrameSizeFromFp; 798 int frame_header_size = StandardFrameConstants::kFixedFrameSizeFromFp;
797 intptr_t marker = 799 intptr_t marker =
798 Memory::intptr_at(fp() + CommonFrameConstants::kContextOrFrameTypeOffset); 800 Memory::intptr_at(fp() + CommonFrameConstants::kContextOrFrameTypeOffset);
799 if (StackFrame::IsTypeMarker(marker)) { 801 if (StackFrame::IsTypeMarker(marker)) {
800 StackFrame::Type candidate = StackFrame::MarkerToType(marker); 802 StackFrame::Type candidate = StackFrame::MarkerToType(marker);
801 switch (candidate) { 803 switch (candidate) {
802 case ENTRY: 804 case ENTRY:
803 case ENTRY_CONSTRUCT: 805 case ENTRY_CONSTRUCT:
804 case EXIT: 806 case EXIT:
807 case BUILTIN_CONTINUATION:
808 case JAVA_SCRIPT_BUILTIN_CONTINUATION:
805 case BUILTIN_EXIT: 809 case BUILTIN_EXIT:
806 case STUB_FAILURE_TRAMPOLINE: 810 case STUB_FAILURE_TRAMPOLINE:
807 case ARGUMENTS_ADAPTOR: 811 case ARGUMENTS_ADAPTOR:
808 case STUB: 812 case STUB:
809 case INTERNAL: 813 case INTERNAL:
810 case CONSTRUCT: 814 case CONSTRUCT:
811 case JS_TO_WASM: 815 case JS_TO_WASM:
812 case WASM_TO_JS: 816 case WASM_TO_JS:
813 case WASM_COMPILED: 817 case WASM_COMPILED:
814 case WASM_INTERPRETER_ENTRY: 818 case WASM_INTERPRETER_ENTRY:
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
1370 DCHECK_EQ(Translation::BEGIN, frame_opcode); 1374 DCHECK_EQ(Translation::BEGIN, frame_opcode);
1371 it.Next(); // Drop frame count. 1375 it.Next(); // Drop frame count.
1372 int jsframe_count = it.Next(); 1376 int jsframe_count = it.Next();
1373 1377
1374 // We create the summary in reverse order because the frames 1378 // We create the summary in reverse order because the frames
1375 // in the deoptimization translation are ordered bottom-to-top. 1379 // in the deoptimization translation are ordered bottom-to-top.
1376 bool is_constructor = IsConstructor(); 1380 bool is_constructor = IsConstructor();
1377 while (jsframe_count != 0) { 1381 while (jsframe_count != 0) {
1378 frame_opcode = static_cast<Translation::Opcode>(it.Next()); 1382 frame_opcode = static_cast<Translation::Opcode>(it.Next());
1379 if (frame_opcode == Translation::JS_FRAME || 1383 if (frame_opcode == Translation::JS_FRAME ||
1380 frame_opcode == Translation::INTERPRETED_FRAME) { 1384 frame_opcode == Translation::INTERPRETED_FRAME ||
1385 frame_opcode == Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) {
1381 jsframe_count--; 1386 jsframe_count--;
1382 BailoutId const bailout_id = BailoutId(it.Next()); 1387 BailoutId const bailout_id = BailoutId(it.Next());
1383 SharedFunctionInfo* const shared_info = 1388 SharedFunctionInfo* const shared_info =
1384 SharedFunctionInfo::cast(literal_array->get(it.Next())); 1389 SharedFunctionInfo::cast(literal_array->get(it.Next()));
1385 it.Next(); // Skip height. 1390 it.Next(); // Skip height.
1386 1391
1387 // The translation commands are ordered and the function is always 1392 // The translation commands are ordered and the function is always
1388 // at the first position, and the receiver is next. 1393 // at the first position, and the receiver is next.
1389 Translation::Opcode opcode = static_cast<Translation::Opcode>(it.Next()); 1394 Translation::Opcode opcode = static_cast<Translation::Opcode>(it.Next());
1390 1395
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1422 1427
1423 unsigned code_offset; 1428 unsigned code_offset;
1424 if (frame_opcode == Translation::JS_FRAME) { 1429 if (frame_opcode == Translation::JS_FRAME) {
1425 Code* code = shared_info->code(); 1430 Code* code = shared_info->code();
1426 DeoptimizationOutputData* const output_data = 1431 DeoptimizationOutputData* const output_data =
1427 DeoptimizationOutputData::cast(code->deoptimization_data()); 1432 DeoptimizationOutputData::cast(code->deoptimization_data());
1428 unsigned const entry = 1433 unsigned const entry =
1429 Deoptimizer::GetOutputInfo(output_data, bailout_id, shared_info); 1434 Deoptimizer::GetOutputInfo(output_data, bailout_id, shared_info);
1430 code_offset = FullCodeGenerator::PcField::decode(entry); 1435 code_offset = FullCodeGenerator::PcField::decode(entry);
1431 abstract_code = AbstractCode::cast(code); 1436 abstract_code = AbstractCode::cast(code);
1437 } else if (frame_opcode ==
1438 Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) {
1439 code_offset = 0;
1440 abstract_code = AbstractCode::cast(isolate()->builtins()->builtin(
1441 Builtins::GetBuiltinFromBailoutId(bailout_id)));
1432 } else { 1442 } else {
1433 DCHECK_EQ(frame_opcode, Translation::INTERPRETED_FRAME); 1443 DCHECK_EQ(frame_opcode, Translation::INTERPRETED_FRAME);
1434 code_offset = bailout_id.ToInt(); // Points to current bytecode. 1444 code_offset = bailout_id.ToInt(); // Points to current bytecode.
1435 abstract_code = AbstractCode::cast(shared_info->bytecode_array()); 1445 abstract_code = AbstractCode::cast(shared_info->bytecode_array());
1436 } 1446 }
1437 FrameSummary::JavaScriptFrameSummary summary(isolate(), receiver, 1447 FrameSummary::JavaScriptFrameSummary summary(isolate(), receiver,
1438 function, abstract_code, 1448 function, abstract_code,
1439 code_offset, is_constructor); 1449 code_offset, is_constructor);
1440 frames->Add(summary); 1450 frames->Add(summary);
1441 is_constructor = false; 1451 is_constructor = false;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 Translation::Opcode opcode = static_cast<Translation::Opcode>(it.Next()); 1540 Translation::Opcode opcode = static_cast<Translation::Opcode>(it.Next());
1531 DCHECK_EQ(Translation::BEGIN, opcode); 1541 DCHECK_EQ(Translation::BEGIN, opcode);
1532 it.Next(); // Skip frame count. 1542 it.Next(); // Skip frame count.
1533 int jsframe_count = it.Next(); 1543 int jsframe_count = it.Next();
1534 1544
1535 // We insert the frames in reverse order because the frames 1545 // We insert the frames in reverse order because the frames
1536 // in the deoptimization translation are ordered bottom-to-top. 1546 // in the deoptimization translation are ordered bottom-to-top.
1537 while (jsframe_count != 0) { 1547 while (jsframe_count != 0) {
1538 opcode = static_cast<Translation::Opcode>(it.Next()); 1548 opcode = static_cast<Translation::Opcode>(it.Next());
1539 if (opcode == Translation::JS_FRAME || 1549 if (opcode == Translation::JS_FRAME ||
1540 opcode == Translation::INTERPRETED_FRAME) { 1550 opcode == Translation::INTERPRETED_FRAME ||
1551 opcode == Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) {
1541 it.Next(); // Skip bailout id. 1552 it.Next(); // Skip bailout id.
1542 jsframe_count--; 1553 jsframe_count--;
1543 1554
1544 // The second operand of the frame points to the function. 1555 // The second operand of the frame points to the function.
1545 Object* shared = literal_array->get(it.Next()); 1556 Object* shared = literal_array->get(it.Next());
1546 functions->Add(SharedFunctionInfo::cast(shared)); 1557 functions->Add(SharedFunctionInfo::cast(shared));
1547 1558
1548 // Skip over remaining operands to advance to the next opcode. 1559 // Skip over remaining operands to advance to the next opcode.
1549 it.Skip(Translation::NumberOfOperandsFor(opcode) - 2); 1560 it.Skip(Translation::NumberOfOperandsFor(opcode) - 2);
1550 } else { 1561 } else {
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
2262 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { 2273 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) {
2263 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); 2274 StackFrame* frame = AllocateFrameCopy(it.frame(), zone);
2264 list.Add(frame, zone); 2275 list.Add(frame, zone);
2265 } 2276 }
2266 return list.ToVector(); 2277 return list.ToVector();
2267 } 2278 }
2268 2279
2269 2280
2270 } // namespace internal 2281 } // namespace internal
2271 } // namespace v8 2282 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698