Commit ef3d93ed authored by Simon Zünd's avatar Simon Zünd Committed by Commit Bot

[array] Skip write barrier when sorting packed Smis

R=jgruber@chromium.org

Bug: chromium:873555
Change-Id: I6268bedf47a89194875d1179e603bcfe972c9d68
Reviewed-on: https://chromium-review.googlesource.com/1172282Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Commit-Queue: Simon Zünd <szuend@google.com>
Cr-Commit-Position: refs/heads/master@{#55077}
parent 1408e127
...@@ -63,6 +63,7 @@ type ExtractFixedArrayFlags generates ...@@ -63,6 +63,7 @@ type ExtractFixedArrayFlags generates
type ParameterMode generates 'TNode<Int32T>' constexpr 'ParameterMode'; type ParameterMode generates 'TNode<Int32T>' constexpr 'ParameterMode';
type RootListIndex generates 'TNode<Int32T>' constexpr 'Heap::RootListIndex'; type RootListIndex generates 'TNode<Int32T>' constexpr 'Heap::RootListIndex';
type AllocationFlags generates 'TNode<Int32T>' constexpr 'AllocationFlags'; type AllocationFlags generates 'TNode<Int32T>' constexpr 'AllocationFlags';
type WriteBarrierMode generates 'TNode<Int32T>' constexpr 'WriteBarrierMode';
type MessageTemplate constexpr 'MessageTemplate::Template'; type MessageTemplate constexpr 'MessageTemplate::Template';
...@@ -166,6 +167,9 @@ const INTPTR_PARAMETERS: constexpr ParameterMode generates 'INTPTR_PARAMETERS'; ...@@ -166,6 +167,9 @@ const INTPTR_PARAMETERS: constexpr ParameterMode generates 'INTPTR_PARAMETERS';
const kAllowLargeObjectAllocation: constexpr AllocationFlags const kAllowLargeObjectAllocation: constexpr AllocationFlags
generates 'kAllowLargeObjectAllocation'; generates 'kAllowLargeObjectAllocation';
const SKIP_WRITE_BARRIER: constexpr WriteBarrierMode
generates 'SKIP_WRITE_BARRIER';
extern macro Is64(): constexpr bool; extern macro Is64(): constexpr bool;
extern macro SelectBooleanConstant(bool): Boolean; extern macro SelectBooleanConstant(bool): Boolean;
...@@ -642,6 +646,9 @@ extern operator ...@@ -642,6 +646,9 @@ extern operator
extern operator extern operator
'[]=' macro StoreFixedArrayElementSmi(FixedArray, Smi, Object): void; '[]=' macro StoreFixedArrayElementSmi(FixedArray, Smi, Object): void;
extern macro StoreFixedArrayElementSmi(FixedArray, Smi, Object,
constexpr WriteBarrierMode): void;
extern operator '.instance_type' macro LoadMapInstanceType(Map): int32; extern operator '.instance_type' macro LoadMapInstanceType(Map): int32;
extern macro LoadFixedDoubleArrayElement(FixedDoubleArray, Smi): float64; extern macro LoadFixedDoubleArrayElement(FixedDoubleArray, Smi): float64;
......
...@@ -213,7 +213,7 @@ module array { ...@@ -213,7 +213,7 @@ module array {
context: Context, sortState: FixedArray, elements: HeapObject, index: Smi, context: Context, sortState: FixedArray, elements: HeapObject, index: Smi,
value: Object): Smi { value: Object): Smi {
const elems: FixedArray = unsafe_cast<FixedArray>(elements); const elems: FixedArray = unsafe_cast<FixedArray>(elements);
elems[index] = value; StoreFixedArrayElementSmi(elems, index, value, SKIP_WRITE_BARRIER);
return kSuccess; return kSuccess;
} }
......
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