| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 2bf21a2c6d82a9b1191b83c1f16dc5b7401d81a5..583ffc699d3806b2e1c7d108217d001d8c094e80 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -14188,8 +14188,6 @@ void Code::Relocate(intptr_t delta) {
|
|
|
|
|
| void Code::CopyFrom(const CodeDesc& desc) {
|
| - DCHECK(Marking::Color(this) == Marking::WHITE_OBJECT);
|
| -
|
| // copy code
|
| CopyBytes(instruction_start(), desc.buffer,
|
| static_cast<size_t>(desc.instr_size));
|
| @@ -14213,21 +14211,22 @@ void Code::CopyFrom(const CodeDesc& desc) {
|
| RelocInfo::Mode mode = it.rinfo()->rmode();
|
| if (mode == RelocInfo::EMBEDDED_OBJECT) {
|
| Handle<Object> p = it.rinfo()->target_object_handle(origin);
|
| - it.rinfo()->set_target_object(*p, SKIP_WRITE_BARRIER, SKIP_ICACHE_FLUSH);
|
| + it.rinfo()->set_target_object(*p, UPDATE_WRITE_BARRIER,
|
| + SKIP_ICACHE_FLUSH);
|
| } else if (mode == RelocInfo::CELL) {
|
| Handle<Cell> cell = it.rinfo()->target_cell_handle();
|
| - it.rinfo()->set_target_cell(*cell, SKIP_WRITE_BARRIER, SKIP_ICACHE_FLUSH);
|
| + it.rinfo()->set_target_cell(*cell, UPDATE_WRITE_BARRIER,
|
| + SKIP_ICACHE_FLUSH);
|
| } else if (RelocInfo::IsCodeTarget(mode)) {
|
| // rewrite code handles in inline cache targets to direct
|
| // pointers to the first instruction in the code object
|
| Handle<Object> p = it.rinfo()->target_object_handle(origin);
|
| Code* code = Code::cast(*p);
|
| it.rinfo()->set_target_address(code->instruction_start(),
|
| - SKIP_WRITE_BARRIER,
|
| - SKIP_ICACHE_FLUSH);
|
| + UPDATE_WRITE_BARRIER, SKIP_ICACHE_FLUSH);
|
| } else if (RelocInfo::IsRuntimeEntry(mode)) {
|
| Address p = it.rinfo()->target_runtime_entry(origin);
|
| - it.rinfo()->set_target_runtime_entry(p, SKIP_WRITE_BARRIER,
|
| + it.rinfo()->set_target_runtime_entry(p, UPDATE_WRITE_BARRIER,
|
| SKIP_ICACHE_FLUSH);
|
| } else if (mode == RelocInfo::CODE_AGE_SEQUENCE) {
|
| Handle<Object> p = it.rinfo()->code_age_stub_handle(origin);
|
|
|