V8 Project
v8::internal::compiler::RawMachineAssembler Class Reference

#include <raw-machine-assembler.h>

+ Inheritance diagram for v8::internal::compiler::RawMachineAssembler:
+ Collaboration diagram for v8::internal::compiler::RawMachineAssembler:

Classes

class  Label
 

Public Member Functions

 RawMachineAssembler (Graph *graph, MachineSignature *machine_sig, MachineType word=kMachPtr)
 
virtual ~RawMachineAssembler ()
 
Isolateisolate () const
 
Zonezone () const
 
MachineOperatorBuilder * machine ()
 
CommonOperatorBuilder * common ()
 
CallDescriptor * call_descriptor () const
 
size_t parameter_count () const
 
MachineSignaturemachine_sig () const
 
Node * UndefinedConstant ()
 
Node * PointerConstant (void *value)
 
Node * IntPtrConstant (intptr_t value)
 
Node * Int32Constant (int32_t value)
 
Node * Int64Constant (int64_t value)
 
Node * NumberConstant (double value)
 
Node * Float32Constant (float value)
 
Node * Float64Constant (double value)
 
Node * HeapConstant (Handle< Object > object)
 
Node * Projection (int index, Node *a)
 
Node * Load (MachineType rep, Node *base)
 
Node * Load (MachineType rep, Node *base, Node *index)
 
void Store (MachineType rep, Node *base, Node *value)
 
void Store (MachineType rep, Node *base, Node *index, Node *value)
 
Node * WordAnd (Node *a, Node *b)
 
Node * WordOr (Node *a, Node *b)
 
Node * WordXor (Node *a, Node *b)
 
Node * WordShl (Node *a, Node *b)
 
Node * WordShr (Node *a, Node *b)
 
Node * WordSar (Node *a, Node *b)
 
Node * WordRor (Node *a, Node *b)
 
Node * WordEqual (Node *a, Node *b)
 
Node * WordNotEqual (Node *a, Node *b)
 
Node * WordNot (Node *a)
 
Node * WordBinaryNot (Node *a)
 
Node * Word32And (Node *a, Node *b)
 
Node * Word32Or (Node *a, Node *b)
 
Node * Word32Xor (Node *a, Node *b)
 
Node * Word32Shl (Node *a, Node *b)
 
Node * Word32Shr (Node *a, Node *b)
 
Node * Word32Sar (Node *a, Node *b)
 
Node * Word32Ror (Node *a, Node *b)
 
Node * Word32Equal (Node *a, Node *b)
 
Node * Word32NotEqual (Node *a, Node *b)
 
Node * Word32Not (Node *a)
 
Node * Word32BinaryNot (Node *a)
 
Node * Word64And (Node *a, Node *b)
 
Node * Word64Or (Node *a, Node *b)
 
Node * Word64Xor (Node *a, Node *b)
 
Node * Word64Shl (Node *a, Node *b)
 
Node * Word64Shr (Node *a, Node *b)
 
Node * Word64Sar (Node *a, Node *b)
 
Node * Word64Ror (Node *a, Node *b)
 
Node * Word64Equal (Node *a, Node *b)
 
Node * Word64NotEqual (Node *a, Node *b)
 
Node * Word64Not (Node *a)
 
Node * Word64BinaryNot (Node *a)
 
Node * Int32Add (Node *a, Node *b)
 
Node * Int32AddWithOverflow (Node *a, Node *b)
 
Node * Int32Sub (Node *a, Node *b)
 
Node * Int32SubWithOverflow (Node *a, Node *b)
 
Node * Int32Mul (Node *a, Node *b)
 
Node * Int32Div (Node *a, Node *b)
 
Node * Int32UDiv (Node *a, Node *b)
 
Node * Int32Mod (Node *a, Node *b)
 
Node * Int32UMod (Node *a, Node *b)
 
Node * Int32LessThan (Node *a, Node *b)
 
Node * Int32LessThanOrEqual (Node *a, Node *b)
 
Node * Uint32LessThan (Node *a, Node *b)
 
Node * Uint32LessThanOrEqual (Node *a, Node *b)
 
Node * Int32GreaterThan (Node *a, Node *b)
 
Node * Int32GreaterThanOrEqual (Node *a, Node *b)
 
Node * Int32Neg (Node *a)
 
Node * Int64Add (Node *a, Node *b)
 
Node * Int64Sub (Node *a, Node *b)
 
Node * Int64Mul (Node *a, Node *b)
 
Node * Int64Div (Node *a, Node *b)
 
Node * Int64UDiv (Node *a, Node *b)
 
Node * Int64Mod (Node *a, Node *b)
 
Node * Int64UMod (Node *a, Node *b)
 
Node * Int64Neg (Node *a)
 
Node * Int64LessThan (Node *a, Node *b)
 
Node * Int64LessThanOrEqual (Node *a, Node *b)
 
Node * Int64GreaterThan (Node *a, Node *b)
 
Node * Int64GreaterThanOrEqual (Node *a, Node *b)
 
Node * ConvertIntPtrToInt32 (Node *a)
 
Node * ConvertInt32ToIntPtr (Node *a)
 
 INTPTR_BINOP (Int, Add)
 
 INTPTR_BINOP (Int, Sub)
 
 INTPTR_BINOP (Int, LessThan)
 
 INTPTR_BINOP (Int, LessThanOrEqual)
 
 INTPTR_BINOP (Word, Equal)
 
 INTPTR_BINOP (Word, NotEqual)
 
 INTPTR_BINOP (Int, GreaterThanOrEqual)
 
 INTPTR_BINOP (Int, GreaterThan)
 
Node * Float64Add (Node *a, Node *b)
 
Node * Float64Sub (Node *a, Node *b)
 
Node * Float64Mul (Node *a, Node *b)
 
Node * Float64Div (Node *a, Node *b)
 
Node * Float64Mod (Node *a, Node *b)
 
Node * Float64Equal (Node *a, Node *b)
 
Node * Float64NotEqual (Node *a, Node *b)
 
Node * Float64LessThan (Node *a, Node *b)
 
Node * Float64LessThanOrEqual (Node *a, Node *b)
 
Node * Float64GreaterThan (Node *a, Node *b)
 
Node * Float64GreaterThanOrEqual (Node *a, Node *b)
 
Node * ChangeFloat32ToFloat64 (Node *a)
 
Node * ChangeInt32ToFloat64 (Node *a)
 
Node * ChangeUint32ToFloat64 (Node *a)
 
Node * ChangeFloat64ToInt32 (Node *a)
 
Node * ChangeFloat64ToUint32 (Node *a)
 
Node * ChangeInt32ToInt64 (Node *a)
 
Node * ChangeUint32ToUint64 (Node *a)
 
Node * TruncateFloat64ToFloat32 (Node *a)
 
Node * TruncateFloat64ToInt32 (Node *a)
 
Node * TruncateInt64ToInt32 (Node *a)
 
Node * Parameter (size_t index)
 
LabelExit ()
 
void Goto (Label *label)
 
void Branch (Node *condition, Label *true_val, Label *false_val)
 
Node * CallFunctionStub0 (Node *function, Node *receiver, Node *context, Node *frame_state, CallFunctionFlags flags)
 
Node * CallJS0 (Node *function, Node *receiver, Node *context, Node *frame_state)
 
Node * CallRuntime1 (Runtime::FunctionId function, Node *arg0, Node *context, Node *frame_state)
 
void Return (Node *value)
 
void Bind (Label *label)
 
void Deoptimize (Node *state)
 
