Index: src/builtins/builtins-internal.cc |
diff --git a/src/builtins/builtins-internal.cc b/src/builtins/builtins-internal.cc |
index 324f1a310b9946a825931e0b6096e2327a3e3605..7f81e8c086b7741a727b842bbfb941600a884114 100644 |
--- a/src/builtins/builtins-internal.cc |
+++ b/src/builtins/builtins-internal.cc |
@@ -56,190 +56,150 @@ void Builtins::Generate_StackCheck(MacroAssembler* masm) { |
// ----------------------------------------------------------------------------- |
// TurboFan support builtins. |
-void Builtins::Generate_CopyFastSmiOrObjectElements( |
- compiler::CodeAssemblerState* state) { |
- typedef CodeStubAssembler::Label Label; |
- typedef compiler::Node Node; |
+TF_BUILTIN(CopyFastSmiOrObjectElements, CodeStubAssembler) { |
typedef CopyFastSmiOrObjectElementsDescriptor Descriptor; |
- CodeStubAssembler assembler(state); |
- Node* object = assembler.Parameter(Descriptor::kObject); |
+ Node* object = Parameter(Descriptor::kObject); |
// Load the {object}s elements. |
- Node* source = assembler.LoadObjectField(object, JSObject::kElementsOffset); |
+ Node* source = LoadObjectField(object, JSObject::kElementsOffset); |
- CodeStubAssembler::ParameterMode mode = assembler.OptimalParameterMode(); |
- Node* length = assembler.TaggedToParameter( |
- assembler.LoadFixedArrayBaseLength(source), mode); |
+ ParameterMode mode = OptimalParameterMode(); |
+ Node* length = TaggedToParameter(LoadFixedArrayBaseLength(source), mode); |
// Check if we can allocate in new space. |
ElementsKind kind = FAST_ELEMENTS; |
int max_elements = FixedArrayBase::GetMaxLengthForNewSpaceAllocation(kind); |
- Label if_newspace(&assembler), if_oldspace(&assembler); |
- assembler.Branch( |
- assembler.UintPtrOrSmiLessThan( |
- length, assembler.IntPtrOrSmiConstant(max_elements, mode), mode), |
- &if_newspace, &if_oldspace); |
+ Label if_newspace(this), if_oldspace(this); |
+ Branch(UintPtrOrSmiLessThan(length, IntPtrOrSmiConstant(max_elements, mode), |
+ mode), |
+ &if_newspace, &if_oldspace); |
- assembler.Bind(&if_newspace); |
+ Bind(&if_newspace); |
{ |
- Node* target = assembler.AllocateFixedArray(kind, length, mode); |
- assembler.CopyFixedArrayElements(kind, source, target, length, |
- SKIP_WRITE_BARRIER, mode); |
- assembler.StoreObjectField(object, JSObject::kElementsOffset, target); |
- assembler.Return(target); |
+ Node* target = AllocateFixedArray(kind, length, mode); |
+ CopyFixedArrayElements(kind, source, target, length, SKIP_WRITE_BARRIER, |
+ mode); |
+ StoreObjectField(object, JSObject::kElementsOffset, target); |
+ Return(target); |
} |
- assembler.Bind(&if_oldspace); |
+ Bind(&if_oldspace); |
{ |
- Node* target = assembler.AllocateFixedArray(kind, length, mode, |
- CodeStubAssembler::kPretenured); |
- assembler.CopyFixedArrayElements(kind, source, target, length, |
- UPDATE_WRITE_BARRIER, mode); |
- assembler.StoreObjectField(object, JSObject::kElementsOffset, target); |
- assembler.Return(target); |
+ Node* target = AllocateFixedArray(kind, length, mode, kPretenured); |
+ CopyFixedArrayElements(kind, source, target, length, UPDATE_WRITE_BARRIER, |
+ mode); |
+ StoreObjectField(object, JSObject::kElementsOffset, target); |
+ Return(target); |
} |
} |
-void Builtins::Generate_GrowFastDoubleElements( |
- compiler::CodeAssemblerState* state) { |
- typedef CodeStubAssembler::Label Label; |
- typedef compiler::Node Node; |
+TF_BUILTIN(GrowFastDoubleElements, CodeStubAssembler) { |
typedef GrowArrayElementsDescriptor Descriptor; |
- CodeStubAssembler assembler(state); |
- Node* object = assembler.Parameter(Descriptor::kObject); |
- Node* key = assembler.Parameter(Descriptor::kKey); |
- Node* context = assembler.Parameter(Descriptor::kContext); |
+ Node* object = Parameter(Descriptor::kObject); |
+ Node* key = Parameter(Descriptor::kKey); |
+ Node* context = Parameter(Descriptor::kContext); |
- Label runtime(&assembler, CodeStubAssembler::Label::kDeferred); |
- Node* elements = assembler.LoadElements(object); |
- elements = assembler.TryGrowElementsCapacity( |
- object, elements, FAST_DOUBLE_ELEMENTS, key, &runtime); |
- assembler.Return(elements); |
+ Label runtime(this, Label::kDeferred); |
+ Node* elements = LoadElements(object); |
+ elements = TryGrowElementsCapacity(object, elements, FAST_DOUBLE_ELEMENTS, |
+ key, &runtime); |
+ Return(elements); |
- assembler.Bind(&runtime); |
- assembler.TailCallRuntime(Runtime::kGrowArrayElements, context, object, key); |
+ Bind(&runtime); |
+ TailCallRuntime(Runtime::kGrowArrayElements, context, object, key); |
} |
-void Builtins::Generate_GrowFastSmiOrObjectElements( |
- compiler::CodeAssemblerState* state) { |
- typedef CodeStubAssembler::Label Label; |
- typedef compiler::Node Node; |
+TF_BUILTIN(GrowFastSmiOrObjectElements, CodeStubAssembler) { |
typedef GrowArrayElementsDescriptor Descriptor; |
- CodeStubAssembler assembler(state); |
- Node* object = assembler.Parameter(Descriptor::kObject); |
- Node* key = assembler.Parameter(Descriptor::kKey); |
- Node* context = assembler.Parameter(Descriptor::kContext); |
+ Node* object = Parameter(Descriptor::kObject); |
+ Node* key = Parameter(Descriptor::kKey); |
+ Node* context = Parameter(Descriptor::kContext); |
- Label runtime(&assembler, CodeStubAssembler::Label::kDeferred); |
- Node* elements = assembler.LoadElements(object); |
- elements = assembler.TryGrowElementsCapacity(object, elements, FAST_ELEMENTS, |
- key, &runtime); |
- assembler.Return(elements); |
+ Label runtime(this, Label::kDeferred); |
+ Node* elements = LoadElements(object); |
+ elements = |
+ TryGrowElementsCapacity(object, elements, FAST_ELEMENTS, key, &runtime); |
+ Return(elements); |
- assembler.Bind(&runtime); |
- assembler.TailCallRuntime(Runtime::kGrowArrayElements, context, object, key); |
+ Bind(&runtime); |
+ TailCallRuntime(Runtime::kGrowArrayElements, context, object, key); |
} |
-namespace { |
+TF_BUILTIN(NewUnmappedArgumentsElements, CodeStubAssembler) { |
+ typedef NewArgumentsElementsDescriptor Descriptor; |
-void Generate_NewArgumentsElements(CodeStubAssembler* assembler, |
- compiler::Node* frame, |
- compiler::Node* length) { |
- typedef CodeStubAssembler::Label Label; |
- typedef CodeStubAssembler::Variable Variable; |
- typedef compiler::Node Node; |
+ Node* frame = Parameter(Descriptor::kFrame); |
+ Node* length = SmiToWord(Parameter(Descriptor::kLength)); |
// Check if we can allocate in new space. |
ElementsKind kind = FAST_ELEMENTS; |
int max_elements = FixedArray::GetMaxLengthForNewSpaceAllocation(kind); |
- Label if_newspace(assembler), if_oldspace(assembler, Label::kDeferred); |
- assembler->Branch(assembler->IntPtrLessThan( |
- length, assembler->IntPtrConstant(max_elements)), |
- &if_newspace, &if_oldspace); |
+ Label if_newspace(this), if_oldspace(this, Label::kDeferred); |
+ Branch(IntPtrLessThan(length, IntPtrConstant(max_elements)), &if_newspace, |
+ &if_oldspace); |
- assembler->Bind(&if_newspace); |
+ Bind(&if_newspace); |
{ |
// Prefer EmptyFixedArray in case of non-positive {length} (the {length} |
// can be negative here for rest parameters). |
- Label if_empty(assembler), if_notempty(assembler); |
- assembler->Branch( |
- assembler->IntPtrLessThanOrEqual(length, assembler->IntPtrConstant(0)), |
- &if_empty, &if_notempty); |
+ Label if_empty(this), if_notempty(this); |
+ Branch(IntPtrLessThanOrEqual(length, IntPtrConstant(0)), &if_empty, |
+ &if_notempty); |
- assembler->Bind(&if_empty); |
- assembler->Return(assembler->EmptyFixedArrayConstant()); |
+ Bind(&if_empty); |
+ Return(EmptyFixedArrayConstant()); |
- assembler->Bind(&if_notempty); |
+ Bind(&if_notempty); |
{ |
// Allocate a FixedArray in new space. |
- Node* result = assembler->AllocateFixedArray(kind, length); |
+ Node* result = AllocateFixedArray(kind, length); |
// Compute the effective {offset} into the {frame}. |
- Node* offset = assembler->IntPtrAdd(length, assembler->IntPtrConstant(1)); |
+ Node* offset = IntPtrAdd(length, IntPtrConstant(1)); |
// Copy the parameters from {frame} (starting at {offset}) to {result}. |
- Variable var_index(assembler, MachineType::PointerRepresentation()); |
- Label loop(assembler, &var_index), done_loop(assembler); |
- var_index.Bind(assembler->IntPtrConstant(0)); |
- assembler->Goto(&loop); |
- assembler->Bind(&loop); |
+ Variable var_index(this, MachineType::PointerRepresentation()); |
+ Label loop(this, &var_index), done_loop(this); |
+ var_index.Bind(IntPtrConstant(0)); |
+ Goto(&loop); |
+ Bind(&loop); |
{ |
// Load the current {index}. |
Node* index = var_index.value(); |
// Check if we are done. |
- assembler->GotoIf(assembler->WordEqual(index, length), &done_loop); |
+ GotoIf(WordEqual(index, length), &done_loop); |
// Load the parameter at the given {index}. |
- Node* value = assembler->Load( |
- MachineType::AnyTagged(), frame, |
- assembler->WordShl(assembler->IntPtrSub(offset, index), |
- assembler->IntPtrConstant(kPointerSizeLog2))); |
+ Node* value = Load(MachineType::AnyTagged(), frame, |
+ WordShl(IntPtrSub(offset, index), |
+ IntPtrConstant(kPointerSizeLog2))); |
// Store the {value} into the {result}. |
- assembler->StoreFixedArrayElement(result, index, value, |
- SKIP_WRITE_BARRIER); |
+ StoreFixedArrayElement(result, index, value, SKIP_WRITE_BARRIER); |
// Continue with next {index}. |
- var_index.Bind( |
- assembler->IntPtrAdd(index, assembler->IntPtrConstant(1))); |
- assembler->Goto(&loop); |
+ var_index.Bind(IntPtrAdd(index, IntPtrConstant(1))); |
+ Goto(&loop); |
} |
- assembler->Bind(&done_loop); |
- assembler->Return(result); |
+ Bind(&done_loop); |
+ Return(result); |
} |
} |
- assembler->Bind(&if_oldspace); |
+ Bind(&if_oldspace); |
{ |
// Allocate in old space (or large object space). |
- assembler->TailCallRuntime( |
- Runtime::kNewArgumentsElements, assembler->NoContextConstant(), |
- assembler->BitcastWordToTagged(frame), assembler->SmiFromWord(length)); |
+ TailCallRuntime(Runtime::kNewArgumentsElements, NoContextConstant(), |
+ BitcastWordToTagged(frame), SmiFromWord(length)); |
} |
} |
-} // namespace |
- |
-void Builtins::Generate_NewUnmappedArgumentsElements( |
- compiler::CodeAssemblerState* state) { |
- typedef compiler::Node Node; |
- typedef NewArgumentsElementsDescriptor Descriptor; |
- CodeStubAssembler assembler(state); |
- |
- Node* frame = assembler.Parameter(Descriptor::kFrame); |
- Node* length = assembler.Parameter(Descriptor::kLength); |
- Generate_NewArgumentsElements(&assembler, frame, assembler.SmiToWord(length)); |
-} |
- |
-void Builtins::Generate_ReturnReceiver(compiler::CodeAssemblerState* state) { |
- CodeStubAssembler assembler(state); |
- assembler.Return(assembler.Parameter(0)); |
-} |
+TF_BUILTIN(ReturnReceiver, CodeStubAssembler) { Return(Parameter(0)); } |
} // namespace internal |
} // namespace v8 |