| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index e3b47427e38251435c4d4ab36f7498d7ec34029b..250a3a507ac575a3ece2a0b37be04d940c923a85 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -63,16 +63,19 @@ int PropertyDetails::field_width_in_words() const {
|
| int holder::name() const { return READ_INT_FIELD(this, offset); } \
|
| void holder::set_##name(int value) { WRITE_INT_FIELD(this, offset, value); }
|
|
|
| -#define ACCESSORS_CHECKED(holder, name, type, offset, condition) \
|
| - type* holder::name() const { \
|
| - DCHECK(condition); \
|
| - return type::cast(READ_FIELD(this, offset)); \
|
| - } \
|
| - void holder::set_##name(type* value, WriteBarrierMode mode) { \
|
| - DCHECK(condition); \
|
| - WRITE_FIELD(this, offset, value); \
|
| - CONDITIONAL_WRITE_BARRIER(GetHeap(), this, offset, value, mode); \
|
| - }
|
| +#define ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, \
|
| + set_condition) \
|
| + type* holder::name() const { \
|
| + DCHECK(get_condition); \
|
| + return type::cast(READ_FIELD(this, offset)); \
|
| + } \
|
| + void holder::set_##name(type* value, WriteBarrierMode mode) { \
|
| + DCHECK(set_condition); \
|
| + WRITE_FIELD(this, offset, value); \
|
| + CONDITIONAL_WRITE_BARRIER(GetHeap(), this, offset, value, mode); \
|
| + }
|
| +#define ACCESSORS_CHECKED(holder, name, type, offset, condition) \
|
| + ACCESSORS_CHECKED2(holder, name, type, offset, condition, condition)
|
|
|
| #define ACCESSORS(holder, name, type, offset) \
|
| ACCESSORS_CHECKED(holder, name, type, offset, true)
|
| @@ -6780,13 +6783,17 @@ SMI_ACCESSORS(JSMessageObject, error_level, kErrorLevelOffset)
|
| INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset)
|
| INT_ACCESSORS(Code, prologue_offset, kPrologueOffset)
|
| INT_ACCESSORS(Code, constant_pool_offset, kConstantPoolOffset)
|
| -ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset)
|
| -ACCESSORS(Code, handler_table, FixedArray, kHandlerTableOffset)
|
| -ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset)
|
| -ACCESSORS(Code, source_position_table, ByteArray, kSourcePositionTableOffset)
|
| -ACCESSORS(Code, protected_instructions, FixedArray, kProtectedInstructionOffset)
|
| -ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset)
|
| -ACCESSORS(Code, next_code_link, Object, kNextCodeLinkOffset)
|
| +#define CODE_ACCESSORS(name, type, offset) \
|
| + ACCESSORS_CHECKED2(Code, name, type, offset, true, \
|
| + !GetHeap()->InNewSpace(value))
|
| +CODE_ACCESSORS(relocation_info, ByteArray, kRelocationInfoOffset)
|
| +CODE_ACCESSORS(handler_table, FixedArray, kHandlerTableOffset)
|
| +CODE_ACCESSORS(deoptimization_data, FixedArray, kDeoptimizationDataOffset)
|
| +CODE_ACCESSORS(source_position_table, ByteArray, kSourcePositionTableOffset)
|
| +CODE_ACCESSORS(protected_instructions, FixedArray, kProtectedInstructionOffset)
|
| +CODE_ACCESSORS(raw_type_feedback_info, Object, kTypeFeedbackInfoOffset)
|
| +CODE_ACCESSORS(next_code_link, Object, kNextCodeLinkOffset)
|
| +#undef CODE_ACCESSORS
|
|
|
| void Code::WipeOutHeader() {
|
| WRITE_FIELD(this, kRelocationInfoOffset, NULL);
|
| @@ -8392,6 +8399,8 @@ SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset)
|
|
|
| #undef INT_ACCESSORS
|
| #undef ACCESSORS
|
| +#undef ACCESSORS_CHECKED
|
| +#undef ACCESSORS_CHECKED2
|
| #undef SMI_ACCESSORS
|
| #undef SYNCHRONIZED_SMI_ACCESSORS
|
| #undef NOBARRIER_SMI_ACCESSORS
|
|
|