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

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: 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 844 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 return *this; 855 return *this;
856 } 856 }
857 857
858 858
859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register receiver) { 859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register receiver) {
860 Output(Bytecode::kForInPrepare, receiver.ToOperand()); 860 Output(Bytecode::kForInPrepare, receiver.ToOperand());
861 return *this; 861 return *this;
862 } 862 }
863 863
864 864
865 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register for_in_state, 865 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver,
866 Register index) { 866 Register index,
867 Output(Bytecode::kForInNext, for_in_state.ToOperand(), index.ToOperand()); 867 Register cache_type,
868 Register cache_array) {
869 Output(Bytecode::kForInNext, receiver.ToOperand(), index.ToOperand(),
870 cache_type.ToOperand(), cache_array.ToOperand());
868 return *this; 871 return *this;
869 } 872 }
870 873
871 874
872 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register for_in_state) { 875 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index,
873 Output(Bytecode::kForInDone, for_in_state.ToOperand()); 876 Register cache_length) {
877 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand());
878
874 return *this; 879 return *this;
875 } 880 }
876 881
882
883 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) {
884 Output(Bytecode::kForInStep, index.ToOperand());
885 return *this;
886 }
887
877 888
878 void BytecodeArrayBuilder::LeaveBasicBlock() { 889 void BytecodeArrayBuilder::LeaveBasicBlock() {
879 last_block_end_ = bytecodes()->size(); 890 last_block_end_ = bytecodes()->size();
880 exit_seen_in_block_ = false; 891 exit_seen_in_block_ = false;
881 } 892 }
882 893
883 894
884 void BytecodeArrayBuilder::EnsureReturn() { 895 void BytecodeArrayBuilder::EnsureReturn() {
885 if (!exit_seen_in_block_) { 896 if (!exit_seen_in_block_) {
886 LoadUndefined(); 897 LoadUndefined();
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
1428 DCHECK_GT(next_consecutive_count_, 0); 1439 DCHECK_GT(next_consecutive_count_, 0);
1429 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); 1440 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_);
1430 allocated_.push_back(next_consecutive_register_); 1441 allocated_.push_back(next_consecutive_register_);
1431 next_consecutive_count_--; 1442 next_consecutive_count_--;
1432 return Register(next_consecutive_register_++); 1443 return Register(next_consecutive_register_++);
1433 } 1444 }
1434 1445
1435 } // namespace interpreter 1446 } // namespace interpreter
1436 } // namespace internal 1447 } // namespace internal
1437 } // namespace v8 1448 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698