Node * Phi (MachineType type, Node *n1, Node *n2)
 
Node * Phi (MachineType type, Node *n1, Node *n2, Node *n3)
 
Node * Phi (MachineType type, Node *n1, Node *n2, Node *n3, Node *n4)
 
ScheduleExport ()
 
- Public Member Functions inherited from v8::internal::compiler::GraphBuilder
 GraphBuilder (Graph *graph)
 
virtual ~GraphBuilder ()
 
Node * NewNode (const Operator *op)
 
Node * NewNode (const Operator *op, Node *n1)
 
Node * NewNode (const Operator *op, Node *n1, Node *n2)
 
Node * NewNode (const Operator *op, Node *n1, Node *n2, Node *n3)
 
Node * NewNode (const Operator *op, Node *n1, Node *n2, Node *n3, Node *n4)
 
Node * NewNode (const Operator *op, Node *n1, Node *n2, Node *n3, Node *n4, Node *n5)
 
Node * NewNode (const Operator *op, Node *n1, Node *n2, Node *n3, Node *n4, Node *n5, Node *n6)
 
Node * NewNode (const Operator *op, int value_input_count, Node **value_inputs)
 
Graphgraph () const
 

Protected Member Functions

virtual Node * MakeNode (const Operator *op, int input_count, Node **inputs) FINAL
 
bool ScheduleValid ()
 
Scheduleschedule ()
 

Private Member Functions

BasicBlock * Use (Label *label)
 
BasicBlock * EnsureBlock (Label *label)
 
BasicBlock * CurrentBlock ()
 
 DISALLOW_COPY_AND_ASSIGN (RawMachineAssembler)
 

Private Attributes

Scheduleschedule_
 
MachineOperatorBuilder machine_
 
CommonOperatorBuilder common_
 
MachineSignaturemachine_sig_
 
CallDescriptor * call_descriptor_
 
Node ** parameters_
 
Label exit_label_
 
BasicBlock * current_block_
 

Detailed Description

Definition at line 26 of file raw-machine-assembler.h.

Constructor & Destructor Documentation

◆ RawMachineAssembler()

v8::internal::compiler::RawMachineAssembler::RawMachineAssembler ( Graph graph,
MachineSignature machine_sig,
MachineType  word = kMachPtr 
)

Definition at line 14 of file raw-machine-assembler.cc.

18  schedule_(new (zone()) Schedule(zone())),
19  machine_(word),
20  common_(zone()),
25  exit_label_(schedule()->end()),
26  current_block_(schedule()->start()) {
27  int param_count = static_cast<int>(parameter_count());
28  Node* s = graph->NewNode(common_.Start(param_count));
29  graph->SetStart(s);
30  if (parameter_count() == 0) return;
31  parameters_ = zone()->NewArray<Node*>(param_count);
32  for (size_t i = 0; i < parameter_count(); ++i) {
33  parameters_[i] =
34  NewNode(common()->Parameter(static_cast<int>(i)), graph->start());
35  }
36 }
T * NewArray(int length)
Definition: zone.h:46
Node * NewNode(const Operator *op)
Definition: graph-builder.h:27
Node * NewNode(const Operator *op, int input_count, Node **inputs)
Definition: graph.cc:24
static CallDescriptor * GetSimplifiedCDescriptor(Zone *zone, MachineSignature *sig)
Definition: linkage-arm.cc:59
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

References common(), common_, v8::internal::compiler::GraphBuilder::graph(), v8::internal::Zone::NewArray(), v8::internal::compiler::GraphBuilder::NewNode(), v8::internal::compiler::Graph::NewNode(), Parameter(), parameter_count(), parameters_, v8::internal::compiler::GenericGraph< V >::SetStart(), v8::internal::compiler::GenericGraph< V >::start(), and zone().

+ Here is the call graph for this function:

◆ ~RawMachineAssembler()

virtual v8::internal::compiler::RawMachineAssembler::~RawMachineAssembler ( )
inlinevirtual

Definition at line 49 of file raw-machine-assembler.h.

49 {}

Member Function Documentation

◆ Bind()

void v8::internal::compiler::RawMachineAssembler::Bind ( Label label)

Definition at line 126 of file raw-machine-assembler.cc.

126  {
128  DCHECK(!label->bound_);
129  label->bound_ = true;
130  current_block_ = EnsureBlock(label);
131 }
#define DCHECK(condition)
Definition: logging.h:205

References v8::internal::compiler::RawMachineAssembler::Label::bound_, current_block_, DCHECK, EnsureBlock(), and NULL.

+ Here is the call graph for this function:

◆ Branch()

void v8::internal::compiler::RawMachineAssembler::Branch ( Node *  condition,
Label true_val,
Label false_val 
)

Definition at line 69 of file raw-machine-assembler.cc.

70  {
71  DCHECK(current_block_ != schedule()->end());
72  Node* branch = NewNode(common()->Branch(), condition);
73  schedule()->AddBranch(CurrentBlock(), branch, Use(true_val), Use(false_val));
75 }
void Branch(Node *condition, Label *true_val, Label *false_val)
void AddBranch(BasicBlock *block, Node *branch, BasicBlock *tblock, BasicBlock *fblock)
Definition: schedule.h:238

References v8::internal::compiler::Schedule::AddBranch(), common(), current_block_, CurrentBlock(), DCHECK, v8::internal::compiler::GraphBuilder::NewNode(), NULL, schedule(), and Use().

+ Here is the call graph for this function:

◆ call_descriptor()

CallDescriptor* v8::internal::compiler::RawMachineAssembler::call_descriptor ( ) const
inline

Definition at line 55 of file raw-machine-assembler.h.

55 { return call_descriptor_; }

References call_descriptor_.

◆ CallFunctionStub0()

Node * v8::internal::compiler::RawMachineAssembler::CallFunctionStub0 ( Node *  function,
Node *  receiver,
Node *  context,
Node *  frame_state,
CallFunctionFlags  flags 
)

Definition at line 84 of file raw-machine-assembler.cc.

86  {
87  Callable callable = CodeFactory::CallFunction(isolate(), 0, flags);
88  CallDescriptor* desc = Linkage::GetStubCallDescriptor(
89  callable.descriptor(), 1, CallDescriptor::kNeedsFrameState, zone());
90  Node* stub_code = HeapConstant(callable.code());
91  Node* call = graph()->NewNode(common()->Call(desc), stub_code, function,
92  receiver, context, frame_state);
93  schedule()->AddNode(CurrentBlock(), call);
94  return call;
95 }
CallDescriptor * GetStubCallDescriptor(CallInterfaceDescriptor descriptor, int stack_parameter_count=0, CallDescriptor::Flags flags=CallDescriptor::kNoFlags)
Definition: linkage.cc:103
Node * HeapConstant(Handle< Object > object)
void AddNode(BasicBlock *block, Node *node)
Definition: schedule.h:220

References v8::internal::compiler::Schedule::AddNode(), common(), CurrentBlock(), v8::internal::anonymous_namespace{flags.cc}::flags, v8::internal::compiler::Linkage::GetStubCallDescriptor(), v8::internal::compiler::GraphBuilder::graph(), HeapConstant(), isolate(), v8::internal::compiler::Graph::NewNode(), schedule(), and zone().

+ Here is the call graph for this function:

◆ CallJS0()

Node * v8::internal::compiler::RawMachineAssembler::CallJS0 ( Node *  function,
Node *  receiver,
Node *  context,
Node *  frame_state 
)

Definition at line 98 of file raw-machine-assembler.cc.

99  {
100  CallDescriptor* descriptor = Linkage::GetJSCallDescriptor(1, zone());
101  Node* call = graph()->NewNode(common()->Call(descriptor), function, receiver,
102  context, frame_state);
103  schedule()->AddNode(CurrentBlock(), call);
104  return call;
105 }
CallDescriptor * GetJSCallDescriptor(int parameter_count)
Definition: linkage.cc:90

References v8::internal::compiler::Schedule::AddNode(), common(), CurrentBlock(), v8::internal::compiler::Linkage::GetJSCallDescriptor(), v8::internal::compiler::GraphBuilder::graph(), v8::internal::compiler::Graph::NewNode(), schedule(), and zone().

+ Here is the call graph for this function:

◆ CallRuntime1()

Node * v8::internal::compiler::RawMachineAssembler::CallRuntime1 ( Runtime::FunctionId  function,
Node *  arg0,
Node *  context,
Node *  frame_state 
)

Definition at line 108 of file raw-machine-assembler.cc.

110  {
111  CallDescriptor* descriptor = Linkage::GetRuntimeCallDescriptor(
112  function, 1, Operator::kNoProperties, zone());
113 
114  Node* centry = HeapConstant(CEntryStub(isolate(), 1).GetCode());
115  Node* ref = NewNode(
116  common()->ExternalConstant(ExternalReference(function, isolate())));
117  Node* arity = Int32Constant(1);
118 
119  Node* call = graph()->NewNode(common()->Call(descriptor), centry, arg0, ref,
120  arity, context, frame_state);
121  schedule()->AddNode(CurrentBlock(), call);
122  return call;
123 }
CallDescriptor * GetRuntimeCallDescriptor(Runtime::FunctionId function, int parameter_count, Operator::Properties properties)
Definition: linkage.cc:95

References v8::internal::compiler::Schedule::AddNode(), common(), CurrentBlock(), v8::internal::compiler::Linkage::GetRuntimeCallDescriptor(), v8::internal::compiler::GraphBuilder::graph(), HeapConstant(), Int32Constant(), isolate(), v8::internal::compiler::Operator::kNoProperties, v8::internal::compiler::GraphBuilder::NewNode(), v8::internal::compiler::Graph::NewNode(), schedule(), and zone().

+ Here is the call graph for this function:

◆ ChangeFloat32ToFloat64()

Node* v8::internal::compiler::RawMachineAssembler::ChangeFloat32ToFloat64 ( Node *  a)
inline

Definition at line 350 of file raw-machine-assembler.h.

