V8 Project
v8::internal::compiler::PrepareUsesVisitor Class Reference
+ Inheritance diagram for v8::internal::compiler::PrepareUsesVisitor:
+ Collaboration diagram for v8::internal::compiler::PrepareUsesVisitor:

Public Member Functions

 PrepareUsesVisitor (Scheduler *scheduler)
 
GenericGraphVisit::Control Pre (Node *node)
 
void PostEdge (Node *from, int index, Node *to)
 
- Public Member Functions inherited from v8::internal::compiler::GenericGraphVisit::NullNodeVisitor< B, S >
Control Pre (GenericNode< B, S > *node)
 
Control Post (GenericNode< B, S > *node)
 
void PreEdge (GenericNode< B, S > *from, int index, GenericNode< B, S > *to)
 
void PostEdge (GenericNode< B, S > *from, int index, GenericNode< B, S > *to)
 

Private Attributes

Schedulerscheduler_
 
Scheduleschedule_
 

Detailed Description

Definition at line 425 of file scheduler.cc.

Constructor & Destructor Documentation

◆ PrepareUsesVisitor()

v8::internal::compiler::PrepareUsesVisitor::PrepareUsesVisitor ( Scheduler scheduler)
inlineexplicit

Definition at line 427 of file scheduler.cc.

428  : scheduler_(scheduler), schedule_(scheduler->schedule_) {}

Member Function Documentation

◆ PostEdge()

void v8::internal::compiler::PrepareUsesVisitor::PostEdge ( Node *  from,
int  index,
Node *  to 
)
inline

Definition at line 451 of file scheduler.cc.

451  {
452  // If the edge is from an unscheduled node, then tally it in the use count
453  // for all of its inputs. The same criterion will be used in ScheduleLate
454  // for decrementing use counts.
455  if (!schedule_->IsScheduled(from)) {
458  Trace(" Use count of #%d:%s (used by #%d:%s)++ = %d\n", to->id(),
459  to->op()->mnemonic(), from->id(), from->op()->mnemonic(),
461  }
462  }
bool IsScheduled(Node *node)
Definition: schedule.h:178
SchedulerData * GetData(Node *node)
Definition: scheduler.h:59
Placement GetPlacement(Node *node)
Definition: scheduler.cc:262
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in only print modified registers Trace simulator debug messages Implied by trace sim abort randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot A filename with extra code to be included in the A file to write the raw snapshot bytes to(mksnapshot only)") DEFINE_STRING(raw_context_file
#define DCHECK_NE(v1, v2)
Definition: logging.h:207
static void Trace(const char *msg,...)
Definition: scheduler.cc:21

References DCHECK_NE, v8::internal::compiler::Scheduler::GetData(), v8::internal::compiler::Scheduler::GetPlacement(), v8::internal::compiler::Schedule::IsScheduled(), v8::internal::compiler::Scheduler::kFixed, schedule_, scheduler_, to(), v8::internal::compiler::Trace(), and v8::internal::compiler::Scheduler::SchedulerData::unscheduled_count_.

+ Here is the call graph for this function:

◆ Pre()

GenericGraphVisit::Control v8::internal::compiler::PrepareUsesVisitor::Pre ( Node *  node)
inline

Definition at line 430 of file scheduler.cc.

430  {
431  if (scheduler_->GetPlacement(node) == Scheduler::kFixed) {
432  // Fixed nodes are always roots for schedule late.
433  scheduler_->schedule_root_nodes_.push_back(node);
434  if (!schedule_->IsScheduled(node)) {
435  // Make sure root nodes are scheduled in their respective blocks.
436  Trace(" Scheduling fixed position node #%d:%s\n", node->id(),
437  node->op()->mnemonic());
438  IrOpcode::Value opcode = node->opcode();
439  BasicBlock* block =
440  opcode == IrOpcode::kParameter
441  ? schedule_->start()
443  DCHECK(block != NULL);
444  schedule_->AddNode(block, node);
445  }
446  }
447 
449  }
static Node * GetControlInput(Node *node, int index=0)
void AddNode(BasicBlock *block, Node *node)
Definition: schedule.h:220
BasicBlock * block(Node *node) const
Definition: schedule.h:171
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL
#define DCHECK(condition)
Definition: logging.h:205

References v8::internal::compiler::Schedule::AddNode(), v8::internal::compiler::Schedule::block(), v8::internal::compiler::GenericGraphVisit::CONTINUE, DCHECK, v8::internal::compiler::NodeProperties::GetControlInput(), v8::internal::compiler::Scheduler::GetPlacement(), v8::internal::compiler::Schedule::IsScheduled(), v8::internal::compiler::Scheduler::kFixed, NULL, schedule_, v8::internal::compiler::Scheduler::schedule_root_nodes_, scheduler_, v8::internal::compiler::GenericGraph< V >::start(), and v8::internal::compiler::Trace().

+ Here is the call graph for this function:

Member Data Documentation

◆ schedule_

Schedule* v8::internal::compiler::PrepareUsesVisitor::schedule_
private

Definition at line 466 of file scheduler.cc.

Referenced by PostEdge(), and Pre().

◆ scheduler_

Scheduler* v8::internal::compiler::PrepareUsesVisitor::scheduler_
private

Definition at line 465 of file scheduler.cc.

Referenced by PostEdge(), and Pre().


The documentation for this class was generated from the following file: