Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(721)

Side by Side Diff: src/code-stub-assembler.h

Issue 2321993002: [stubs] CSA::CopyFixedArrayElements() is now able to convert elements' kind while copying. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/code-stub-assembler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_CODE_STUB_ASSEMBLER_H_ 5 #ifndef V8_CODE_STUB_ASSEMBLER_H_
6 #define V8_CODE_STUB_ASSEMBLER_H_ 6 #define V8_CODE_STUB_ASSEMBLER_H_
7 7
8 #include <functional> 8 #include <functional>
9 9
10 #include "src/compiler/code-assembler.h" 10 #include "src/compiler/code-assembler.h"
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 compiler::Node* capacity, 326 compiler::Node* capacity,
327 ParameterMode mode = INTEGER_PARAMETERS, 327 ParameterMode mode = INTEGER_PARAMETERS,
328 AllocationFlags flags = kNone); 328 AllocationFlags flags = kNone);
329 329
330 void FillFixedArrayWithValue(ElementsKind kind, compiler::Node* array, 330 void FillFixedArrayWithValue(ElementsKind kind, compiler::Node* array,
331 compiler::Node* from_index, 331 compiler::Node* from_index,
332 compiler::Node* to_index, 332 compiler::Node* to_index,
333 Heap::RootListIndex value_root_index, 333 Heap::RootListIndex value_root_index,
334 ParameterMode mode = INTEGER_PARAMETERS); 334 ParameterMode mode = INTEGER_PARAMETERS);
335 335
336 // Copies all elements from |from_array| of |length| size to
337 // |to_array| of the same size respecting the elements kind.
336 void CopyFixedArrayElements( 338 void CopyFixedArrayElements(
337 ElementsKind kind, compiler::Node* from_array, compiler::Node* to_array, 339 ElementsKind kind, compiler::Node* from_array, compiler::Node* to_array,
338 compiler::Node* element_count, 340 compiler::Node* length,
341 WriteBarrierMode barrier_mode = UPDATE_WRITE_BARRIER,
342 ParameterMode mode = INTEGER_PARAMETERS) {
343 CopyFixedArrayElements(kind, from_array, kind, to_array, length, length,
344 barrier_mode, mode);
345 }
346
347 // Copies |element_count| elements from |from_array| to |to_array| of
348 // |capacity| size respecting both array's elements kinds.
349 void CopyFixedArrayElements(
350 ElementsKind from_kind, compiler::Node* from_array, ElementsKind to_kind,
351 compiler::Node* to_array, compiler::Node* element_count,
352 compiler::Node* capacity,
339 WriteBarrierMode barrier_mode = UPDATE_WRITE_BARRIER, 353 WriteBarrierMode barrier_mode = UPDATE_WRITE_BARRIER,
340 ParameterMode mode = INTEGER_PARAMETERS); 354 ParameterMode mode = INTEGER_PARAMETERS);
341 355
356 // Loads an element from |array| of |from_kind| elements by given |offset|
357 // (NOTE: not index!), does a hole check if |if_hole| is provided and
358 // converts the value so that it becomes ready for storing to array of
359 // |to_kind| elements.
360 compiler::Node* LoadElementAndPrepareForStore(compiler::Node* array,
361 compiler::Node* offset,
362 ElementsKind from_kind,
363 ElementsKind to_kind,
364 Label* if_hole);
365
342 compiler::Node* CalculateNewElementsCapacity( 366 compiler::Node* CalculateNewElementsCapacity(
343 compiler::Node* old_capacity, ParameterMode mode = INTEGER_PARAMETERS); 367 compiler::Node* old_capacity, ParameterMode mode = INTEGER_PARAMETERS);
344 368
345 compiler::Node* CheckAndGrowElementsCapacity(compiler::Node* context, 369 compiler::Node* CheckAndGrowElementsCapacity(compiler::Node* context,
346 compiler::Node* elements, 370 compiler::Node* elements,
347 ElementsKind kind, 371 ElementsKind kind,
348 compiler::Node* key, 372 compiler::Node* key,
349 Label* fail); 373 Label* fail);
350 374
351 // Allocation site manipulation 375 // Allocation site manipulation
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 compiler::Node* SmiShiftBitsConstant(); 676 compiler::Node* SmiShiftBitsConstant();
653 677
654 static const int kElementLoopUnrollThreshold = 8; 678 static const int kElementLoopUnrollThreshold = 8;
655 }; 679 };
656 680
657 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); 681 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags);
658 682
659 } // namespace internal 683 } // namespace internal
660 } // namespace v8 684 } // namespace v8
661 #endif // V8_CODE_STUB_ASSEMBLER_H_ 685 #endif // V8_CODE_STUB_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « no previous file | src/code-stub-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698