New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 749486 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 3
Type: Feature



Sign in to add a comment

Porting v8 write barrier to use code stub assembly

Project Member Reported by albertnetymk@google.com, Jul 27 2017

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

Steps to reproduce the problem:
Not applicable.

What is the expected behavior?

What went wrong?
V8 garbage collector uses write barriers to maintain the marking invariants and to track pointers to the young generation and the evacuation candidates. The write barrier code stub is implemented in platform dependent assembly. Since V8 supports nine platforms, we have nine write barrier implementations, which makes changing and optimizing the write barrier difficult.

Did this work before? N/A 

Chrome version: 59.0.3071.115  Channel: n/a
OS Version: 
Flash Version:
 
Project Member

Comment 1 by sheriffbot@chromium.org, Jul 27 2017

Labels: Hotlist-Google
Labels: Needs-Milestone
Cc: kkaluri@chromium.org
Status: Untriaged (was: Unconfirmed)
Since this issue marked as feature request, marking it as untriaged for further triage. 
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e58ae53132f49c90ba0ed874cc21360c0a1784f1

commit e58ae53132f49c90ba0ed874cc21360c0a1784f1
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Mon Aug 21 16:35:05 2017

[turbofan] Add CallCFunctionWithCallerSavedRegisters node in turbofan compiler

The new node behave the same as its counterpart, CallCFunction, with the
additional saving and restoring caller saved registers before and after
the function call.

Bug:  chromium:749486 
Change-Id: I0a1dfb2e4e55f7720541a00e6d16fd20220f39ed
Reviewed-on: https://chromium-review.googlesource.com/620709
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47479}
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/arm/macro-assembler-arm.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/arm64/macro-assembler-arm64.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/builtins/builtins-internal-gen.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/arm/code-generator-arm.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/arm64/code-generator-arm64.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/code-assembler.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/code-assembler.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/common-operator.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/common-operator.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/escape-analysis.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/ia32/code-generator-ia32.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/instruction-codes.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/instruction-scheduler.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/instruction-selector.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/instruction-selector.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/machine-graph-verifier.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/memory-optimizer.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/memory-optimizer.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/mips/code-generator-mips.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/mips64/code-generator-mips64.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/opcodes.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/ppc/code-generator-ppc.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/raw-machine-assembler.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/raw-machine-assembler.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/s390/code-generator-s390.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/schedule.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/scheduler.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/typer.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/verifier.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/compiler/x64/code-generator-x64.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/ia32/macro-assembler-ia32.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/machine-type.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/mips/macro-assembler-mips.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/mips64/macro-assembler-mips64.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/ppc/macro-assembler-ppc.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/src/s390/macro-assembler-s390.h
[modify] https://crrev.com/e58ae53132f49c90ba0ed874cc21360c0a1784f1/test/cctest/test-code-stub-assembler.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Aug 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92

commit caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Thu Aug 24 14:31:18 2017

Allow CSA stubs to restrict the set of allocatable registers.

This is useful for the RecordWrite stub that can now specify the set
of allocatable registers in its call descriptor interface. 
During register allocation a custom register configuration is used to
ensure that the register are allocated from the given set.

This makes calling RecordWrite stub less expensive as we need to save/restore
only the allocatable registers instead all registers.

