| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 844e86327e0c4ad9f2fa4b5a7ba5bab81871cfdd..98009e6548b3c63e771c3512e22ac99b5aa12501 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -13982,8 +13982,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));
|
| @@ -14007,21 +14005,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);
|
|
|