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

Side by Side Diff: src/compiler/instruction-selector.cc

Issue 1534593004: [turbofan] Pass type information of arguments to EmitPrepareArguments. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Handle float32 and float64 differently. Created 5 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
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/mips/instruction-selector-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/compiler/instruction-selector.h" 5 #include "src/compiler/instruction-selector.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/adapters.h" 9 #include "src/base/adapters.h"
10 #include "src/compiler/instruction-selector-impl.h" 10 #include "src/compiler/instruction-selector-impl.h"
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 pushed_nodes.reserve(input_count()); 390 pushed_nodes.reserve(input_count());
391 instruction_args.reserve(input_count() + frame_state_value_count()); 391 instruction_args.reserve(input_count() + frame_state_value_count());
392 } 392 }
393 393
394 394
395 const CallDescriptor* descriptor; 395 const CallDescriptor* descriptor;
396 FrameStateDescriptor* frame_state_descriptor; 396 FrameStateDescriptor* frame_state_descriptor;
397 NodeVector output_nodes; 397 NodeVector output_nodes;
398 InstructionOperandVector outputs; 398 InstructionOperandVector outputs;
399 InstructionOperandVector instruction_args; 399 InstructionOperandVector instruction_args;
400 NodeVector pushed_nodes; 400 ZoneVector<PushParameter> pushed_nodes;
401 401
402 size_t input_count() const { return descriptor->InputCount(); } 402 size_t input_count() const { return descriptor->InputCount(); }
403 403
404 size_t frame_state_count() const { return descriptor->FrameStateCount(); } 404 size_t frame_state_count() const { return descriptor->FrameStateCount(); }
405 405
406 size_t frame_state_value_count() const { 406 size_t frame_state_value_count() const {
407 return (frame_state_descriptor == NULL) 407 return (frame_state_descriptor == NULL)
408 ? 0 408 ? 0
409 : (frame_state_descriptor->GetTotalSize() + 409 : (frame_state_descriptor->GetTotalSize() +
410 1); // Include deopt id. 410 1); // Include deopt id.
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 if (call_tail) { 532 if (call_tail) {
533 location = LinkageLocation::ConvertToTailCallerLocation( 533 location = LinkageLocation::ConvertToTailCallerLocation(
534 location, stack_param_delta); 534 location, stack_param_delta);
535 } 535 }
536 InstructionOperand op = 536 InstructionOperand op =
537 g.UseLocation(*iter, location, 537 g.UseLocation(*iter, location,
538 buffer->descriptor->GetInputType(index).representation()); 538 buffer->descriptor->GetInputType(index).representation());
539 if (UnallocatedOperand::cast(op).HasFixedSlotPolicy() && !call_tail) { 539 if (UnallocatedOperand::cast(op).HasFixedSlotPolicy() && !call_tail) {
540 int stack_index = -UnallocatedOperand::cast(op).fixed_slot_index() - 1; 540 int stack_index = -UnallocatedOperand::cast(op).fixed_slot_index() - 1;
541 if (static_cast<size_t>(stack_index) >= buffer->pushed_nodes.size()) { 541 if (static_cast<size_t>(stack_index) >= buffer->pushed_nodes.size()) {
542 buffer->pushed_nodes.resize(stack_index + 1, NULL); 542 buffer->pushed_nodes.resize(stack_index + 1);
543 } 543 }
544 DCHECK(!buffer->pushed_nodes[stack_index]); 544 PushParameter parameter(*iter, buffer->descriptor->GetInputType(index));
545 buffer->pushed_nodes[stack_index] = *iter; 545 buffer->pushed_nodes[stack_index] = parameter;
546 pushed_count++; 546 pushed_count++;
547 } else { 547 } else {
548 buffer->instruction_args.push_back(op); 548 buffer->instruction_args.push_back(op);
549 } 549 }
550 } 550 }
551 DCHECK_EQ(input_count, buffer->instruction_args.size() + pushed_count - 551 DCHECK_EQ(input_count, buffer->instruction_args.size() + pushed_count -
552 buffer->frame_state_value_count()); 552 buffer->frame_state_value_count());
553 if (V8_TARGET_ARCH_STORES_RETURN_ADDRESS_ON_STACK && call_tail && 553 if (V8_TARGET_ARCH_STORES_RETURN_ADDRESS_ON_STACK && call_tail &&
554 stack_param_delta != 0) { 554 stack_param_delta != 0) {
555 // For tail calls that change the size of their parameter list and keep 555 // For tail calls that change the size of their parameter list and keep
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 return new (instruction_zone()) FrameStateDescriptor( 1512 return new (instruction_zone()) FrameStateDescriptor(
1513 instruction_zone(), state_info.type(), state_info.bailout_id(), 1513 instruction_zone(), state_info.type(), state_info.bailout_id(),
1514 state_info.state_combine(), parameters, locals, stack, 1514 state_info.state_combine(), parameters, locals, stack,
1515 state_info.shared_info(), outer_state); 1515 state_info.shared_info(), outer_state);
1516 } 1516 }
1517 1517
1518 1518
1519 } // namespace compiler 1519 } // namespace compiler
1520 } // namespace internal 1520 } // namespace internal
1521 } // namespace v8 1521 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/mips/instruction-selector-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698