350  {
351  return NewNode(machine()->ChangeFloat32ToFloat64(), a);
352  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ ChangeFloat64ToInt32()

Node* v8::internal::compiler::RawMachineAssembler::ChangeFloat64ToInt32 ( Node *  a)
inline

Definition at line 359 of file raw-machine-assembler.h.

359  {
360  return NewNode(machine()->ChangeFloat64ToInt32(), a);
361  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ ChangeFloat64ToUint32()

Node* v8::internal::compiler::RawMachineAssembler::ChangeFloat64ToUint32 ( Node *  a)
inline

Definition at line 362 of file raw-machine-assembler.h.

362  {
363  return NewNode(machine()->ChangeFloat64ToUint32(), a);
364  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ ChangeInt32ToFloat64()

Node* v8::internal::compiler::RawMachineAssembler::ChangeInt32ToFloat64 ( Node *  a)
inline

Definition at line 353 of file raw-machine-assembler.h.

353  {
354  return NewNode(machine()->ChangeInt32ToFloat64(), a);
355  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ ChangeInt32ToInt64()

Node* v8::internal::compiler::RawMachineAssembler::ChangeInt32ToInt64 ( Node *  a)
inline

Definition at line 365 of file raw-machine-assembler.h.

365  {
366  return NewNode(machine()->ChangeInt32ToInt64(), a);
367  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by ConvertInt32ToIntPtr().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ChangeUint32ToFloat64()

Node* v8::internal::compiler::RawMachineAssembler::ChangeUint32ToFloat64 ( Node *  a)
inline

Definition at line 356 of file raw-machine-assembler.h.

356  {
357  return NewNode(machine()->ChangeUint32ToFloat64(), a);
358  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ ChangeUint32ToUint64()

Node* v8::internal::compiler::RawMachineAssembler::ChangeUint32ToUint64 ( Node *  a)
inline

Definition at line 368 of file raw-machine-assembler.h.

368  {
369  return NewNode(machine()->ChangeUint32ToUint64(), a);
370  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ common()

CommonOperatorBuilder* v8::internal::compiler::RawMachineAssembler::common ( )
inline

Definition at line 54 of file raw-machine-assembler.h.

54 { return &common_; }

References common_.

Referenced by Branch(), CallFunctionStub0(), CallJS0(), CallRuntime1(), Float32Constant(), Float64Constant(), HeapConstant(), Int32Constant(), Int64Constant(), NumberConstant(), Phi(), Projection(), RawMachineAssembler(), and UndefinedConstant().

+ Here is the caller graph for this function:

◆ ConvertInt32ToIntPtr()

Node* v8::internal::compiler::RawMachineAssembler::ConvertInt32ToIntPtr ( Node *  a)
inline

Definition at line 296 of file raw-machine-assembler.h.

296  {
297  return kPointerSize == 8 ? NewNode(machine()->ChangeInt32ToInt64(), a) : a;
298  }
const int kPointerSize
Definition: globals.h:129

References ChangeInt32ToInt64(), v8::internal::kPointerSize, machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ ConvertIntPtrToInt32()

Node* v8::internal::compiler::RawMachineAssembler::ConvertIntPtrToInt32 ( Node *  a)
inline

Definition at line 292 of file raw-machine-assembler.h.

292  {
293  return kPointerSize == 8 ? NewNode(machine()->TruncateInt64ToInt32(), a)
294  : a;
295  }

References v8::internal::kPointerSize, machine(), v8::internal::compiler::GraphBuilder::NewNode(), and TruncateInt64ToInt32().

+ Here is the call graph for this function:

◆ CurrentBlock()

BasicBlock * v8::internal::compiler::RawMachineAssembler::CurrentBlock ( )
private

Definition at line 146 of file raw-machine-assembler.cc.

146  {
148  return current_block_;
149 }

References current_block_, and DCHECK.

Referenced by Branch(), CallFunctionStub0(), CallJS0(), CallRuntime1(), Goto(), MakeNode(), and Return().

+ Here is the caller graph for this function:

◆ Deoptimize()

void v8::internal::compiler::RawMachineAssembler::Deoptimize ( Node *  state)

◆ DISALLOW_COPY_AND_ASSIGN()

v8::internal::compiler::RawMachineAssembler::DISALLOW_COPY_AND_ASSIGN ( RawMachineAssembler  )
private

◆ EnsureBlock()

BasicBlock * v8::internal::compiler::RawMachineAssembler::EnsureBlock ( Label label)
private

Definition at line 140 of file raw-machine-assembler.cc.

140  {
141  if (label->block_ == NULL) label->block_ = schedule()->NewBasicBlock();
142  return label->block_;
143 }

References v8::internal::compiler::RawMachineAssembler::Label::block_, v8::internal::compiler::Schedule::NewBasicBlock(), NULL, and schedule().

Referenced by Bind(), and Use().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Exit()

RawMachineAssembler::Label * v8::internal::compiler::RawMachineAssembler::Exit ( )

◆ Export()

Schedule * v8::internal::compiler::RawMachineAssembler::Export ( )

Definition at line 39 of file raw-machine-assembler.cc.

39  {
40  // Compute the correct codegen order.
41  DCHECK(schedule_->rpo_order()->empty());
43  // Invalidate MachineAssembler.
44  Schedule* schedule = schedule_;
45  schedule_ = NULL;
46  return schedule;
47 }
BasicBlockVector * rpo_order()
Definition: schedule.h:279
static BasicBlockVector * ComputeSpecialRPO(Schedule *schedule)
Definition: scheduler.cc:933

References v8::internal::compiler::Scheduler::ComputeSpecialRPO(), DCHECK, NULL, v8::internal::compiler::Schedule::rpo_order(), schedule(), and schedule_.

+ Here is the call graph for this function:

◆ Float32Constant()

Node* v8::internal::compiler::RawMachineAssembler::Float32Constant ( float  value)
inline

Definition at line 83 of file raw-machine-assembler.h.

83  {
84  return NewNode(common()->Float32Constant(value));
85  }

References common(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Float64Add()

Node* v8::internal::compiler::RawMachineAssembler::Float64Add ( Node *  a,
Node *  b 
)
inline

Definition at line 317 of file raw-machine-assembler.h.

317  {
318  return NewNode(machine()->Float64Add(), a, b);
319  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Float64Constant()

Node* v8::internal::compiler::RawMachineAssembler::Float64Constant ( double  value)
inline

Definition at line 86 of file raw-machine-assembler.h.

86  {
87  return NewNode(common()->Float64Constant(value));
88  }

References common(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Float64Div()

Node* v8::internal::compiler::RawMachineAssembler::Float64Div ( Node *  a,
Node *  b 
)
inline

Definition at line 326 of file raw-machine-assembler.h.

326  {
327  return NewNode(machine()->Float64Div(), a, b);
328  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Float64Equal()

Node* v8::internal::compiler::RawMachineAssembler::Float64Equal ( Node *  a,
Node *  b 
)
inline

Definition at line 332 of file raw-machine-assembler.h.

332  {
333  return NewNode(machine()->Float64Equal(), a, b);
334  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Float64NotEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Float64GreaterThan()

Node* v8::internal::compiler::RawMachineAssembler::Float64GreaterThan ( Node *  a,
Node *  b 
)
inline

Definition at line 344 of file raw-machine-assembler.h.

344 { return Float64LessThan(b, a); }

References Float64LessThan().

+ Here is the call graph for this function:

◆ Float64GreaterThanOrEqual()

Node* v8::internal::compiler::RawMachineAssembler::Float64GreaterThanOrEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 345 of file raw-machine-assembler.h.

345  {
346  return Float64LessThanOrEqual(b, a);
347  }

References Float64LessThanOrEqual().

+ Here is the call graph for this function:

◆ Float64LessThan()

Node* v8::internal::compiler::RawMachineAssembler::Float64LessThan ( Node *  a,
Node *  b 
)
inline

Definition at line 338 of file raw-machine-assembler.h.

338  {
339  return NewNode(machine()->Float64LessThan(), a, b);
340  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Float64GreaterThan().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Float64LessThanOrEqual()

Node* v8::internal::compiler::RawMachineAssembler::Float64LessThanOrEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 341 of file raw-machine-assembler.h.

341  {
342  return NewNode(machine()->Float64LessThanOrEqual(), a, b);
343  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Float64GreaterThanOrEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Float64Mod()

Node* v8::internal::compiler::RawMachineAssembler::Float64Mod ( Node *  a,
Node *  b 
)
inline

Definition at line 329 of file raw-machine-assembler.h.

329  {
330  return NewNode(machine()->Float64Mod(), a, b);
331  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Float64Mul()

Node* v8::internal::compiler::RawMachineAssembler::Float64Mul ( Node *  a,
Node *  b 
)
inline

Definition at line 323 of file raw-machine-assembler.h.

323  {
324  return NewNode(machine()->Float64Mul(), a, b);
325  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Float64NotEqual()

Node* v8::internal::compiler::RawMachineAssembler::Float64NotEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 335 of file raw-machine-assembler.h.

335  {
336  return WordBinaryNot(Float64Equal(a, b));
337  }

References Float64Equal(), and WordBinaryNot().

+ Here is the call graph for this function:

◆ Float64Sub()

Node* v8::internal::compiler::RawMachineAssembler::Float64Sub ( Node *  a,
Node *  b 
)
inline

Definition at line 320 of file raw-machine-assembler.h.

320  {
321  return NewNode(machine()->Float64Sub(), a, b);
322  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Goto()

void v8::internal::compiler::RawMachineAssembler::Goto ( Label label)

Definition at line 62 of file raw-machine-assembler.cc.

62  {
63  DCHECK(current_block_ != schedule()->end());
64  schedule()->AddGoto(CurrentBlock(), Use(label));
66 }
void AddGoto(BasicBlock *block, BasicBlock *succ)
Definition: schedule.h:231

References v8::internal::compiler::Schedule::AddGoto(), current_block_, CurrentBlock(), DCHECK, NULL, schedule(), and Use().

+ Here is the call graph for this function:

◆ HeapConstant()

Node* v8::internal::compiler::RawMachineAssembler::HeapConstant ( Handle< Object object)
inline

Definition at line 89 of file raw-machine-assembler.h.

89  {
90  Unique<Object> val = Unique<Object>::CreateUninitialized(object);
91  return NewNode(common()->HeapConstant(val));
92  }
static Unique< T > CreateUninitialized(Handle< T > handle)
Definition: unique.h:112

References common(), v8::internal::Unique< T >::CreateUninitialized(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by CallFunctionStub0(), CallRuntime1(), and UndefinedConstant().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int32Add()

Node* v8::internal::compiler::RawMachineAssembler::Int32Add ( Node *  a,
Node *  b 
)
inline

Definition at line 213 of file raw-machine-assembler.h.

213  {
214  return NewNode(machine()->Int32Add(), a, b);
215  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int32AddWithOverflow()

Node* v8::internal::compiler::RawMachineAssembler::Int32AddWithOverflow ( Node *  a,
Node *  b 
)
inline

Definition at line 216 of file raw-machine-assembler.h.

216  {
217  return NewNode(machine()->Int32AddWithOverflow(), a, b);
218  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int32Constant()

Node* v8::internal::compiler::RawMachineAssembler::Int32Constant ( int32_t  value)
inline

Definition at line 74 of file raw-machine-assembler.h.

74  {
75  return NewNode(common()->Int32Constant(value));
76  }

References common(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by CallRuntime1(), Int32Neg(), IntPtrConstant(), Load(), Store(), Word32BinaryNot(), and Word32Not().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int32Div()

Node* v8::internal::compiler::RawMachineAssembler::Int32Div ( Node *  a,
Node *  b 
)
inline

Definition at line 228 of file raw-machine-assembler.h.

228  {
229  return NewNode(machine()->Int32Div(), a, b);
230  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int32GreaterThan()

Node* v8::internal::compiler::RawMachineAssembler::Int32GreaterThan ( Node *  a,
Node *  b 
)
inline

Definition at line 252 of file raw-machine-assembler.h.

252 { return Int32LessThan(b, a); }

References Int32LessThan().

+ Here is the call graph for this function:

◆ Int32GreaterThanOrEqual()

Node* v8::internal::compiler::RawMachineAssembler::Int32GreaterThanOrEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 253 of file raw-machine-assembler.h.

253  {
254  return Int32LessThanOrEqual(b, a);
255  }

References Int32LessThanOrEqual().

+ Here is the call graph for this function:

◆ Int32LessThan()

Node* v8::internal::compiler::RawMachineAssembler::Int32LessThan ( Node *  a,
Node *  b 
)
inline

Definition at line 240 of file raw-machine-assembler.h.

240  {
241  return NewNode(machine()->Int32LessThan(), a, b);
242  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Int32GreaterThan().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int32LessThanOrEqual()

Node* v8::internal::compiler::RawMachineAssembler::Int32LessThanOrEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 243 of file raw-machine-assembler.h.

243  {
244  return NewNode(machine()->Int32LessThanOrEqual(), a, b);
245  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Int32GreaterThanOrEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int32Mod()

Node* v8::internal::compiler::RawMachineAssembler::Int32Mod ( Node *  a,
Node *  b 
)
inline

Definition at line 234 of file raw-machine-assembler.h.

234  {
235  return NewNode(machine()->Int32Mod(), a, b);
236  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int32Mul()

Node* v8::internal::compiler::RawMachineAssembler::Int32Mul ( Node *  a,
Node *  b 
)
inline

Definition at line 225 of file raw-machine-assembler.h.

225  {
226  return NewNode(machine()->Int32Mul(), a, b);
227  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int32Neg()

Node* v8::internal::compiler::RawMachineAssembler::Int32Neg ( Node *  a)
inline

Definition at line 256 of file raw-machine-assembler.h.

256 { return Int32Sub(Int32Constant(0), a); }

References Int32Constant(), and Int32Sub().

+ Here is the call graph for this function:

◆ Int32Sub()

Node* v8::internal::compiler::RawMachineAssembler::Int32Sub ( Node *  a,
Node *  b 
)
inline

Definition at line 219 of file raw-machine-assembler.h.

219  {
220  return NewNode(machine()->Int32Sub(), a, b);
221  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Int32Neg().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int32SubWithOverflow()

Node* v8::internal::compiler::RawMachineAssembler::Int32SubWithOverflow ( Node *  a,
Node *  b 
)
inline

Definition at line 222 of file raw-machine-assembler.h.

222  {
223  return NewNode(machine()->Int32SubWithOverflow(), a, b);
224  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int32UDiv()

Node* v8::internal::compiler::RawMachineAssembler::Int32UDiv ( Node *  a,
Node *  b 
)
inline

Definition at line 231 of file raw-machine-assembler.h.

231  {
232  return NewNode(machine()->Int32UDiv(), a, b);
233  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int32UMod()

Node* v8::internal::compiler::RawMachineAssembler::Int32UMod ( Node *  a,
Node *  b 
)
inline

Definition at line 237 of file raw-machine-assembler.h.

237  {
238  return NewNode(machine()->Int32UMod(), a, b);
239  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int64Add()

Node* v8::internal::compiler::RawMachineAssembler::Int64Add ( Node *  a,
Node *  b 
)
inline

Definition at line 258 of file raw-machine-assembler.h.

258  {
259  return NewNode(machine()->Int64Add(), a, b);
260  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int64Constant()

Node* v8::internal::compiler::RawMachineAssembler::Int64Constant ( int64_t  value)
inline

Definition at line 77 of file raw-machine-assembler.h.

77  {
78  return NewNode(common()->Int64Constant(value));
79  }

References common(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Int64Neg(), IntPtrConstant(), Word64BinaryNot(), and Word64Not().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int64Div()

Node* v8::internal::compiler::RawMachineAssembler::Int64Div ( Node *  a,
Node *  b 
)
inline

Definition at line 267 of file raw-machine-assembler.h.

267  {
268  return NewNode(machine()->Int64Div(), a, b);
269  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int64GreaterThan()

Node* v8::internal::compiler::RawMachineAssembler::Int64GreaterThan ( Node *  a,
Node *  b 
)
inline

Definition at line 286 of file raw-machine-assembler.h.

286 { return Int64LessThan(b, a); }

References Int64LessThan().

+ Here is the call graph for this function:

◆ Int64GreaterThanOrEqual()

Node* v8::internal::compiler::RawMachineAssembler::Int64GreaterThanOrEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 287 of file raw-machine-assembler.h.

287  {
288  return Int64LessThanOrEqual(b, a);
289  }

References Int64LessThanOrEqual().

+ Here is the call graph for this function:

◆ Int64LessThan()

Node* v8::internal::compiler::RawMachineAssembler::Int64LessThan ( Node *  a,
Node *  b 
)
inline

Definition at line 280 of file raw-machine-assembler.h.

280  {
281  return NewNode(machine()->Int64LessThan(), a, b);
282  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Int64GreaterThan().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int64LessThanOrEqual()

Node* v8::internal::compiler::RawMachineAssembler::Int64LessThanOrEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 283 of file raw-machine-assembler.h.

283  {
284  return NewNode(machine()->Int64LessThanOrEqual(), a, b);
285  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Int64GreaterThanOrEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int64Mod()

Node* v8::internal::compiler::RawMachineAssembler::Int64Mod ( Node *  a,
Node *  b 
)
inline

Definition at line 273 of file raw-machine-assembler.h.

273  {
274  return NewNode(machine()->Int64Mod(), a, b);
275  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int64Mul()

Node* v8::internal::compiler::RawMachineAssembler::Int64Mul ( Node *  a,
Node *  b 
)
inline

Definition at line 264 of file raw-machine-assembler.h.

264  {
265  return NewNode(machine()->Int64Mul(), a, b);
266  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int64Neg()

Node* v8::internal::compiler::RawMachineAssembler::Int64Neg ( Node *  a)
inline

Definition at line 279 of file raw-machine-assembler.h.

279 { return Int64Sub(Int64Constant(0), a); }

References Int64Constant(), and Int64Sub().

+ Here is the call graph for this function:

◆ Int64Sub()

Node* v8::internal::compiler::RawMachineAssembler::Int64Sub ( Node *  a,
Node *  b 
)
inline

Definition at line 261 of file raw-machine-assembler.h.

261  {
262  return NewNode(machine()->Int64Sub(), a, b);
263  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Int64Neg().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Int64UDiv()

Node* v8::internal::compiler::RawMachineAssembler::Int64UDiv ( Node *  a,
Node *  b 
)
inline

Definition at line 270 of file raw-machine-assembler.h.

270  {
271  return NewNode(machine()->Int64UDiv(), a, b);
272  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Int64UMod()

Node* v8::internal::compiler::RawMachineAssembler::Int64UMod ( Node *  a,
Node *  b 
)
inline

Definition at line 276 of file raw-machine-assembler.h.

276  {
277  return NewNode(machine()->Int64UMod(), a, b);
278  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ INTPTR_BINOP() [1/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Int  ,
Add   
)

◆ INTPTR_BINOP() [2/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Int  ,
GreaterThan   
)

◆ INTPTR_BINOP() [3/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Int  ,
GreaterThanOrEqual   
)

◆ INTPTR_BINOP() [4/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Int  ,
LessThan   
)

◆ INTPTR_BINOP() [5/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Int  ,
LessThanOrEqual   
)

◆ INTPTR_BINOP() [6/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Int  ,
Sub   
)

◆ INTPTR_BINOP() [7/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Word  ,
Equal   
)

◆ INTPTR_BINOP() [8/8]

v8::internal::compiler::RawMachineAssembler::INTPTR_BINOP ( Word  ,
NotEqual   
)

◆ IntPtrConstant()

Node* v8::internal::compiler::RawMachineAssembler::IntPtrConstant ( intptr_t  value)
inline

Definition at line 69 of file raw-machine-assembler.h.

69  {
70  // TODO(dcarney): mark generated code as unserializable if value != 0.
71  return kPointerSize == 8 ? Int64Constant(value)
72  : Int32Constant(static_cast<int>(value));
73  }

References Int32Constant(), Int64Constant(), and v8::internal::kPointerSize.

Referenced by PointerConstant().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isolate()

Isolate* v8::internal::compiler::RawMachineAssembler::isolate ( ) const
inline

Definition at line 51 of file raw-machine-assembler.h.

51 { return zone()->isolate(); }
Isolate * isolate() const
Definition: zone.h:68

References v8::internal::Zone::isolate(), and zone().

Referenced by CallFunctionStub0(), CallRuntime1(), and UndefinedConstant().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Load() [1/2]

Node* v8::internal::compiler::RawMachineAssembler::Load ( MachineType  rep,
Node *  base 
)
inline

Definition at line 99 of file raw-machine-assembler.h.

99  {
100  return Load(rep, base, Int32Constant(0));
101  }
Node * Load(MachineType rep, Node *base)

References Int32Constant().

Referenced by Load().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Load() [2/2]

Node* v8::internal::compiler::RawMachineAssembler::Load ( MachineType  rep,
Node *  base,
Node *  index 
)
inline

Definition at line 102 of file raw-machine-assembler.h.

102  {
103  return NewNode(machine()->Load(rep), base, index);
104  }

References Load(), machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ machine()

◆ machine_sig()

MachineSignature* v8::internal::compiler::RawMachineAssembler::machine_sig ( ) const
inline

Definition at line 57 of file raw-machine-assembler.h.

57 { return machine_sig_; }

References machine_sig_.

◆ MakeNode()

Node * v8::internal::compiler::RawMachineAssembler::MakeNode ( const Operator op,
int  input_count,
Node **  inputs 
)
protectedvirtual

Implements v8::internal::compiler::GraphBuilder.

Definition at line 152 of file raw-machine-assembler.cc.

153  {
156  Node* node = graph()->NewNode(op, input_count, inputs);
157  BasicBlock* block = op->opcode() == IrOpcode::kParameter ? schedule()->start()
158  : CurrentBlock();
159  schedule()->AddNode(block, node);
160  return node;
161 }

References v8::internal::compiler::Schedule::AddNode(), current_block_, CurrentBlock(), DCHECK, v8::internal::compiler::GraphBuilder::graph(), v8::internal::compiler::Graph::NewNode(), NULL, v8::internal::compiler::Operator::opcode(), schedule(), ScheduleValid(), and v8::internal::compiler::GenericGraph< V >::start().

+ Here is the call graph for this function:

◆ NumberConstant()

Node* v8::internal::compiler::RawMachineAssembler::NumberConstant ( double  value)
inline

Definition at line 80 of file raw-machine-assembler.h.

80  {
81  return NewNode(common()->NumberConstant(value));
82  }

References common(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Parameter()

Node * v8::internal::compiler::RawMachineAssembler::Parameter ( size_t  index)

Definition at line 50 of file raw-machine-assembler.cc.

50  {
51  DCHECK(index < parameter_count());
52  return parameters_[index];
53 }

References DCHECK, parameter_count(), and parameters_.

Referenced by RawMachineAssembler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parameter_count()

size_t v8::internal::compiler::RawMachineAssembler::parameter_count ( ) const
inline

Definition at line 56 of file raw-machine-assembler.h.

56 { return machine_sig_->parameter_count(); }

References machine_sig_, and v8::internal::compiler::Signature< T >::parameter_count().

Referenced by Parameter(), and RawMachineAssembler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Phi() [1/3]

Node* v8::internal::compiler::RawMachineAssembler::Phi ( MachineType  type,
Node *  n1,
Node *  n2 
)
inline

Definition at line 402 of file raw-machine-assembler.h.

402  {
403  return NewNode(common()->Phi(type, 2), n1, n2);
404  }
Node * Phi(MachineType type, Node *n1, Node *n2)

References common(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Phi().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Phi() [2/3]

Node* v8::internal::compiler::RawMachineAssembler::Phi ( MachineType  type,
Node *  n1,
Node *  n2,
Node *  n3 
)
inline

Definition at line 405 of file raw-machine-assembler.h.

405  {
406  return NewNode(common()->Phi(type, 3), n1, n2, n3);
407  }

References common(), v8::internal::compiler::GraphBuilder::NewNode(), and Phi().

+ Here is the call graph for this function:

◆ Phi() [3/3]

Node* v8::internal::compiler::RawMachineAssembler::Phi ( MachineType  type,
Node *  n1,
Node *  n2,
Node *  n3,
Node *  n4 
)
inline

Definition at line 408 of file raw-machine-assembler.h.

408  {
409  return NewNode(common()->Phi(type, 4), n1, n2, n3, n4);
410  }

References common(), v8::internal::compiler::GraphBuilder::NewNode(), and Phi().

+ Here is the call graph for this function:

◆ PointerConstant()

Node* v8::internal::compiler::RawMachineAssembler::PointerConstant ( void *  value)
inline

Definition at line 66 of file raw-machine-assembler.h.

66  {
67  return IntPtrConstant(reinterpret_cast<intptr_t>(value));
68  }

References IntPtrConstant().

+ Here is the call graph for this function:

◆ Projection()

Node* v8::internal::compiler::RawMachineAssembler::Projection ( int  index,
Node *  a 
)
inline

Definition at line 94 of file raw-machine-assembler.h.

94  {
95  return NewNode(common()->Projection(index), a);
96  }

References common(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Return()

void v8::internal::compiler::RawMachineAssembler::Return ( Node *  value)

Definition at line 78 of file raw-machine-assembler.cc.

78  {
79  schedule()->AddReturn(CurrentBlock(), value);
81 }
void AddReturn(BasicBlock *block, Node *input)
Definition: schedule.h:253

References v8::internal::compiler::Schedule::AddReturn(), current_block_, CurrentBlock(), NULL, and schedule().

+ Here is the call graph for this function:

◆ schedule()

Schedule* v8::internal::compiler::RawMachineAssembler::schedule ( )
inlineprotected

Definition at line 421 of file raw-machine-assembler.h.

421  {
423  return schedule_;
424  }

References DCHECK, schedule_, and ScheduleValid().

Referenced by Branch(), CallFunctionStub0(), CallJS0(), CallRuntime1(), EnsureBlock(), Export(), Goto(), MakeNode(), and Return().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ScheduleValid()

bool v8::internal::compiler::RawMachineAssembler::ScheduleValid ( )
inlineprotected

Definition at line 419 of file raw-machine-assembler.h.

419 { return schedule_ != NULL; }

References NULL, and schedule_.

Referenced by MakeNode(), and schedule().

+ Here is the caller graph for this function:

◆ Store() [1/2]

void v8::internal::compiler::RawMachineAssembler::Store ( MachineType  rep,
Node *  base,
Node *  index,
Node *  value 
)
inline

Definition at line 108 of file raw-machine-assembler.h.

108  {
109  NewNode(machine()->Store(StoreRepresentation(rep, kNoWriteBarrier)), base,
110  index, value);
111  }
void Store(MachineType rep, Node *base, Node *value)

References v8::internal::compiler::kNoWriteBarrier, machine(), v8::internal::compiler::GraphBuilder::NewNode(), and Store().

+ Here is the call graph for this function:

◆ Store() [2/2]

void v8::internal::compiler::RawMachineAssembler::Store ( MachineType  rep,
Node *  base,
Node *  value 
)
inline

Definition at line 105 of file raw-machine-assembler.h.

105  {
106  Store(rep, base, Int32Constant(0), value);
107  }

References Int32Constant().

Referenced by Store().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TruncateFloat64ToFloat32()

Node* v8::internal::compiler::RawMachineAssembler::TruncateFloat64ToFloat32 ( Node *  a)
inline

Definition at line 371 of file raw-machine-assembler.h.

371  {
372  return NewNode(machine()->TruncateFloat64ToFloat32(), a);
373  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ TruncateFloat64ToInt32()

Node* v8::internal::compiler::RawMachineAssembler::TruncateFloat64ToInt32 ( Node *  a)
inline

Definition at line 374 of file raw-machine-assembler.h.

374  {
375  return NewNode(machine()->TruncateFloat64ToInt32(), a);
376  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ TruncateInt64ToInt32()

Node* v8::internal::compiler::RawMachineAssembler::TruncateInt64ToInt32 ( Node *  a)
inline

Definition at line 377 of file raw-machine-assembler.h.

377  {
378  return NewNode(machine()->TruncateInt64ToInt32(), a);
379  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by ConvertIntPtrToInt32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Uint32LessThan()

Node* v8::internal::compiler::RawMachineAssembler::Uint32LessThan ( Node *  a,
Node *  b 
)
inline

Definition at line 246 of file raw-machine-assembler.h.

246  {
247  return NewNode(machine()->Uint32LessThan(), a, b);
248  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Uint32LessThanOrEqual()

Node* v8::internal::compiler::RawMachineAssembler::Uint32LessThanOrEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 249 of file raw-machine-assembler.h.

249  {
250  return NewNode(machine()->Uint32LessThanOrEqual(), a, b);
251  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ UndefinedConstant()

Node* v8::internal::compiler::RawMachineAssembler::UndefinedConstant ( )
inline

Definition at line 59 of file raw-machine-assembler.h.

59  {
60  Unique<Object> unique = Unique<Object>::CreateImmovable(
61  isolate()->factory()->undefined_value());
62  return NewNode(common()->HeapConstant(unique));
63  }
static Unique< T > CreateImmovable(Handle< T > handle)
Definition: unique.h:116

References common(), v8::internal::Unique< T >::CreateImmovable(), HeapConstant(), isolate(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Use()

BasicBlock * v8::internal::compiler::RawMachineAssembler::Use ( Label label)
private

Definition at line 134 of file raw-machine-assembler.cc.

134  {
135  label->used_ = true;
136  return EnsureBlock(label);
137 }

References EnsureBlock(), and v8::internal::compiler::RawMachineAssembler::Label::used_.

Referenced by Branch(), and Goto().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word32And()

Node* v8::internal::compiler::RawMachineAssembler::Word32And ( Node *  a,
Node *  b 
)
inline

Definition at line 153 of file raw-machine-assembler.h.

153  {
154  return NewNode(machine()->Word32And(), a, b);
155  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word32BinaryNot()

Node* v8::internal::compiler::RawMachineAssembler::Word32BinaryNot ( Node *  a)
inline

Definition at line 181 of file raw-machine-assembler.h.

181 { return Word32Equal(a, Int32Constant(0)); }

References Int32Constant(), and Word32Equal().

Referenced by Word32NotEqual(), and WordBinaryNot().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word32Equal()

Node* v8::internal::compiler::RawMachineAssembler::Word32Equal ( Node *  a,
Node *  b 
)
inline

Definition at line 174 of file raw-machine-assembler.h.

174  {
175  return NewNode(machine()->Word32Equal(), a, b);
176  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Word32BinaryNot(), and Word32NotEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word32Not()

Node* v8::internal::compiler::RawMachineAssembler::Word32Not ( Node *  a)
inline

Definition at line 180 of file raw-machine-assembler.h.

180 { return Word32Xor(a, Int32Constant(-1)); }

References Int32Constant(), and Word32Xor().

Referenced by WordNot().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word32NotEqual()

Node* v8::internal::compiler::RawMachineAssembler::Word32NotEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 177 of file raw-machine-assembler.h.

177  {
178  return Word32BinaryNot(Word32Equal(a, b));
179  }

References Word32BinaryNot(), and Word32Equal().

+ Here is the call graph for this function:

◆ Word32Or()

Node* v8::internal::compiler::RawMachineAssembler::Word32Or ( Node *  a,
Node *  b 
)
inline

Definition at line 156 of file raw-machine-assembler.h.

156  {
157  return NewNode(machine()->Word32Or(), a, b);
158  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word32Ror()

Node* v8::internal::compiler::RawMachineAssembler::Word32Ror ( Node *  a,
Node *  b 
)
inline

Definition at line 171 of file raw-machine-assembler.h.

171  {
172  return NewNode(machine()->Word32Ror(), a, b);
173  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word32Sar()

Node* v8::internal::compiler::RawMachineAssembler::Word32Sar ( Node *  a,
Node *  b 
)
inline

Definition at line 168 of file raw-machine-assembler.h.

168  {
169  return NewNode(machine()->Word32Sar(), a, b);
170  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word32Shl()

Node* v8::internal::compiler::RawMachineAssembler::Word32Shl ( Node *  a,
Node *  b 
)
inline

Definition at line 162 of file raw-machine-assembler.h.

162  {
163  return NewNode(machine()->Word32Shl(), a, b);
164  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word32Shr()

Node* v8::internal::compiler::RawMachineAssembler::Word32Shr ( Node *  a,
Node *  b 
)
inline

Definition at line 165 of file raw-machine-assembler.h.

165  {
166  return NewNode(machine()->Word32Shr(), a, b);
167  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word32Xor()

Node* v8::internal::compiler::RawMachineAssembler::Word32Xor ( Node *  a,
Node *  b 
)
inline

Definition at line 159 of file raw-machine-assembler.h.

159  {
160  return NewNode(machine()->Word32Xor(), a, b);
161  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Word32Not().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word64And()

Node* v8::internal::compiler::RawMachineAssembler::Word64And ( Node *  a,
Node *  b 
)
inline

Definition at line 183 of file raw-machine-assembler.h.

183  {
184  return NewNode(machine()->Word64And(), a, b);
185  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word64BinaryNot()

Node* v8::internal::compiler::RawMachineAssembler::Word64BinaryNot ( Node *  a)
inline

Definition at line 211 of file raw-machine-assembler.h.

211 { return Word64Equal(a, Int64Constant(0)); }

References Int64Constant(), and Word64Equal().

Referenced by Word64NotEqual(), and WordBinaryNot().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word64Equal()

Node* v8::internal::compiler::RawMachineAssembler::Word64Equal ( Node *  a,
Node *  b 
)
inline

Definition at line 204 of file raw-machine-assembler.h.

204  {
205  return NewNode(machine()->Word64Equal(), a, b);
206  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Word64BinaryNot(), and Word64NotEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word64Not()

Node* v8::internal::compiler::RawMachineAssembler::Word64Not ( Node *  a)
inline

Definition at line 210 of file raw-machine-assembler.h.

210 { return Word64Xor(a, Int64Constant(-1)); }

References Int64Constant(), and Word64Xor().

Referenced by WordNot().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Word64NotEqual()

Node* v8::internal::compiler::RawMachineAssembler::Word64NotEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 207 of file raw-machine-assembler.h.

207  {
208  return Word64BinaryNot(Word64Equal(a, b));
209  }

References Word64BinaryNot(), and Word64Equal().

+ Here is the call graph for this function:

◆ Word64Or()

Node* v8::internal::compiler::RawMachineAssembler::Word64Or ( Node *  a,
Node *  b 
)
inline

Definition at line 186 of file raw-machine-assembler.h.

186  {
187  return NewNode(machine()->Word64Or(), a, b);
188  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word64Ror()

Node* v8::internal::compiler::RawMachineAssembler::Word64Ror ( Node *  a,
Node *  b 
)
inline

Definition at line 201 of file raw-machine-assembler.h.

201  {
202  return NewNode(machine()->Word64Ror(), a, b);
203  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word64Sar()

Node* v8::internal::compiler::RawMachineAssembler::Word64Sar ( Node *  a,
Node *  b 
)
inline

Definition at line 198 of file raw-machine-assembler.h.

198  {
199  return NewNode(machine()->Word64Sar(), a, b);
200  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word64Shl()

Node* v8::internal::compiler::RawMachineAssembler::Word64Shl ( Node *  a,
Node *  b 
)
inline

Definition at line 192 of file raw-machine-assembler.h.

192  {
193  return NewNode(machine()->Word64Shl(), a, b);
194  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word64Shr()

Node* v8::internal::compiler::RawMachineAssembler::Word64Shr ( Node *  a,
Node *  b 
)
inline

Definition at line 195 of file raw-machine-assembler.h.

195  {
196  return NewNode(machine()->Word64Shr(), a, b);
197  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ Word64Xor()

Node* v8::internal::compiler::RawMachineAssembler::Word64Xor ( Node *  a,
Node *  b 
)
inline

Definition at line 189 of file raw-machine-assembler.h.

189  {
190  return NewNode(machine()->Word64Xor(), a, b);
191  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by Word64Not().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WordAnd()

Node* v8::internal::compiler::RawMachineAssembler::WordAnd ( Node *  a,
Node *  b 
)
inline

Definition at line 113 of file raw-machine-assembler.h.

113  {
114  return NewNode(machine()->WordAnd(), a, b);
115  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ WordBinaryNot()

Node* v8::internal::compiler::RawMachineAssembler::WordBinaryNot ( Node *  a)
inline

Definition at line 145 of file raw-machine-assembler.h.

145  {
146  if (machine()->Is32()) {
147  return Word32BinaryNot(a);
148  } else {
149  return Word64BinaryNot(a);
150  }
151  }

References machine(), Word32BinaryNot(), and Word64BinaryNot().

Referenced by Float64NotEqual(), and WordNotEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WordEqual()

Node* v8::internal::compiler::RawMachineAssembler::WordEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 132 of file raw-machine-assembler.h.

132  {
133  return NewNode(machine()->WordEqual(), a, b);
134  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

Referenced by WordNotEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WordNot()

Node* v8::internal::compiler::RawMachineAssembler::WordNot ( Node *  a)
inline

Definition at line 138 of file raw-machine-assembler.h.

138  {
139  if (machine()->Is32()) {
140  return Word32Not(a);
141  } else {
142  return Word64Not(a);
143  }
144  }

References machine(), Word32Not(), and Word64Not().

+ Here is the call graph for this function:

◆ WordNotEqual()

Node* v8::internal::compiler::RawMachineAssembler::WordNotEqual ( Node *  a,
Node *  b 
)
inline

Definition at line 135 of file raw-machine-assembler.h.

135  {
136  return WordBinaryNot(WordEqual(a, b));
137  }

References WordBinaryNot(), and WordEqual().

+ Here is the call graph for this function:

◆ WordOr()

Node* v8::internal::compiler::RawMachineAssembler::WordOr ( Node *  a,
Node *  b 
)
inline

Definition at line 116 of file raw-machine-assembler.h.

116 { return NewNode(machine()->WordOr(), a, b); }

References machine(), v8::internal::compiler::GraphBuilder::NewNode(), and WordOr().

Referenced by WordOr().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WordRor()

Node* v8::internal::compiler::RawMachineAssembler::WordRor ( Node *  a,
Node *  b 
)
inline

Definition at line 129 of file raw-machine-assembler.h.

129  {
130  return NewNode(machine()->WordRor(), a, b);
131  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ WordSar()

Node* v8::internal::compiler::RawMachineAssembler::WordSar ( Node *  a,
Node *  b 
)
inline

Definition at line 126 of file raw-machine-assembler.h.

126  {
127  return NewNode(machine()->WordSar(), a, b);
128  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ WordShl()

Node* v8::internal::compiler::RawMachineAssembler::WordShl ( Node *  a,
Node *  b 
)
inline

Definition at line 120 of file raw-machine-assembler.h.

120  {
121  return NewNode(machine()->WordShl(), a, b);
122  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ WordShr()

Node* v8::internal::compiler::RawMachineAssembler::WordShr ( Node *  a,
Node *  b 
)
inline

Definition at line 123 of file raw-machine-assembler.h.

123  {
124  return NewNode(machine()->WordShr(), a, b);
125  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ WordXor()

Node* v8::internal::compiler::RawMachineAssembler::WordXor ( Node *  a,
Node *  b 
)
inline

Definition at line 117 of file raw-machine-assembler.h.

117  {
118  return NewNode(machine()->WordXor(), a, b);
119  }

References machine(), and v8::internal::compiler::GraphBuilder::NewNode().

+ Here is the call graph for this function:

◆ zone()

Zone* v8::internal::compiler::RawMachineAssembler::zone ( ) const
inline

Definition at line 52 of file raw-machine-assembler.h.

52 { return graph()->zone(); }

References v8::internal::compiler::GraphBuilder::graph(), and v8::internal::compiler::GenericGraphBase::zone().

Referenced by CallFunctionStub0(), CallJS0(), CallRuntime1(), isolate(), and RawMachineAssembler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ call_descriptor_

CallDescriptor* v8::internal::compiler::RawMachineAssembler::call_descriptor_
private

Definition at line 435 of file raw-machine-assembler.h.

Referenced by call_descriptor().

◆ common_

CommonOperatorBuilder v8::internal::compiler::RawMachineAssembler::common_
private

Definition at line 433 of file raw-machine-assembler.h.

Referenced by common(), and RawMachineAssembler().

◆ current_block_

BasicBlock* v8::internal::compiler::RawMachineAssembler::current_block_
private

Definition at line 438 of file raw-machine-assembler.h.

Referenced by Bind(), Branch(), CurrentBlock(), Goto(), MakeNode(), and Return().

◆ exit_label_

Label v8::internal::compiler::RawMachineAssembler::exit_label_
private

Definition at line 437 of file raw-machine-assembler.h.

Referenced by Exit().

◆ machine_

MachineOperatorBuilder v8::internal::compiler::RawMachineAssembler::machine_
private

Definition at line 432 of file raw-machine-assembler.h.

Referenced by machine().

◆ machine_sig_

MachineSignature* v8::internal::compiler::RawMachineAssembler::machine_sig_
private

Definition at line 434 of file raw-machine-assembler.h.

Referenced by machine_sig(), and parameter_count().

◆ parameters_

Node** v8::internal::compiler::RawMachineAssembler::parameters_
private

Definition at line 436 of file raw-machine-assembler.h.

Referenced by Parameter(), and RawMachineAssembler().

◆ schedule_

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

Definition at line 431 of file raw-machine-assembler.h.

Referenced by Export(), schedule(), and ScheduleValid().


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