}
// Allow self references to created code object by patching the handle to
// point to the newly allocated Code object.
+ CHECK(code->IsCode());
+ CHECK(code->relocation_info()->IsByteArray());
if (!self_reference.is_null()) {
*(self_reference.location()) = code;
}
// that are dereferenced during the copy to point directly to the actual heap
// objects. These pointers can include references to the code object itself,
// through the self_reference parameter.
+ CHECK(code->IsCode());
+ CHECK(code->relocation_info()->IsByteArray());
code->CopyFrom(desc);
#ifdef VERIFY_HEAP
ASSERT(Marking::Color(this) == Marking::WHITE_OBJECT);
// copy code
+ CHECK(IsCode());
+ CHECK(relocation_info()->IsByteArray());
+ CHECK(reinterpret_cast<intptr_t>(instruction_start()) ==
+ reinterpret_cast<intptr_t>(this) + Code::kHeaderSize - kHeapObjectTag);
memmove(instruction_start(), desc.buffer, desc.instr_size);
// copy reloc info
// TODO(mstarzinger): Remove once we found the bug.
+ CHECK(IsCode());
CHECK(relocation_info()->IsByteArray());
memmove(relocation_start(),
desc.buffer + desc.buffer_size - desc.reloc_size,