Commit 27cfcf56 authored by Igor Sheludko's avatar Igor Sheludko Committed by Commit Bot

[cleanup] Fix kPointerSize usages in platform-independent src/builtins/

Bug: v8:8477, v8:8562
Change-Id: Iebb60551a461304539d943a080ce107eecf6fdbf
Reviewed-on: https://chromium-review.googlesource.com/c/1384264Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58371}
parent 0382ca40
...@@ -101,7 +101,7 @@ Node* ArgumentsBuiltinsAssembler::ConstructParametersObjectFromArgs( ...@@ -101,7 +101,7 @@ Node* ArgumentsBuiltinsAssembler::ConstructParametersObjectFromArgs(
[this, elements, &offset](Node* arg) { [this, elements, &offset](Node* arg) {
StoreNoWriteBarrier(MachineRepresentation::kTagged, StoreNoWriteBarrier(MachineRepresentation::kTagged,
elements, offset.value(), arg); elements, offset.value(), arg);
Increment(&offset, kPointerSize); Increment(&offset, kSystemPointerSize);
}, },
first_arg, nullptr, param_mode); first_arg, nullptr, param_mode);
return result; return result;
...@@ -268,12 +268,12 @@ Node* ArgumentsBuiltinsAssembler::EmitFastNewSloppyArguments(Node* context, ...@@ -268,12 +268,12 @@ Node* ArgumentsBuiltinsAssembler::EmitFastNewSloppyArguments(Node* context,
mapped_offset = BuildFastLoop( mapped_offset = BuildFastLoop(
var_list1, argument_offset, mapped_offset, var_list1, argument_offset, mapped_offset,
[this, elements, &current_argument](Node* offset) { [this, elements, &current_argument](Node* offset) {
Increment(&current_argument, kPointerSize); Increment(&current_argument, kSystemPointerSize);
Node* arg = LoadBufferObject(current_argument.value(), 0); Node* arg = LoadBufferObject(current_argument.value(), 0);
StoreNoWriteBarrier(MachineRepresentation::kTagged, elements, offset, StoreNoWriteBarrier(MachineRepresentation::kTagged, elements, offset,
arg); arg);
}, },
-kPointerSize, INTPTR_PARAMETERS); -kTaggedSize, INTPTR_PARAMETERS);
// Copy the parameter slots and the holes in the arguments. // Copy the parameter slots and the holes in the arguments.
// We need to fill in mapped_count slots. They index the context, // We need to fill in mapped_count slots. They index the context,
...@@ -291,24 +291,23 @@ Node* ArgumentsBuiltinsAssembler::EmitFastNewSloppyArguments(Node* context, ...@@ -291,24 +291,23 @@ Node* ArgumentsBuiltinsAssembler::EmitFastNewSloppyArguments(Node* context,
mapped_count, mode)); mapped_count, mode));
Node* the_hole = TheHoleConstant(); Node* the_hole = TheHoleConstant();
VariableList var_list2({&context_index}, zone()); VariableList var_list2({&context_index}, zone());
const int kParameterMapHeaderSize = const int kParameterMapHeaderSize = FixedArray::OffsetOfElementAt(2);
FixedArray::kHeaderSize + 2 * kPointerSize;
Node* adjusted_map_array = IntPtrAdd( Node* adjusted_map_array = IntPtrAdd(
BitcastTaggedToWord(map_array), BitcastTaggedToWord(map_array),
IntPtrConstant(kParameterMapHeaderSize - FixedArray::kHeaderSize)); IntPtrConstant(kParameterMapHeaderSize - FixedArray::kHeaderSize));
Node* zero_offset = ElementOffsetFromIndex( Node* zero_offset = ElementOffsetFromIndex(
zero, PACKED_ELEMENTS, mode, FixedArray::kHeaderSize - kHeapObjectTag); zero, PACKED_ELEMENTS, mode, FixedArray::kHeaderSize - kHeapObjectTag);
BuildFastLoop(var_list2, mapped_offset, zero_offset, BuildFastLoop(
[this, the_hole, elements, adjusted_map_array, &context_index, var_list2, mapped_offset, zero_offset,
mode](Node* offset) { [=, &context_index](Node* offset) {
StoreNoWriteBarrier(MachineRepresentation::kTagged, StoreNoWriteBarrier(MachineRepresentation::kTagged, elements, offset,
elements, offset, the_hole); the_hole);
StoreNoWriteBarrier( StoreNoWriteBarrier(MachineRepresentation::kTagged,
MachineRepresentation::kTagged, adjusted_map_array, adjusted_map_array, offset,
offset, ParameterToTagged(context_index.value(), mode)); ParameterToTagged(context_index.value(), mode));
Increment(&context_index, 1, mode); Increment(&context_index, 1, mode);
}, },
-kPointerSize, INTPTR_PARAMETERS); -kTaggedSize, INTPTR_PARAMETERS);
result.Bind(argument_object); result.Bind(argument_object);
Goto(&done); Goto(&done);
......
...@@ -3731,7 +3731,7 @@ void ArrayBuiltinsAssembler::GenerateConstructor( ...@@ -3731,7 +3731,7 @@ void ArrayBuiltinsAssembler::GenerateConstructor(
TailCallRuntime(Runtime::kAbort, context, reason); TailCallRuntime(Runtime::kAbort, context, reason);
} else { } else {
int element_size = int element_size =
IsDoubleElementsKind(elements_kind) ? kDoubleSize : kPointerSize; IsDoubleElementsKind(elements_kind) ? kDoubleSize : kTaggedSize;
int max_fast_elements = int max_fast_elements =
(kMaxRegularHeapObjectSize - FixedArray::kHeaderSize - JSArray::kSize - (kMaxRegularHeapObjectSize - FixedArray::kHeaderSize - JSArray::kSize -
AllocationMemento::kSize) / AllocationMemento::kSize) /
......
...@@ -77,7 +77,7 @@ TF_BUILTIN(AsyncFunctionEnter, AsyncFunctionBuiltinsAssembler) { ...@@ -77,7 +77,7 @@ TF_BUILTIN(AsyncFunctionEnter, AsyncFunctionBuiltinsAssembler) {
TNode<IntPtrT> frame_size = ChangeInt32ToIntPtr(LoadObjectField( TNode<IntPtrT> frame_size = ChangeInt32ToIntPtr(LoadObjectField(
bytecode_array, BytecodeArray::kFrameSizeOffset, MachineType::Int32())); bytecode_array, BytecodeArray::kFrameSizeOffset, MachineType::Int32()));
TNode<IntPtrT> parameters_and_register_length = TNode<IntPtrT> parameters_and_register_length =
Signed(IntPtrAdd(WordSar(frame_size, IntPtrConstant(kPointerSizeLog2)), Signed(IntPtrAdd(WordSar(frame_size, IntPtrConstant(kTaggedSizeLog2)),
formal_parameter_count)); formal_parameter_count));
// Allocate space for the promise, the async function object // Allocate space for the promise, the async function object
...@@ -86,7 +86,7 @@ TF_BUILTIN(AsyncFunctionEnter, AsyncFunctionBuiltinsAssembler) { ...@@ -86,7 +86,7 @@ TF_BUILTIN(AsyncFunctionEnter, AsyncFunctionBuiltinsAssembler) {
IntPtrConstant(JSPromise::kSizeWithEmbedderFields + IntPtrConstant(JSPromise::kSizeWithEmbedderFields +
JSAsyncFunctionObject::kSize + FixedArray::kHeaderSize), JSAsyncFunctionObject::kSize + FixedArray::kHeaderSize),
Signed(WordShl(parameters_and_register_length, Signed(WordShl(parameters_and_register_length,
IntPtrConstant(kPointerSizeLog2)))); IntPtrConstant(kTaggedSizeLog2))));
TNode<HeapObject> base = AllocateInNewSpace(size); TNode<HeapObject> base = AllocateInNewSpace(size);
// Initialize the register file. // Initialize the register file.
......
...@@ -68,7 +68,7 @@ Node* AsyncBuiltinsAssembler::AwaitOld(Node* context, Node* generator, ...@@ -68,7 +68,7 @@ Node* AsyncBuiltinsAssembler::AwaitOld(Node* context, Node* generator,
// JSPromise::kSizeWithEmbedderFields. // JSPromise::kSizeWithEmbedderFields.
CSA_ASSERT(this, WordEqual(LoadMapInstanceSizeInWords(promise_map), CSA_ASSERT(this, WordEqual(LoadMapInstanceSizeInWords(promise_map),
IntPtrConstant(JSPromise::kSizeWithEmbedderFields / IntPtrConstant(JSPromise::kSizeWithEmbedderFields /
kPointerSize))); kTaggedSize)));
TNode<HeapObject> wrapped_value = InnerAllocate(base, kWrappedPromiseOffset); TNode<HeapObject> wrapped_value = InnerAllocate(base, kWrappedPromiseOffset);
{ {
// Initialize Promise // Initialize Promise
...@@ -255,8 +255,8 @@ void AsyncBuiltinsAssembler::InitializeNativeClosure(Node* context, ...@@ -255,8 +255,8 @@ void AsyncBuiltinsAssembler::InitializeNativeClosure(Node* context,
// JSFunction. // JSFunction.
CSA_ASSERT(this, WordEqual(LoadMapInstanceSizeInWords(function_map), CSA_ASSERT(this, WordEqual(LoadMapInstanceSizeInWords(function_map),
IntPtrConstant(JSFunction::kSizeWithoutPrototype / IntPtrConstant(JSFunction::kSizeWithoutPrototype /
kPointerSize))); kTaggedSize)));
STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize); STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kTaggedSize);
StoreMapNoWriteBarrier(function, function_map); StoreMapNoWriteBarrier(function, function_map);
StoreObjectFieldRoot(function, JSObject::kPropertiesOrHashOffset, StoreObjectFieldRoot(function, JSObject::kPropertiesOrHashOffset,
RootIndex::kEmptyFixedArray); RootIndex::kEmptyFixedArray);
......
...@@ -1005,7 +1005,7 @@ TNode<JSArray> CollectionsBuiltinsAssembler::MapIteratorToList( ...@@ -1005,7 +1005,7 @@ TNode<JSArray> CollectionsBuiltinsAssembler::MapIteratorToList(
LoadFixedArrayElement(table, entry_start_position, LoadFixedArrayElement(table, entry_start_position,
(OrderedHashMap::HashTableStartIndex() + (OrderedHashMap::HashTableStartIndex() +
OrderedHashMap::kValueOffset) * OrderedHashMap::kValueOffset) *
kPointerSize); kTaggedSize);
Store(elements, var_offset.value(), entry_value); Store(elements, var_offset.value(), entry_value);
Goto(&continue_loop); Goto(&continue_loop);
...@@ -1016,7 +1016,7 @@ TNode<JSArray> CollectionsBuiltinsAssembler::MapIteratorToList( ...@@ -1016,7 +1016,7 @@ TNode<JSArray> CollectionsBuiltinsAssembler::MapIteratorToList(
// Increment the array offset and continue the loop to the next entry. // Increment the array offset and continue the loop to the next entry.
var_index = cur_index; var_index = cur_index;
var_offset.Bind( var_offset.Bind(
IntPtrAdd(var_offset.value(), IntPtrConstant(kPointerSize))); IntPtrAdd(var_offset.value(), IntPtrConstant(kTaggedSize)));
Goto(&loop); Goto(&loop);
} }
} }
...@@ -1101,8 +1101,7 @@ TNode<JSArray> CollectionsBuiltinsAssembler::SetOrSetIteratorToList( ...@@ -1101,8 +1101,7 @@ TNode<JSArray> CollectionsBuiltinsAssembler::SetOrSetIteratorToList(
Store(elements, var_offset.value(), entry_key); Store(elements, var_offset.value(), entry_key);
var_index = cur_index; var_index = cur_index;
var_offset.Bind( var_offset.Bind(IntPtrAdd(var_offset.value(), IntPtrConstant(kTaggedSize)));
IntPtrAdd(var_offset.value(), IntPtrConstant(kPointerSize)));
Goto(&loop); Goto(&loop);
} }
...@@ -1313,7 +1312,7 @@ TF_BUILTIN(OrderedHashTableHealIndex, CollectionsBuiltinsAssembler) { ...@@ -1313,7 +1312,7 @@ TF_BUILTIN(OrderedHashTableHealIndex, CollectionsBuiltinsAssembler) {
STATIC_ASSERT(OrderedHashMap::RemovedHolesIndex() == STATIC_ASSERT(OrderedHashMap::RemovedHolesIndex() ==
OrderedHashSet::RemovedHolesIndex()); OrderedHashSet::RemovedHolesIndex());
TNode<Smi> removed_index = CAST(LoadFixedArrayElement( TNode<Smi> removed_index = CAST(LoadFixedArrayElement(
CAST(table), i, OrderedHashMap::RemovedHolesIndex() * kPointerSize)); CAST(table), i, OrderedHashMap::RemovedHolesIndex() * kTaggedSize));
GotoIf(SmiGreaterThanOrEqual(removed_index, index), &return_index); GotoIf(SmiGreaterThanOrEqual(removed_index, index), &return_index);
Decrement(&var_index, 1, SMI_PARAMETERS); Decrement(&var_index, 1, SMI_PARAMETERS);
Increment(&var_i); Increment(&var_i);
...@@ -1412,7 +1411,7 @@ CollectionsBuiltinsAssembler::NextSkipHoles(TNode<TableType> table, ...@@ -1412,7 +1411,7 @@ CollectionsBuiltinsAssembler::NextSkipHoles(TNode<TableType> table,
number_of_buckets); number_of_buckets);
entry_key = entry_key =
LoadFixedArrayElement(table, entry_start_position, LoadFixedArrayElement(table, entry_start_position,
TableType::HashTableStartIndex() * kPointerSize); TableType::HashTableStartIndex() * kTaggedSize);
Increment(&var_index); Increment(&var_index);
Branch(IsTheHole(entry_key), &loop, &done_loop); Branch(IsTheHole(entry_key), &loop, &done_loop);
} }
...@@ -1441,7 +1440,7 @@ TF_BUILTIN(MapPrototypeGet, CollectionsBuiltinsAssembler) { ...@@ -1441,7 +1440,7 @@ TF_BUILTIN(MapPrototypeGet, CollectionsBuiltinsAssembler) {
Return(LoadFixedArrayElement( Return(LoadFixedArrayElement(
CAST(table), SmiUntag(index), CAST(table), SmiUntag(index),
(OrderedHashMap::HashTableStartIndex() + OrderedHashMap::kValueOffset) * (OrderedHashMap::HashTableStartIndex() + OrderedHashMap::kValueOffset) *
kPointerSize)); kTaggedSize));
BIND(&if_not_found); BIND(&if_not_found);
Return(UndefinedConstant()); Return(UndefinedConstant());
...@@ -1511,8 +1510,8 @@ TF_BUILTIN(MapPrototypeSet, CollectionsBuiltinsAssembler) { ...@@ -1511,8 +1510,8 @@ TF_BUILTIN(MapPrototypeSet, CollectionsBuiltinsAssembler) {
// If we found the entry, we just store the value there. // If we found the entry, we just store the value there.
StoreFixedArrayElement(table, entry_start_position_or_hash.value(), value, StoreFixedArrayElement(table, entry_start_position_or_hash.value(), value,
UPDATE_WRITE_BARRIER, UPDATE_WRITE_BARRIER,
kPointerSize * (OrderedHashMap::HashTableStartIndex() + kTaggedSize * (OrderedHashMap::HashTableStartIndex() +
OrderedHashMap::kValueOffset)); OrderedHashMap::kValueOffset));
Return(receiver); Return(receiver);
Label no_hash(this), add_entry(this), store_new_entry(this); Label no_hash(this), add_entry(this), store_new_entry(this);
...@@ -1573,24 +1572,24 @@ void CollectionsBuiltinsAssembler::StoreOrderedHashMapNewEntry( ...@@ -1573,24 +1572,24 @@ void CollectionsBuiltinsAssembler::StoreOrderedHashMapNewEntry(
Node* const bucket = Node* const bucket =
WordAnd(hash, IntPtrSub(number_of_buckets, IntPtrConstant(1))); WordAnd(hash, IntPtrSub(number_of_buckets, IntPtrConstant(1)));
Node* const bucket_entry = LoadFixedArrayElement( Node* const bucket_entry = LoadFixedArrayElement(
table, bucket, OrderedHashMap::HashTableStartIndex() * kPointerSize); table, bucket, OrderedHashMap::HashTableStartIndex() * kTaggedSize);
// Store the entry elements. // Store the entry elements.
Node* const entry_start = IntPtrAdd( Node* const entry_start = IntPtrAdd(
IntPtrMul(occupancy, IntPtrConstant(OrderedHashMap::kEntrySize)), IntPtrMul(occupancy, IntPtrConstant(OrderedHashMap::kEntrySize)),
number_of_buckets); number_of_buckets);
StoreFixedArrayElement(table, entry_start, key, UPDATE_WRITE_BARRIER, StoreFixedArrayElement(table, entry_start, key, UPDATE_WRITE_BARRIER,
kPointerSize * OrderedHashMap::HashTableStartIndex()); kTaggedSize * OrderedHashMap::HashTableStartIndex());
StoreFixedArrayElement(table, entry_start, value, UPDATE_WRITE_BARRIER, StoreFixedArrayElement(table, entry_start, value, UPDATE_WRITE_BARRIER,
kPointerSize * (OrderedHashMap::HashTableStartIndex() + kTaggedSize * (OrderedHashMap::HashTableStartIndex() +
OrderedHashMap::kValueOffset)); OrderedHashMap::kValueOffset));
StoreFixedArrayElement(table, entry_start, bucket_entry, SKIP_WRITE_BARRIER, StoreFixedArrayElement(table, entry_start, bucket_entry, SKIP_WRITE_BARRIER,
kPointerSize * (OrderedHashMap::HashTableStartIndex() + kTaggedSize * (OrderedHashMap::HashTableStartIndex() +
OrderedHashMap::kChainOffset)); OrderedHashMap::kChainOffset));
// Update the bucket head. // Update the bucket head.
StoreFixedArrayElement(table, bucket, SmiTag(occupancy), SKIP_WRITE_BARRIER, StoreFixedArrayElement(table, bucket, SmiTag(occupancy), SKIP_WRITE_BARRIER,
OrderedHashMap::HashTableStartIndex() * kPointerSize); OrderedHashMap::HashTableStartIndex() * kTaggedSize);
// Bump the elements count. // Bump the elements count.
TNode<Smi> const number_of_elements = TNode<Smi> const number_of_elements =
...@@ -1626,11 +1625,11 @@ TF_BUILTIN(MapPrototypeDelete, CollectionsBuiltinsAssembler) { ...@@ -1626,11 +1625,11 @@ TF_BUILTIN(MapPrototypeDelete, CollectionsBuiltinsAssembler) {
// If we found the entry, mark the entry as deleted. // If we found the entry, mark the entry as deleted.
StoreFixedArrayElement(table, entry_start_position_or_hash.value(), StoreFixedArrayElement(table, entry_start_position_or_hash.value(),
TheHoleConstant(), UPDATE_WRITE_BARRIER, TheHoleConstant(), UPDATE_WRITE_BARRIER,
kPointerSize * OrderedHashMap::HashTableStartIndex()); kTaggedSize * OrderedHashMap::HashTableStartIndex());
StoreFixedArrayElement(table, entry_start_position_or_hash.value(), StoreFixedArrayElement(table, entry_start_position_or_hash.value(),
TheHoleConstant(), UPDATE_WRITE_BARRIER, TheHoleConstant(), UPDATE_WRITE_BARRIER,
kPointerSize * (OrderedHashMap::HashTableStartIndex() + kTaggedSize * (OrderedHashMap::HashTableStartIndex() +
OrderedHashMap::kValueOffset)); OrderedHashMap::kValueOffset));
// Decrement the number of elements, increment the number of deleted elements. // Decrement the number of elements, increment the number of deleted elements.
TNode<Smi> const number_of_elements = SmiSub( TNode<Smi> const number_of_elements = SmiSub(
...@@ -1743,21 +1742,21 @@ void CollectionsBuiltinsAssembler::StoreOrderedHashSetNewEntry( ...@@ -1743,21 +1742,21 @@ void CollectionsBuiltinsAssembler::StoreOrderedHashSetNewEntry(
Node* const bucket = Node* const bucket =
WordAnd(hash, IntPtrSub(number_of_buckets, IntPtrConstant(1))); WordAnd(hash, IntPtrSub(number_of_buckets, IntPtrConstant(1)));
Node* const bucket_entry = LoadFixedArrayElement( Node* const bucket_entry = LoadFixedArrayElement(
table, bucket, OrderedHashSet::HashTableStartIndex() * kPointerSize); table, bucket, OrderedHashSet::HashTableStartIndex() * kTaggedSize);
// Store the entry elements. // Store the entry elements.
Node* const entry_start = IntPtrAdd( Node* const entry_start = IntPtrAdd(
IntPtrMul(occupancy, IntPtrConstant(OrderedHashSet::kEntrySize)), IntPtrMul(occupancy, IntPtrConstant(OrderedHashSet::kEntrySize)),
number_of_buckets); number_of_buckets);
StoreFixedArrayElement(table, entry_start, key, UPDATE_WRITE_BARRIER, StoreFixedArrayElement(table, entry_start, key, UPDATE_WRITE_BARRIER,
kPointerSize * OrderedHashSet::HashTableStartIndex()); kTaggedSize * OrderedHashSet::HashTableStartIndex());
StoreFixedArrayElement(table, entry_start, bucket_entry, SKIP_WRITE_BARRIER, StoreFixedArrayElement(table, entry_start, bucket_entry, SKIP_WRITE_BARRIER,
kPointerSize * (OrderedHashSet::HashTableStartIndex() + kTaggedSize * (OrderedHashSet::HashTableStartIndex() +
OrderedHashSet::kChainOffset)); OrderedHashSet::kChainOffset));
// Update the bucket head. // Update the bucket head.
StoreFixedArrayElement(table, bucket, SmiTag(occupancy), SKIP_WRITE_BARRIER, StoreFixedArrayElement(table, bucket, SmiTag(occupancy), SKIP_WRITE_BARRIER,
OrderedHashSet::HashTableStartIndex() * kPointerSize); OrderedHashSet::HashTableStartIndex() * kTaggedSize);
// Bump the elements count. // Bump the elements count.
TNode<Smi> const number_of_elements = TNode<Smi> const number_of_elements =
...@@ -1793,7 +1792,7 @@ TF_BUILTIN(SetPrototypeDelete, CollectionsBuiltinsAssembler) { ...@@ -1793,7 +1792,7 @@ TF_BUILTIN(SetPrototypeDelete, CollectionsBuiltinsAssembler) {
// If we found the entry, mark the entry as deleted. // If we found the entry, mark the entry as deleted.
StoreFixedArrayElement(table, entry_start_position_or_hash.value(), StoreFixedArrayElement(table, entry_start_position_or_hash.value(),
TheHoleConstant(), UPDATE_WRITE_BARRIER, TheHoleConstant(), UPDATE_WRITE_BARRIER,
kPointerSize * OrderedHashSet::HashTableStartIndex()); kTaggedSize * OrderedHashSet::HashTableStartIndex());
// Decrement the number of elements, increment the number of deleted elements. // Decrement the number of elements, increment the number of deleted elements.
TNode<Smi> const number_of_elements = SmiSub( TNode<Smi> const number_of_elements = SmiSub(
...@@ -1882,7 +1881,7 @@ TF_BUILTIN(MapPrototypeForEach, CollectionsBuiltinsAssembler) { ...@@ -1882,7 +1881,7 @@ TF_BUILTIN(MapPrototypeForEach, CollectionsBuiltinsAssembler) {
Node* entry_value = LoadFixedArrayElement( Node* entry_value = LoadFixedArrayElement(
table, entry_start_position, table, entry_start_position,
(OrderedHashMap::HashTableStartIndex() + OrderedHashMap::kValueOffset) * (OrderedHashMap::HashTableStartIndex() + OrderedHashMap::kValueOffset) *
kPointerSize); kTaggedSize);
// Invoke the {callback} passing the {entry_key}, {entry_value} and the // Invoke the {callback} passing the {entry_key}, {entry_value} and the
// {receiver}. // {receiver}.
...@@ -1971,7 +1970,7 @@ TF_BUILTIN(MapIteratorPrototypeNext, CollectionsBuiltinsAssembler) { ...@@ -1971,7 +1970,7 @@ TF_BUILTIN(MapIteratorPrototypeNext, CollectionsBuiltinsAssembler) {
var_value.Bind(LoadFixedArrayElement( var_value.Bind(LoadFixedArrayElement(
table, entry_start_position, table, entry_start_position,
(OrderedHashMap::HashTableStartIndex() + OrderedHashMap::kValueOffset) * (OrderedHashMap::HashTableStartIndex() + OrderedHashMap::kValueOffset) *
kPointerSize)); kTaggedSize));
Branch(InstanceTypeEqual(receiver_instance_type, JS_MAP_VALUE_ITERATOR_TYPE), Branch(InstanceTypeEqual(receiver_instance_type, JS_MAP_VALUE_ITERATOR_TYPE),
&return_value, &return_entry); &return_value, &return_entry);
......
...@@ -134,7 +134,7 @@ TF_BUILTIN(FastNewClosure, ConstructorBuiltinsAssembler) { ...@@ -134,7 +134,7 @@ TF_BUILTIN(FastNewClosure, ConstructorBuiltinsAssembler) {
BIND(&done); BIND(&done);
} }
STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize); STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kTaggedSize);
StoreObjectFieldNoWriteBarrier(result, JSFunction::kFeedbackCellOffset, StoreObjectFieldNoWriteBarrier(result, JSFunction::kFeedbackCellOffset,
feedback_cell); feedback_cell);
StoreObjectFieldNoWriteBarrier(result, JSFunction::kSharedFunctionInfoOffset, StoreObjectFieldNoWriteBarrier(result, JSFunction::kSharedFunctionInfoOffset,
...@@ -304,9 +304,9 @@ Node* ConstructorBuiltinsAssembler::EmitCreateRegExpLiteral( ...@@ -304,9 +304,9 @@ Node* ConstructorBuiltinsAssembler::EmitCreateRegExpLiteral(
{ {
Node* boilerplate = literal_site; Node* boilerplate = literal_site;
CSA_ASSERT(this, IsJSRegExp(boilerplate)); CSA_ASSERT(this, IsJSRegExp(boilerplate));
int size = JSRegExp::kSize + JSRegExp::kInObjectFieldCount * kPointerSize; int size = JSRegExp::kSize + JSRegExp::kInObjectFieldCount * kTaggedSize;
Node* copy = Allocate(size); Node* copy = Allocate(size);
for (int offset = 0; offset < size; offset += kPointerSize) { for (int offset = 0; offset < size; offset += kTaggedSize) {
Node* value = LoadObjectField(boilerplate, offset); Node* value = LoadObjectField(boilerplate, offset);
StoreObjectFieldNoWriteBarrier(copy, offset, value); StoreObjectFieldNoWriteBarrier(copy, offset, value);
} }
...@@ -545,7 +545,7 @@ Node* ConstructorBuiltinsAssembler::EmitCreateShallowObjectLiteral( ...@@ -545,7 +545,7 @@ Node* ConstructorBuiltinsAssembler::EmitCreateShallowObjectLiteral(
LoadObjectField<IntPtrT>(boilerplate, offset.value()); LoadObjectField<IntPtrT>(boilerplate, offset.value());
StoreObjectFieldNoWriteBarrier(copy, offset.value(), field); StoreObjectFieldNoWriteBarrier(copy, offset.value(), field);
} }
offset = IntPtrAdd(offset.value(), IntPtrConstant(kPointerSize)); offset = IntPtrAdd(offset.value(), IntPtrConstant(kTaggedSize));
Branch(WordNotEqual(offset.value(), instance_size), &continue_fast, Branch(WordNotEqual(offset.value(), instance_size), &continue_fast,
&done_init); &done_init);
} }
...@@ -561,33 +561,36 @@ Node* ConstructorBuiltinsAssembler::EmitCreateShallowObjectLiteral( ...@@ -561,33 +561,36 @@ Node* ConstructorBuiltinsAssembler::EmitCreateShallowObjectLiteral(
BIND(&continue_with_write_barrier); BIND(&continue_with_write_barrier);
{ {
Comment("Copy in-object properties slow"); Comment("Copy in-object properties slow");
BuildFastLoop(offset.value(), instance_size, BuildFastLoop(
[=](Node* offset) { offset.value(), instance_size,
Node* field = LoadObjectField(boilerplate, offset); [=](Node* offset) {
StoreObjectFieldNoWriteBarrier(copy, offset, field); // TODO(ishell): value decompression is not necessary here.
}, Node* field = LoadObjectField(boilerplate, offset);
kPointerSize, INTPTR_PARAMETERS, IndexAdvanceMode::kPost); StoreObjectFieldNoWriteBarrier(copy, offset, field);
},
kTaggedSize, INTPTR_PARAMETERS, IndexAdvanceMode::kPost);
Comment("Copy mutable HeapNumber values"); Comment("Copy mutable HeapNumber values");
BuildFastLoop(offset.value(), instance_size, BuildFastLoop(
[=](Node* offset) { offset.value(), instance_size,
Node* field = LoadObjectField(copy, offset); [=](Node* offset) {
Label copy_mutable_heap_number(this, Label::kDeferred), Node* field = LoadObjectField(copy, offset);
continue_loop(this); Label copy_mutable_heap_number(this, Label::kDeferred),
// We only have to clone complex field values. continue_loop(this);
GotoIf(TaggedIsSmi(field), &continue_loop); // We only have to clone complex field values.
Branch(IsMutableHeapNumber(field), GotoIf(TaggedIsSmi(field), &continue_loop);
&copy_mutable_heap_number, &continue_loop); Branch(IsMutableHeapNumber(field), &copy_mutable_heap_number,
BIND(&copy_mutable_heap_number); &continue_loop);
{ BIND(&copy_mutable_heap_number);
Node* double_value = LoadHeapNumberValue(field); {
Node* mutable_heap_number = Node* double_value = LoadHeapNumberValue(field);
AllocateMutableHeapNumberWithValue(double_value); Node* mutable_heap_number =
StoreObjectField(copy, offset, mutable_heap_number); AllocateMutableHeapNumberWithValue(double_value);
Goto(&continue_loop); StoreObjectField(copy, offset, mutable_heap_number);
} Goto(&continue_loop);
BIND(&continue_loop); }
}, BIND(&continue_loop);
kPointerSize, INTPTR_PARAMETERS, IndexAdvanceMode::kPost); },
kTaggedSize, INTPTR_PARAMETERS, IndexAdvanceMode::kPost);
Goto(&done_init); Goto(&done_init);
} }
BIND(&done_init); BIND(&done_init);
......
...@@ -44,8 +44,8 @@ void DateBuiltinsAssembler::Generate_DatePrototype_GetField(Node* context, ...@@ -44,8 +44,8 @@ void DateBuiltinsAssembler::Generate_DatePrototype_GetField(Node* context,
Node* cache_stamp = LoadObjectField(receiver, JSDate::kCacheStampOffset); Node* cache_stamp = LoadObjectField(receiver, JSDate::kCacheStampOffset);
GotoIf(WordNotEqual(date_cache_stamp, cache_stamp), &stamp_mismatch); GotoIf(WordNotEqual(date_cache_stamp, cache_stamp), &stamp_mismatch);
Return(LoadObjectField( Return(LoadObjectField(receiver,
receiver, JSDate::kValueOffset + field_index * kPointerSize)); JSDate::kValueOffset + field_index * kTaggedSize));
BIND(&stamp_mismatch); BIND(&stamp_mismatch);
} }
......
...@@ -249,7 +249,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler { ...@@ -249,7 +249,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
{ {
// Temp variable to calculate cell offset in bitmap. // Temp variable to calculate cell offset in bitmap.
Node* r0; Node* r0;
int shift = Bitmap::kBitsPerCellLog2 + kPointerSizeLog2 - int shift = Bitmap::kBitsPerCellLog2 + kSystemPointerSizeLog2 -
Bitmap::kBytesPerCellLog2; Bitmap::kBytesPerCellLog2;
r0 = WordShr(object, IntPtrConstant(shift)); r0 = WordShr(object, IntPtrConstant(shift));
r0 = WordAnd(r0, IntPtrConstant((kPageAlignmentMask >> shift) & r0 = WordAnd(r0, IntPtrConstant((kPageAlignmentMask >> shift) &
...@@ -259,7 +259,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler { ...@@ -259,7 +259,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
{ {
// Temp variable to calculate bit offset in cell. // Temp variable to calculate bit offset in cell.
Node* r1; Node* r1;
r1 = WordShr(object, IntPtrConstant(kPointerSizeLog2)); r1 = WordShr(object, IntPtrConstant(kSystemPointerSizeLog2));
r1 = WordAnd(r1, IntPtrConstant((1 << Bitmap::kBitsPerCellLog2) - 1)); r1 = WordAnd(r1, IntPtrConstant((1 << Bitmap::kBitsPerCellLog2) - 1));
// It seems that LSB(e.g. cl) is automatically used, so no manual masking // It seems that LSB(e.g. cl) is automatically used, so no manual masking
// is needed. Uncomment the following line otherwise. // is needed. Uncomment the following line otherwise.
...@@ -329,7 +329,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler { ...@@ -329,7 +329,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
StoreNoWriteBarrier(MachineType::PointerRepresentation(), store_buffer_top, StoreNoWriteBarrier(MachineType::PointerRepresentation(), store_buffer_top,
slot); slot);
Node* new_store_buffer_top = Node* new_store_buffer_top =
IntPtrAdd(store_buffer_top, IntPtrConstant(kPointerSize)); IntPtrAdd(store_buffer_top, IntPtrConstant(kSystemPointerSize));
StoreNoWriteBarrier(MachineType::PointerRepresentation(), StoreNoWriteBarrier(MachineType::PointerRepresentation(),
store_buffer_top_addr, new_store_buffer_top); store_buffer_top_addr, new_store_buffer_top);
......
...@@ -1395,7 +1395,7 @@ TF_BUILTIN(CreateGeneratorObject, ObjectBuiltinsAssembler) { ...@@ -1395,7 +1395,7 @@ TF_BUILTIN(CreateGeneratorObject, ObjectBuiltinsAssembler) {
MachineType::Uint16())); MachineType::Uint16()));
Node* frame_size = ChangeInt32ToIntPtr(LoadObjectField( Node* frame_size = ChangeInt32ToIntPtr(LoadObjectField(
bytecode_array, BytecodeArray::kFrameSizeOffset, MachineType::Int32())); bytecode_array, BytecodeArray::kFrameSizeOffset, MachineType::Int32()));
Node* size = IntPtrAdd(WordSar(frame_size, IntPtrConstant(kPointerSizeLog2)), Node* size = IntPtrAdd(WordSar(frame_size, IntPtrConstant(kTaggedSizeLog2)),
formal_parameter_count); formal_parameter_count);
Node* parameters_and_registers = AllocateFixedArray(HOLEY_ELEMENTS, size); Node* parameters_and_registers = AllocateFixedArray(HOLEY_ELEMENTS, size);
FillFixedArrayWithValue(HOLEY_ELEMENTS, parameters_and_registers, FillFixedArrayWithValue(HOLEY_ELEMENTS, parameters_and_registers,
......
...@@ -81,24 +81,24 @@ Node* ProxiesCodeStubAssembler::AllocateJSArrayForCodeStubArguments( ...@@ -81,24 +81,24 @@ Node* ProxiesCodeStubAssembler::AllocateJSArrayForCodeStubArguments(
kAllowLargeObjectAllocation); kAllowLargeObjectAllocation);
elements.Bind(allocated_elements); elements.Bind(allocated_elements);
VARIABLE(index, MachineType::PointerRepresentation(), TVARIABLE(IntPtrT, offset,
IntPtrConstant(FixedArrayBase::kHeaderSize - kHeapObjectTag)); IntPtrConstant(FixedArrayBase::kHeaderSize - kHeapObjectTag));
VariableList list({&index}, zone()); VariableList list({&offset}, zone());
GotoIf(SmiGreaterThan(length, SmiConstant(FixedArray::kMaxRegularLength)), GotoIf(SmiGreaterThan(length, SmiConstant(FixedArray::kMaxRegularLength)),
&if_large_object); &if_large_object);
args.ForEach(list, [=, &index](Node* arg) { args.ForEach(list, [=, &offset](Node* arg) {
StoreNoWriteBarrier(MachineRepresentation::kTagged, allocated_elements, StoreNoWriteBarrier(MachineRepresentation::kTagged, allocated_elements,
index.value(), arg); offset.value(), arg);
Increment(&index, kPointerSize); Increment(&offset, kTaggedSize);
}); });
Goto(&allocate_js_array); Goto(&allocate_js_array);
BIND(&if_large_object); BIND(&if_large_object);
{ {
args.ForEach(list, [=, &index](Node* arg) { args.ForEach(list, [=, &offset](Node* arg) {
Store(allocated_elements, index.value(), arg); Store(allocated_elements, offset.value(), arg);
Increment(&index, kPointerSize); Increment(&offset, kTaggedSize);
}); });
Goto(&allocate_js_array); Goto(&allocate_js_array);
} }
......
...@@ -118,7 +118,7 @@ TNode<Object> RegExpBuiltinsAssembler::FastLoadLastIndex( ...@@ -118,7 +118,7 @@ TNode<Object> RegExpBuiltinsAssembler::FastLoadLastIndex(
TNode<JSRegExp> regexp) { TNode<JSRegExp> regexp) {
// Load the in-object field. // Load the in-object field.
static const int field_offset = static const int field_offset =
JSRegExp::kSize + JSRegExp::kLastIndexFieldIndex * kPointerSize; JSRegExp::kSize + JSRegExp::kLastIndexFieldIndex * kTaggedSize;
return LoadObjectField(regexp, field_offset); return LoadObjectField(regexp, field_offset);
} }
...@@ -139,7 +139,7 @@ TNode<Object> RegExpBuiltinsAssembler::LoadLastIndex(TNode<Context> context, ...@@ -139,7 +139,7 @@ TNode<Object> RegExpBuiltinsAssembler::LoadLastIndex(TNode<Context> context,
void RegExpBuiltinsAssembler::FastStoreLastIndex(Node* regexp, Node* value) { void RegExpBuiltinsAssembler::FastStoreLastIndex(Node* regexp, Node* value) {
// Store the in-object field. // Store the in-object field.
static const int field_offset = static const int field_offset =
JSRegExp::kSize + JSRegExp::kLastIndexFieldIndex * kPointerSize; JSRegExp::kSize + JSRegExp::kLastIndexFieldIndex * kTaggedSize;
StoreObjectField(regexp, field_offset, value); StoreObjectField(regexp, field_offset, value);
} }
...@@ -592,7 +592,7 @@ TNode<HeapObject> RegExpBuiltinsAssembler::RegExpExecInternal( ...@@ -592,7 +592,7 @@ TNode<HeapObject> RegExpBuiltinsAssembler::RegExpExecInternal(
TNode<Smi> smi_value = SmiFromInt32(value); TNode<Smi> smi_value = SmiFromInt32(value);
StoreNoWriteBarrier(MachineRepresentation::kTagged, match_info, StoreNoWriteBarrier(MachineRepresentation::kTagged, match_info,
var_to_offset.value(), smi_value); var_to_offset.value(), smi_value);
Increment(&var_to_offset, kPointerSize); Increment(&var_to_offset, kTaggedSize);
}, },
kInt32Size, INTPTR_PARAMETERS, IndexAdvanceMode::kPost); kInt32Size, INTPTR_PARAMETERS, IndexAdvanceMode::kPost);
} }
...@@ -2497,10 +2497,10 @@ void RegExpBuiltinsAssembler::RegExpPrototypeSplitBody(Node* const context, ...@@ -2497,10 +2497,10 @@ void RegExpBuiltinsAssembler::RegExpPrototypeSplitBody(Node* const context,
Node* const reg = var_reg.value(); Node* const reg = var_reg.value();
Node* const from = LoadFixedArrayElement( Node* const from = LoadFixedArrayElement(
match_indices, reg, match_indices, reg,
RegExpMatchInfo::kFirstCaptureIndex * kPointerSize, mode); RegExpMatchInfo::kFirstCaptureIndex * kTaggedSize, mode);
TNode<Smi> const to = CAST(LoadFixedArrayElement( TNode<Smi> const to = CAST(LoadFixedArrayElement(
match_indices, reg, match_indices, reg,
(RegExpMatchInfo::kFirstCaptureIndex + 1) * kPointerSize, mode)); (RegExpMatchInfo::kFirstCaptureIndex + 1) * kTaggedSize, mode));
Label select_capture(this), select_undefined(this), store_value(this); Label select_capture(this), select_undefined(this), store_value(this);
VARIABLE(var_value, MachineRepresentation::kTagged); VARIABLE(var_value, MachineRepresentation::kTagged);
......
...@@ -2528,14 +2528,13 @@ TNode<JSArray> StringBuiltinsAssembler::StringToList(TNode<Context> context, ...@@ -2528,14 +2528,13 @@ TNode<JSArray> StringBuiltinsAssembler::StringToList(TNode<Context> context,
TNode<IntPtrT> ch_length = LoadStringLengthAsWord(value); TNode<IntPtrT> ch_length = LoadStringLengthAsWord(value);
var_position = IntPtrAdd(var_position.value(), ch_length); var_position = IntPtrAdd(var_position.value(), ch_length);
// Increment the array offset and continue the loop. // Increment the array offset and continue the loop.
var_offset = IntPtrAdd(var_offset.value(), IntPtrConstant(kPointerSize)); var_offset = IntPtrAdd(var_offset.value(), IntPtrConstant(kTaggedSize));
Goto(&next_codepoint); Goto(&next_codepoint);
} }
BIND(&done); BIND(&done);
TNode<IntPtrT> new_length = TNode<IntPtrT> new_length = IntPtrDiv(
IntPtrDiv(IntPtrSub(var_offset.value(), first_offset), IntPtrSub(var_offset.value(), first_offset), IntPtrConstant(kTaggedSize));
IntPtrConstant(kPointerSize));
CSA_ASSERT(this, IntPtrGreaterThanOrEqual(new_length, IntPtrConstant(0))); CSA_ASSERT(this, IntPtrGreaterThanOrEqual(new_length, IntPtrConstant(0)));
CSA_ASSERT(this, IntPtrGreaterThanOrEqual(length, new_length)); CSA_ASSERT(this, IntPtrGreaterThanOrEqual(length, new_length));
StoreObjectFieldNoWriteBarrier(array, JSArray::kLengthOffset, StoreObjectFieldNoWriteBarrier(array, JSArray::kLengthOffset,
......
...@@ -74,7 +74,7 @@ void TypedArrayBuiltinsAssembler::SetupTypedArray(TNode<JSTypedArray> holder, ...@@ -74,7 +74,7 @@ void TypedArrayBuiltinsAssembler::SetupTypedArray(TNode<JSTypedArray> holder,
byte_length, byte_length,
MachineType::PointerRepresentation()); MachineType::PointerRepresentation());
for (int offset = JSTypedArray::kHeaderSize; for (int offset = JSTypedArray::kHeaderSize;
offset < JSTypedArray::kSizeWithEmbedderFields; offset += kPointerSize) { offset < JSTypedArray::kSizeWithEmbedderFields; offset += kTaggedSize) {
StoreObjectField(holder, offset, SmiConstant(0)); StoreObjectField(holder, offset, SmiConstant(0));
} }
} }
......
...@@ -31,30 +31,22 @@ namespace { ...@@ -31,30 +31,22 @@ namespace {
struct BuiltinMetadata { struct BuiltinMetadata {
const char* name; const char* name;
Builtins::Kind kind; Builtins::Kind kind;
union { // For CPP and API builtins it's cpp_entry address and for TFJ it's a
Address cpp_entry; // For CPP and API builtins. // parameter count.
int8_t parameter_count; // For TFJ builtins. Address cpp_entry_or_parameter_count;
} kind_specific_data;
}; };
// clang-format off #define DECL_CPP(Name, ...) \
#define DECL_CPP(Name, ...) { #Name, Builtins::CPP, \ {#Name, Builtins::CPP, FUNCTION_ADDR(Builtin_##Name)},
{ FUNCTION_ADDR(Builtin_##Name) }}, #define DECL_API(Name, ...) \
#define DECL_API(Name, ...) { #Name, Builtins::API, \ {#Name, Builtins::API, FUNCTION_ADDR(Builtin_##Name)},
{ FUNCTION_ADDR(Builtin_##Name) }}, #define DECL_TFJ(Name, Count, ...) \
#ifdef V8_TARGET_BIG_ENDIAN {#Name, Builtins::TFJ, static_cast<Address>(Count)},
#define DECL_TFJ(Name, Count, ...) { #Name, Builtins::TFJ, \ #define DECL_TFC(Name, ...) {#Name, Builtins::TFC, kNullAddress},
{ static_cast<Address>(static_cast<uintptr_t>( \ #define DECL_TFS(Name, ...) {#Name, Builtins::TFS, kNullAddress},
Count) << (kBitsPerByte * (kPointerSize - 1))) }}, #define DECL_TFH(Name, ...) {#Name, Builtins::TFH, kNullAddress},
#else #define DECL_BCH(Name, ...) {#Name, Builtins::BCH, kNullAddress},
#define DECL_TFJ(Name, Count, ...) { #Name, Builtins::TFJ, \ #define DECL_ASM(Name, ...) {#Name, Builtins::ASM, kNullAddress},
{ static_cast<Address>(Count) }},
#endif
#define DECL_TFC(Name, ...) { #Name, Builtins::TFC, {} },
#define DECL_TFS(Name, ...) { #Name, Builtins::TFS, {} },
#define DECL_TFH(Name, ...) { #Name, Builtins::TFH, {} },
#define DECL_BCH(Name, ...) { #Name, Builtins::BCH, {} },
#define DECL_ASM(Name, ...) { #Name, Builtins::ASM, {} },
const BuiltinMetadata builtin_metadata[] = { const BuiltinMetadata builtin_metadata[] = {
BUILTIN_LIST(DECL_CPP, DECL_API, DECL_TFJ, DECL_TFC, DECL_TFS, DECL_TFH, BUILTIN_LIST(DECL_CPP, DECL_API, DECL_TFJ, DECL_TFC, DECL_TFS, DECL_TFH,
DECL_BCH, DECL_ASM) DECL_BCH, DECL_ASM)
...@@ -67,7 +59,6 @@ const BuiltinMetadata builtin_metadata[] = { ...@@ -67,7 +59,6 @@ const BuiltinMetadata builtin_metadata[] = {
#undef DECL_TFH #undef DECL_TFH
#undef DECL_BCH #undef DECL_BCH
#undef DECL_ASM #undef DECL_ASM
// clang-format on
} // namespace } // namespace
...@@ -138,7 +129,7 @@ Handle<Code> Builtins::builtin_handle(int index) { ...@@ -138,7 +129,7 @@ Handle<Code> Builtins::builtin_handle(int index) {
// static // static
int Builtins::GetStackParameterCount(Name name) { int Builtins::GetStackParameterCount(Name name) {
DCHECK(Builtins::KindOf(name) == TFJ); DCHECK(Builtins::KindOf(name) == TFJ);
return builtin_metadata[name].kind_specific_data.parameter_count; return static_cast<int>(builtin_metadata[name].cpp_entry_or_parameter_count);
} }
// static // static
...@@ -205,7 +196,7 @@ void Builtins::PrintBuiltinSize() { ...@@ -205,7 +196,7 @@ void Builtins::PrintBuiltinSize() {
// static // static
Address Builtins::CppEntryOf(int index) { Address Builtins::CppEntryOf(int index) {
DCHECK(Builtins::HasCppImplementation(index)); DCHECK(Builtins::HasCppImplementation(index));
return builtin_metadata[index].kind_specific_data.cpp_entry; return builtin_metadata[index].cpp_entry_or_parameter_count;
} }
// static // static
...@@ -221,7 +212,7 @@ bool Builtins::IsBuiltinHandle(Handle<HeapObject> maybe_code, ...@@ -221,7 +212,7 @@ bool Builtins::IsBuiltinHandle(Handle<HeapObject> maybe_code,
Address end = heap->builtin_address(Builtins::builtin_count); Address end = heap->builtin_address(Builtins::builtin_count);
if (handle_location >= end) return false; if (handle_location >= end) return false;
if (handle_location < start) return false; if (handle_location < start) return false;
*index = static_cast<int>(handle_location - start) >> kPointerSizeLog2; *index = static_cast<int>(handle_location - start) >> kSystemPointerSizeLog2;
DCHECK(Builtins::IsBuiltinId(*index)); DCHECK(Builtins::IsBuiltinId(*index));
return true; return true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment