summaryrefslogtreecommitdiff
path: root/deps/v8/src/signature.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/signature.h')
-rw-r--r--deps/v8/src/signature.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/deps/v8/src/signature.h b/deps/v8/src/signature.h
index 60950a93bb..6890699ab4 100644
--- a/deps/v8/src/signature.h
+++ b/deps/v8/src/signature.h
@@ -27,12 +27,12 @@ class Signature : public ZoneObject {
size_t parameter_count() const { return parameter_count_; }
T GetParam(size_t index) const {
- DCHECK(index < parameter_count_);
+ DCHECK_LT(index, parameter_count_);
return reps_[return_count_ + index];
}
T GetReturn(size_t index = 0) const {
- DCHECK(index < return_count_);
+ DCHECK_LT(index, return_count_);
return reps_[index];
}
@@ -71,16 +71,24 @@ class Signature : public ZoneObject {
const size_t parameter_count_;
void AddReturn(T val) {
- DCHECK(rcursor_ < return_count_);
+ DCHECK_LT(rcursor_, return_count_);
buffer_[rcursor_++] = val;
}
+
void AddParam(T val) {
- DCHECK(pcursor_ < parameter_count_);
+ DCHECK_LT(pcursor_, parameter_count_);
buffer_[return_count_ + pcursor_++] = val;
}
+
+ void AddParamAt(size_t index, T val) {
+ DCHECK_LT(index, parameter_count_);
+ buffer_[return_count_ + index] = val;
+ pcursor_ = std::max(pcursor_, index + 1);
+ }
+
Signature<T>* Build() {
- DCHECK(rcursor_ == return_count_);
- DCHECK(pcursor_ == parameter_count_);
+ DCHECK_EQ(rcursor_, return_count_);
+ DCHECK_EQ(pcursor_, parameter_count_);
return new (zone_) Signature<T>(return_count_, parameter_count_, buffer_);
}