Bug:  chromium:749486 
Change-Id: If4d73f1fd525e480970ea92600fb811e63677eb5
Reviewed-on: https://chromium-review.googlesource.com/624734
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Cr-Commit-Position: refs/heads/master@{#47577}
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/arm/interface-descriptors-arm.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/arm64/interface-descriptors-arm64.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/compiler/linkage.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/compiler/linkage.h
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/compiler/pipeline.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/compiler/register-allocator.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/compiler/x64/code-generator-x64.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/ia32/interface-descriptors-ia32.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/interface-descriptors.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/interface-descriptors.h
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/mips/interface-descriptors-mips.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/mips64/interface-descriptors-mips64.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/ppc/interface-descriptors-ppc.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/register-configuration.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/register-configuration.h
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/s390/interface-descriptors-s390.cc
[modify] https://crrev.com/caff0dddcd7cf0a8104ec6d0ec6696b389fa5e92/src/x64/interface-descriptors-x64.cc

Components: Blink>JavaScript>GC
Labels: -Pri-2 -Hotlist-Google -Via-Wizard-Other -Needs-Milestone OS-Android OS-Chrome OS-Mac OS-Windows Pri-3
Owner: u...@chromium.org
Status: Assigned (was: Untriaged)
Assigning Ulan for now. There's no milestone needed for this.
Cc: mlippautz@chromium.org
Project Member

Comment 8 by bugdroid1@chromium.org, Sep 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b51929c65710a7048e0fa639acf872754f267bfc

commit b51929c65710a7048e0fa639acf872754f267bfc
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Fri Sep 01 11:49:00 2017

Using restricted register set for RecordWrite on all architectures

Saving/restoring only registers in the restricted set before calling
RecordWrite code stub, which prepares for turning on
`v8_enable_csa_write_barrier` on all architectures.

Bug:  chromium:749486 
Change-Id: I6c8ba0c1561513569218e80011673cf24c7d6127
Reviewed-on: https://chromium-review.googlesource.com/641531
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Cr-Commit-Position: refs/heads/master@{#47770}
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/arm/interface-descriptors-arm.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/arm64/interface-descriptors-arm64.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/compiler/arm/code-generator-arm.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/compiler/arm64/code-generator-arm64.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/compiler/ia32/code-generator-ia32.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/compiler/mips/code-generator-mips.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/compiler/mips64/code-generator-mips64.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/compiler/ppc/code-generator-ppc.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/compiler/s390/code-generator-s390.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/ia32/interface-descriptors-ia32.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/mips/interface-descriptors-mips.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/mips64/interface-descriptors-mips64.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/ppc/interface-descriptors-ppc.cc
[modify] https://crrev.com/b51929c65710a7048e0fa639acf872754f267bfc/src/s390/interface-descriptors-s390.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Sep 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/0eb1bc9b6560fa064329ce36217d95f166e00170

commit 0eb1bc9b6560fa064329ce36217d95f166e00170
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Mon Sep 04 12:48:31 2017

Adjust SP delta for kArchSaveCallerRegisters case

In kArchSaveCallerRegisters, PushCallerSaved alone alters stack pointer
without informing `frame_access_state`. This commit compensate the
inconsistency by manually increasing the delta after pushing registers.
This affects systems (currently only ARM64) using stack pointer for
accessing variables stored on stack.

Bug:  chromium:749486 
Change-Id: Ic6da3826323d4fb1c545ade3d4d2cd4d1fed1843
Reviewed-on: https://chromium-review.googlesource.com/633606
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47797}
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/arm/macro-assembler-arm.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/arm64/macro-assembler-arm64.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/arm/code-generator-arm.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/arm64/code-generator-arm64.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/code-generator.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/code-generator.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/ia32/code-generator-ia32.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/mips/code-generator-mips.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/mips64/code-generator-mips64.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/ppc/code-generator-ppc.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/s390/code-generator-s390.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/compiler/x64/code-generator-x64.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/ia32/macro-assembler-ia32.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/mips/macro-assembler-mips.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/mips64/macro-assembler-mips64.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/ppc/macro-assembler-ppc.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/s390/macro-assembler-s390.h
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/0eb1bc9b6560fa064329ce36217d95f166e00170/src/x64/macro-assembler-x64.h

Project Member

Comment 10 by bugdroid1@chromium.org, Sep 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6aafc43e9d1694fdf30f8366049cdcfb413e53b7

commit 6aafc43e9d1694fdf30f8366049cdcfb413e53b7
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Thu Sep 14 07:38:29 2017

Extract calling RecordWrite CSA logic to a function

There are two places where RecordWrite code stub is called,
OutOfLineRecordWrite and RecordWriteField. With this commit, if
`v8_enable_csa_write_barrier` flag is turned on, no instances of the old
RecordWrite stub appear in the snapshot.

Bug:  chromium:749486 
Change-Id: I2bc3fa38c8831736303b46d153a79c034a450f16
Reviewed-on: https://chromium-review.googlesource.com/648983
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48004}
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/arm/macro-assembler-arm.h
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/arm64/macro-assembler-arm64.h
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/arm/code-generator-arm.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/arm64/code-generator-arm64.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/ia32/code-generator-ia32.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/mips/code-generator-mips.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/mips64/code-generator-mips64.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/ppc/code-generator-ppc.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/s390/code-generator-s390.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/compiler/x64/code-generator-x64.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/ia32/macro-assembler-ia32.h
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/mips/macro-assembler-mips.h
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/mips64/macro-assembler-mips64.h
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/ppc/macro-assembler-ppc.h
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/s390/macro-assembler-s390.h
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/6aafc43e9d1694fdf30f8366049cdcfb413e53b7/src/x64/macro-assembler-x64.h

