5 #ifndef V8_INTERPRETER_BYTECODE_JUMP_TABLE_H_ 6 #define V8_INTERPRETER_BYTECODE_JUMP_TABLE_H_ 8 #include "src/bit-vector.h" 9 #include "src/zone/zone.h" 13 namespace interpreter {
15 class ConstantArrayBuilder;
31 constant_pool_index_(constant_pool_index),
32 switch_bytecode_offset_(kInvalidOffset),
34 case_value_base_(case_value_base) {
37 size_t constant_pool_index()
const {
return constant_pool_index_; }
38 size_t switch_bytecode_offset()
const {
return switch_bytecode_offset_; }
39 int case_value_base()
const {
return case_value_base_; }
40 int size()
const {
return size_; }
42 bool is_bound(
int case_value)
const {
43 DCHECK_GE(case_value, case_value_base_);
44 DCHECK_LT(case_value, case_value_base_ + size());
45 return bound_.Contains(case_value - case_value_base_);
49 size_t ConstantPoolEntryFor(
int case_value) {
50 DCHECK_GE(case_value, case_value_base_);
51 return constant_pool_index_ + case_value - case_value_base_;
55 static const size_t kInvalidIndex =
static_cast<size_t>(-1);
56 static const size_t kInvalidOffset =
static_cast<size_t>(-1);
58 void mark_bound(
int case_value) {
60 DCHECK_GE(case_value, case_value_base_);
61 DCHECK_LT(case_value, case_value_base_ + size());
62 bound_.Add(case_value - case_value_base_);
66 void set_switch_bytecode_offset(
size_t offset) {
67 DCHECK_EQ(switch_bytecode_offset_, kInvalidOffset);
68 switch_bytecode_offset_ = offset;
76 size_t constant_pool_index_;
77 size_t switch_bytecode_offset_;
88 #endif // V8_INTERPRETER_BYTECODE_JUMP_TABLE_H_