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

Unified Diff: src/interpreter/bytecode-register.h

Issue 2382273002: [Interpreter]: Add kRegList operand type for register list operands. (Closed)
Patch Set: Address comments Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/interpreter/bytecode-operands.h ('k') | src/interpreter/bytecode-register.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/interpreter/bytecode-register.h
diff --git a/src/interpreter/bytecode-register.h b/src/interpreter/bytecode-register.h
index b698da6a74b3b0fc0ea48109498dd2997d971af3..d698d4049d55ea22d0988ceae8eeae586a57b637 100644
--- a/src/interpreter/bytecode-register.h
+++ b/src/interpreter/bytecode-register.h
@@ -66,7 +66,7 @@ class Register final {
Register reg4 = Register(),
Register reg5 = Register());
- std::string ToString(int parameter_count);
+ std::string ToString(int parameter_count) const;
bool operator==(const Register& other) const {
return index() == other.index();
@@ -98,6 +98,40 @@ class Register final {
int index_;
};
+class RegisterList {
+ public:
+ RegisterList() : first_reg_index_(Register().index()), register_count_(0) {}
+ RegisterList(int first_reg_index, int register_count)
+ : first_reg_index_(first_reg_index), register_count_(register_count) {}
+
+ // Returns a new RegisterList which is a truncated version of this list, with
+ // |count| registers.
+ const RegisterList Truncate(int new_count) {
+ DCHECK_GE(new_count, 0);
+ DCHECK_LT(new_count, register_count_);
+ return RegisterList(first_reg_index_, new_count);
+ }
+
+ const Register operator[](size_t i) const {
+ DCHECK_LT(static_cast<int>(i), register_count_);
+ return Register(first_reg_index_ + static_cast<int>(i));
+ }
+
+ const Register first_register() const {
+ return (register_count() == 0) ? Register(0) : (*this)[0];
+ }
+
+ const Register last_register() const {
+ return (register_count() == 0) ? Register(0) : (*this)[register_count_ - 1];
+ }
+
+ int register_count() const { return register_count_; }
+
+ private:
+ int first_reg_index_;
+ int register_count_;
+};
+
} // namespace interpreter
} // namespace internal
} // namespace v8
« no previous file with comments | « src/interpreter/bytecode-operands.h ('k') | src/interpreter/bytecode-register.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698