Project Member

Comment 11 by bugdroid1@chromium.org, Sep 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/dbfdd4f9e9741df0a541afdd7516a34304102ee8

commit dbfdd4f9e9741df0a541afdd7516a34304102ee8
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Thu Sep 14 09:10:09 2017

[heap] Turn on v8_enable_csa_write_barrier

With this commit, write barrier is switched to use CodeStubAssembler.

Bug:  chromium:749486 
Change-Id: I7e0914bee971e4f3a3257740ae7c83b31f791bd9
Reviewed-on: https://chromium-review.googlesource.com/598088
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Cr-Commit-Position: refs/heads/master@{#48006}
[modify] https://crrev.com/dbfdd4f9e9741df0a541afdd7516a34304102ee8/BUILD.gn

Project Member

Comment 12 by bugdroid1@chromium.org, Sep 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/eeebbbcf7f3316809c7c829f66433b9112bf8d7f

commit eeebbbcf7f3316809c7c829f66433b9112bf8d7f
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Fri Sep 15 11:25:36 2017

Revert "[heap] Turn on v8_enable_csa_write_barrier"

This reverts commit dbfdd4f9e9741df0a541afdd7516a34304102ee8.

Reason for revert: https://clusterfuzz.com/v2/testcase-detail/5493096547876864?noredirect=1

Original change's description:
> [heap] Turn on v8_enable_csa_write_barrier
> 
> With this commit, write barrier is switched to use CodeStubAssembler.
> 
> Bug:  chromium:749486 
> Change-Id: I7e0914bee971e4f3a3257740ae7c83b31f791bd9
> Reviewed-on: https://chromium-review.googlesource.com/598088
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
> Cr-Commit-Position: refs/heads/master@{#48006}

TBR=ulan@chromium.org,albertnetymk@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  chromium:749486 
Change-Id: I8cf6a3f1d2ea607a0160b37b797d743b88b004b5
Reviewed-on: https://chromium-review.googlesource.com/667018
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Cr-Commit-Position: refs/heads/master@{#48036}
[modify] https://crrev.com/eeebbbcf7f3316809c7c829f66433b9112bf8d7f/BUILD.gn

Project Member

Comment 13 by bugdroid1@chromium.org, Sep 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8557eb03f9753a37bb8f9f6a547b332538fc22a4

commit 8557eb03f9753a37bb8f9f6a547b332538fc22a4
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Fri Sep 15 15:01:56 2017

Deserialize RecordWrite stub eagerly

Since DeserializeLazy uses write barrier, deserializing write barrier
lazily would cause cyclic dependency. This commit changes RecordWrite to
be deserializd eagerly.

Bug:  chromium:765301   chromium:749486 
Change-Id: I363692baf9b742289c0443afac634662f0026922
Reviewed-on: https://chromium-review.googlesource.com/668454
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48044}
[modify] https://crrev.com/8557eb03f9753a37bb8f9f6a547b332538fc22a4/src/builtins/builtins.cc

Project Member

Comment 14 by bugdroid1@chromium.org, Sep 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/91034f42f6faed07b9f619b16c0618483b10d0d3

commit 91034f42f6faed07b9f619b16c0618483b10d0d3
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Fri Sep 15 17:07:58 2017

Reland "[heap] Turn on v8_enable_csa_write_barrier"

This is a reland of dbfdd4f9e9741df0a541afdd7516a34304102ee8
Original change's description:
> [heap] Turn on v8_enable_csa_write_barrier
> 
> With this commit, write barrier is switched to use CodeStubAssembler.
> 
> Bug:  chromium:749486 
> Change-Id: I7e0914bee971e4f3a3257740ae7c83b31f791bd9
> Reviewed-on: https://chromium-review.googlesource.com/598088
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
> Cr-Commit-Position: refs/heads/master@{#48006}

Bug:  chromium:749486 
Change-Id: I00933d989568c82b5fbaf6203bb146c65f8e4282
Reviewed-on: https://chromium-review.googlesource.com/668636
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Cr-Commit-Position: refs/heads/master@{#48045}
[modify] https://crrev.com/91034f42f6faed07b9f619b16c0618483b10d0d3/BUILD.gn

Project Member

Comment 15 by bugdroid1@chromium.org, Sep 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/c9b08c6579a2a56a2a763318447788e4d1405365

commit c9b08c6579a2a56a2a763318447788e4d1405365
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date: Fri Sep 22 12:28:38 2017

Use args to avoid unnecessary work in RecordWrite stub

TurboAssembler::CallRecordWriteStub contains info that could be used to
conditionally skip generational write barrier or skip saving float-point
registers. This commits uses those info in RecordWrite stub.

Bug:  chromium:749486 
Change-Id: I41c9a593473e1f8863a09887fd2ce917f1d4fb3b
Reviewed-on: https://chromium-review.googlesource.com/672527
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
Cr-Commit-Position: refs/heads/master@{#48123}
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/builtins/builtins-internal-gen.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/arm/code-generator-arm.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/arm64/code-generator-arm64.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/code-assembler.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/code-assembler.h
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/code-generator.h
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/ia32/code-generator-ia32.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/instruction-selector.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/linkage.h
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/mips/code-generator-mips.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/mips64/code-generator-mips64.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/ppc/code-generator-ppc.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/raw-machine-assembler.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/raw-machine-assembler.h
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/s390/code-generator-s390.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/compiler/x64/code-generator-x64.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/interface-descriptors.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/interface-descriptors.h
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/c9b08c6579a2a56a2a763318447788e4d1405365/test/cctest/test-code-stub-assembler.cc

Comment 16 by u...@chromium.org, Sep 29 2017

Status: Fixed (was: Assigned)

Comment 17 by u...@chromium.org, Oct 2 2017

For the record, one CL that was not automatically posted in this bug:

commit 744b901d414be2b38a1053f498da3b711d97d2ca
Author: Albert Mingkun Yang <albertnetymk@google.com>
Date:   Thu Aug 3 13:17:17 2017 +0200

    [heap] Implement write barrier in code stub assembly
    
    Bug:  749486 
    
    The feature is off by default, and could be turned on via
    `v8_enable_csa_write_barrier = true`. With this CL, only x64 uses this
    feature
    
    Change-Id: Ie024f08b7d796a4cc4d55285dc9fe796780f0e53
    Reviewed-on: https://chromium-review.googlesource.com/588891
    Reviewed-by: Yang Guo <yangguo@chromium.org>
    Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
    Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
    Commit-Queue: Albert Mingkun Yang <albertnetymk@google.com>
    Cr-Commit-Position: refs/heads/master@{#47122}

Project Member

Comment 18 by bugdroid1@chromium.org, Nov 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ef6c175c59240ba6f4770729cd1555332a25fa62

commit ef6c175c59240ba6f4770729cd1555332a25fa62
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Nov 06 17:33:47 2017

[heap] Remove the old write barrier.

Bug:  chromium:749486 
Change-Id: I2fd8b8efe5bea15e48b31945736659495a009c9f
Reviewed-on: https://chromium-review.googlesource.com/739322
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49149}
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/BUILD.gn
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/arm/code-stubs-arm.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/arm/code-stubs-arm.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/arm64/code-stubs-arm64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/arm64/code-stubs-arm64.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/arm64/macro-assembler-arm64.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/code-stubs.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/arm/code-generator-arm.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/arm64/code-generator-arm64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/ia32/code-generator-ia32.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/mips/code-generator-mips.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/mips64/code-generator-mips64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/ppc/code-generator-ppc.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/s390/code-generator-s390.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/compiler/x64/code-generator-x64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/heap/incremental-marking.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/ia32/code-stubs-ia32.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/ia32/code-stubs-ia32.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/ia32/macro-assembler-ia32.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/isolate.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips/code-stubs-mips.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips/code-stubs-mips.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips/macro-assembler-mips.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips64/code-stubs-mips64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips64/code-stubs-mips64.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/mips64/macro-assembler-mips64.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/ppc/code-stubs-ppc.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/ppc/code-stubs-ppc.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/s390/code-stubs-s390.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/s390/code-stubs-s390.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/s390/macro-assembler-s390.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/x64/code-stubs-x64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/x64/code-stubs-x64.h
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/ef6c175c59240ba6f4770729cd1555332a25fa62/src/x64/macro-assembler-x64.h

Project Member

Comment 19 by bugdroid1@chromium.org, Nov 24 2017

Sign in to add a comment