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

Side by Side Diff: src/interpreter/bytecode-array-builder.cc

Issue 1531693002: [Interpreter] Implement ForIn in bytecode graph builder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@oth-0009-phi
Patch Set: Fix missing comment. 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
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/interpreter/bytecode-array-builder.h" 5 #include "src/interpreter/bytecode-array-builder.h"
6 6
7 namespace v8 { 7 namespace v8 {
8 namespace internal { 8 namespace internal {
9 namespace interpreter { 9 namespace interpreter {
10 10
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 } 849 }
850 850
851 851
852 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { 852 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() {
853 Output(Bytecode::kReturn); 853 Output(Bytecode::kReturn);
854 exit_seen_in_block_ = true; 854 exit_seen_in_block_ = true;
855 return *this; 855 return *this;
856 } 856 }
857 857
858 858
859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register receiver) { 859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(
860 Output(Bytecode::kForInPrepare, receiver.ToOperand()); 860 Register receiver, Register cache_type, Register cache_array,
861 Register cache_length) {
862 Output(Bytecode::kForInPrepare, receiver.ToOperand(), cache_type.ToOperand(),
863 cache_array.ToOperand(), cache_length.ToOperand());
861 return *this; 864 return *this;
862 } 865 }
863 866
864 867
865 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register for_in_state, 868 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver,
869 Register cache_type,
870 Register cache_array,
866 Register index) { 871 Register index) {
867 Output(Bytecode::kForInNext, for_in_state.ToOperand(), index.ToOperand()); 872 Output(Bytecode::kForInNext, receiver.ToOperand(), cache_type.ToOperand(),
873 cache_array.ToOperand(), index.ToOperand());
868 return *this; 874 return *this;
869 } 875 }
870 876
871 877
872 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register for_in_state) { 878 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index,
873 Output(Bytecode::kForInDone, for_in_state.ToOperand()); 879 Register cache_length) {
880 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand());
881
874 return *this; 882 return *this;
875 } 883 }
876 884
885
886 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) {
887 Output(Bytecode::kForInStep, index.ToOperand());
888 return *this;
889 }
890
877 891
878 void BytecodeArrayBuilder::LeaveBasicBlock() { 892 void BytecodeArrayBuilder::LeaveBasicBlock() {
879 last_block_end_ = bytecodes()->size(); 893 last_block_end_ = bytecodes()->size();
880 exit_seen_in_block_ = false; 894 exit_seen_in_block_ = false;
881 } 895 }
882 896
883 897
884 void BytecodeArrayBuilder::EnsureReturn() { 898 void BytecodeArrayBuilder::EnsureReturn() {
885 if (!exit_seen_in_block_) { 899 if (!exit_seen_in_block_) {
886 LoadUndefined(); 900 LoadUndefined();
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
1428 DCHECK_GT(next_consecutive_count_, 0); 1442 DCHECK_GT(next_consecutive_count_, 0);
1429 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); 1443 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_);
1430 allocated_.push_back(next_consecutive_register_); 1444 allocated_.push_back(next_consecutive_register_);
1431 next_consecutive_count_--; 1445 next_consecutive_count_--;
1432 return Register(next_consecutive_register_++); 1446 return Register(next_consecutive_register_++);
1433 } 1447 }
1434 1448
1435 } // namespace interpreter 1449 } // namespace interpreter
1436 } // namespace internal 1450 } // namespace internal
1437 } // namespace v8 1451 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698