44 SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS);
49 template <
typename IsolateT>
52 template <
typename IsolateT>
65 max_arguments_ = std::max(max_arguments_, max_arguments);
71 return local_register_count_;
80 register_allocator()->maximum_register_count());
81 return register_allocator()->maximum_register_count();
85 Register Parameter(
int parameter_index)
const;
114 ContextSlotMutability immutable);
159 int call_feedback_slot);
183 size_t constant_pool_entry,
232 int slot_index,
int depth);
239 int feedback_slot,
int depth);
249 int slot,
int flags);
273 int literal_index,
int flags);
275 int literal_index,
int flags);
279 int literal_index,
int flags);
287 size_t template_object_description_entry,
int feedback_slot);
512 return register_optimizer_;
516 size_t GetConstantPoolEntry(
const AstRawString* raw_string);
517 size_t GetConstantPoolEntry(
const AstConsString* cons_string);
518 size_t GetConstantPoolEntry(
AstBigInt bigint);
519 size_t GetConstantPoolEntry(
const Scope* scope);
520 size_t GetConstantPoolEntry(
double number);
521#define ENTRY_GETTER(NAME, ...) size_t NAME##ConstantPoolEntry();
526 size_t AllocateDeferredConstantPoolEntry();
528 void SetDeferredConstantPoolEntry(
size_t entry, Handle<Object>
object);
533 SetStatementPosition(stmt->
position());
537 if (!latest_source_info_.is_valid() ||
538 latest_source_info_.source_position() < scope_start) {
547 DCHECK(!latest_source_info_.is_valid());
548 latest_source_info_ = source_info;
553 latest_source_info_.MakeStatementPosition(
position);
557 SetExpressionPosition(expr->
position());
562 if (!latest_source_info_.is_statement()) {
565 latest_source_info_.MakeExpressionPosition(
position);
570 SetStatementPosition(expr->
position());
574 return bytecode_array_writer_.RemainderOfBlockIsDead();
580 uint32_t GetInputOutputRegisterOperand(
Register reg);
581 uint32_t GetInputRegisterListOperand(
RegisterList reg_list);
582 uint32_t GetOutputRegisterListOperand(
RegisterList reg_list);
590 void EmitFunctionStartSourcePosition(
int position);
594 return ®ister_allocator_;
597 return ®ister_allocator_;
608 return feedback_vector_spec_;
614#define DECLARE_BYTECODE_OUTPUT(Name, ...) \
615 template <typename... Operands> \
616 V8_INLINE BytecodeNode Create##Name##Node(Operands... operands); \
617 template <typename... Operands> \
618 V8_INLINE void Output##Name(Operands... operands); \
619 template <typename... Operands> \
620 V8_INLINE void Output##Name(BytecodeLabel* label, Operands... operands);
622#undef DECLARE_OPERAND_TYPE_INFO
624 V8_INLINE void OutputJumpLoop(BytecodeLoopHeader* loop_header,
int loop_depth,
626 V8_INLINE void OutputSwitchOnSmiNoFeedback(BytecodeJumpTable* jump_table);
628 bool RegisterIsValid(Register
reg)
const;
629 bool RegisterListIsValid(RegisterList reg_list)
const;
633 void SetDeferredSourceInfo(BytecodeSourceInfo source_info);
636 void AttachOrEmitDeferredSourceInfo(BytecodeNode* node);
639 void Write(BytecodeNode* node);
640 void WriteJump(BytecodeNode* node, BytecodeLabel*
label);
641 void WriteJumpLoop(BytecodeNode* node, BytecodeLoopHeader* loop_header);
642 void WriteSwitch(BytecodeNode* node, BytecodeJumpTable*
label);
649 template <Bytecode
bytecode, ImplicitRegisterUse implicit_register_use>
650 void PrepareToOutputBytecode();
653 return &bytecode_array_writer_;
656 return &constant_array_builder_;
659 return &constant_array_builder_;
662 return &handler_table_builder_;