OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1386 v->VisitPointers(reinterpret_cast<Object**>(FIELD_ADDR(this, start)), | 1386 v->VisitPointers(reinterpret_cast<Object**>(FIELD_ADDR(this, start)), |
1387 reinterpret_cast<Object**>(FIELD_ADDR(this, end))); | 1387 reinterpret_cast<Object**>(FIELD_ADDR(this, end))); |
1388 } | 1388 } |
1389 | 1389 |
1390 | 1390 |
1391 void HeapObject::IteratePointer(ObjectVisitor* v, int offset) { | 1391 void HeapObject::IteratePointer(ObjectVisitor* v, int offset) { |
1392 v->VisitPointer(reinterpret_cast<Object**>(FIELD_ADDR(this, offset))); | 1392 v->VisitPointer(reinterpret_cast<Object**>(FIELD_ADDR(this, offset))); |
1393 } | 1393 } |
1394 | 1394 |
1395 | 1395 |
| 1396 void HeapObject::IterateNextCodeLink(ObjectVisitor* v, int offset) { |
| 1397 v->VisitNextCodeLink(reinterpret_cast<Object**>(FIELD_ADDR(this, offset))); |
| 1398 } |
| 1399 |
| 1400 |
1396 double HeapNumber::value() { | 1401 double HeapNumber::value() { |
1397 return READ_DOUBLE_FIELD(this, kValueOffset); | 1402 return READ_DOUBLE_FIELD(this, kValueOffset); |
1398 } | 1403 } |
1399 | 1404 |
1400 | 1405 |
1401 void HeapNumber::set_value(double value) { | 1406 void HeapNumber::set_value(double value) { |
1402 WRITE_DOUBLE_FIELD(this, kValueOffset, value); | 1407 WRITE_DOUBLE_FIELD(this, kValueOffset, value); |
1403 } | 1408 } |
1404 | 1409 |
1405 | 1410 |
(...skipping 4299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5705 return reinterpret_cast<JSMessageObject*>(obj); | 5710 return reinterpret_cast<JSMessageObject*>(obj); |
5706 } | 5711 } |
5707 | 5712 |
5708 | 5713 |
5709 INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset) | 5714 INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset) |
5710 INT_ACCESSORS(Code, prologue_offset, kPrologueOffset) | 5715 INT_ACCESSORS(Code, prologue_offset, kPrologueOffset) |
5711 ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset) | 5716 ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset) |
5712 ACCESSORS(Code, handler_table, FixedArray, kHandlerTableOffset) | 5717 ACCESSORS(Code, handler_table, FixedArray, kHandlerTableOffset) |
5713 ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset) | 5718 ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset) |
5714 ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset) | 5719 ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset) |
| 5720 ACCESSORS(Code, next_code_link, Object, kNextCodeLinkOffset) |
5715 | 5721 |
5716 | 5722 |
5717 void Code::WipeOutHeader() { | 5723 void Code::WipeOutHeader() { |
5718 WRITE_FIELD(this, kRelocationInfoOffset, NULL); | 5724 WRITE_FIELD(this, kRelocationInfoOffset, NULL); |
5719 WRITE_FIELD(this, kHandlerTableOffset, NULL); | 5725 WRITE_FIELD(this, kHandlerTableOffset, NULL); |
5720 WRITE_FIELD(this, kDeoptimizationDataOffset, NULL); | 5726 WRITE_FIELD(this, kDeoptimizationDataOffset, NULL); |
5721 WRITE_FIELD(this, kConstantPoolOffset, NULL); | 5727 WRITE_FIELD(this, kConstantPoolOffset, NULL); |
5722 // Do not wipe out e.g. a minor key. | 5728 // Do not wipe out e.g. a minor key. |
5723 if (!READ_FIELD(this, kTypeFeedbackInfoOffset)->IsSmi()) { | 5729 if (!READ_FIELD(this, kTypeFeedbackInfoOffset)->IsSmi()) { |
5724 WRITE_FIELD(this, kTypeFeedbackInfoOffset, NULL); | 5730 WRITE_FIELD(this, kTypeFeedbackInfoOffset, NULL); |
5725 } | 5731 } |
5726 } | 5732 } |
5727 | 5733 |
5728 | 5734 |
5729 Object* Code::type_feedback_info() { | 5735 Object* Code::type_feedback_info() { |
5730 ASSERT(kind() == FUNCTION); | 5736 ASSERT(kind() == FUNCTION); |
5731 return raw_type_feedback_info(); | 5737 return raw_type_feedback_info(); |
5732 } | 5738 } |
5733 | 5739 |
5734 | 5740 |
5735 void Code::set_type_feedback_info(Object* value, WriteBarrierMode mode) { | 5741 void Code::set_type_feedback_info(Object* value, WriteBarrierMode mode) { |
5736 ASSERT(kind() == FUNCTION); | 5742 ASSERT(kind() == FUNCTION); |
5737 set_raw_type_feedback_info(value, mode); | 5743 set_raw_type_feedback_info(value, mode); |
5738 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kTypeFeedbackInfoOffset, | 5744 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kTypeFeedbackInfoOffset, |
5739 value, mode); | 5745 value, mode); |
5740 } | 5746 } |
5741 | 5747 |
5742 | 5748 |
5743 Object* Code::next_code_link() { | |
5744 CHECK(kind() == OPTIMIZED_FUNCTION); | |
5745 return raw_type_feedback_info(); | |
5746 } | |
5747 | |
5748 | |
5749 void Code::set_next_code_link(Object* value, WriteBarrierMode mode) { | |
5750 CHECK(kind() == OPTIMIZED_FUNCTION); | |
5751 set_raw_type_feedback_info(value); | |
5752 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kTypeFeedbackInfoOffset, | |
5753 value, mode); | |
5754 } | |
5755 | |
5756 | |
5757 int Code::stub_info() { | 5749 int Code::stub_info() { |
5758 ASSERT(kind() == COMPARE_IC || kind() == COMPARE_NIL_IC || | 5750 ASSERT(kind() == COMPARE_IC || kind() == COMPARE_NIL_IC || |
5759 kind() == BINARY_OP_IC || kind() == LOAD_IC); | 5751 kind() == BINARY_OP_IC || kind() == LOAD_IC); |
5760 return Smi::cast(raw_type_feedback_info())->value(); | 5752 return Smi::cast(raw_type_feedback_info())->value(); |
5761 } | 5753 } |
5762 | 5754 |
5763 | 5755 |
5764 void Code::set_stub_info(int value) { | 5756 void Code::set_stub_info(int value) { |
5765 ASSERT(kind() == COMPARE_IC || | 5757 ASSERT(kind() == COMPARE_IC || |
5766 kind() == COMPARE_NIL_IC || | 5758 kind() == COMPARE_NIL_IC || |
(...skipping 1022 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6789 #undef READ_UINT32_FIELD | 6781 #undef READ_UINT32_FIELD |
6790 #undef WRITE_UINT32_FIELD | 6782 #undef WRITE_UINT32_FIELD |
6791 #undef READ_SHORT_FIELD | 6783 #undef READ_SHORT_FIELD |
6792 #undef WRITE_SHORT_FIELD | 6784 #undef WRITE_SHORT_FIELD |
6793 #undef READ_BYTE_FIELD | 6785 #undef READ_BYTE_FIELD |
6794 #undef WRITE_BYTE_FIELD | 6786 #undef WRITE_BYTE_FIELD |
6795 | 6787 |
6796 } } // namespace v8::internal | 6788 } } // namespace v8::internal |
6797 | 6789 |
6798 #endif // V8_OBJECTS_INL_H_ | 6790 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |