| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef RUNTIME_VM_OBJECT_H_ | 5 #ifndef RUNTIME_VM_OBJECT_H_ |
| 6 #define RUNTIME_VM_OBJECT_H_ | 6 #define RUNTIME_VM_OBJECT_H_ |
| 7 | 7 |
| 8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
| (...skipping 4877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4888 // with the corresponding source positions. Note the token position for each | 4888 // with the corresponding source positions. Note the token position for each |
| 4889 // function except the top-of-stack is the position of the call to the next | 4889 // function except the top-of-stack is the position of the call to the next |
| 4890 // function. The stack will be empty if we lack the metadata to produce it, | 4890 // function. The stack will be empty if we lack the metadata to produce it, |
| 4891 // which happens for stub code. | 4891 // which happens for stub code. |
| 4892 // The pc offset is interpreted as an instruction address (as needed by the | 4892 // The pc offset is interpreted as an instruction address (as needed by the |
| 4893 // disassembler or the top frame of a profiler sample). | 4893 // disassembler or the top frame of a profiler sample). |
| 4894 void GetInlinedFunctionsAtInstruction( | 4894 void GetInlinedFunctionsAtInstruction( |
| 4895 intptr_t pc_offset, | 4895 intptr_t pc_offset, |
| 4896 GrowableArray<const Function*>* functions, | 4896 GrowableArray<const Function*>* functions, |
| 4897 GrowableArray<TokenPosition>* token_positions) const; | 4897 GrowableArray<TokenPosition>* token_positions) const; |
| 4898 // Same as above, expect the pc is intepreted as a return address (as needed | 4898 // Same as above, expect the pc is interpreted as a return address (as needed |
| 4899 // for a stack trace or the bottom frames of a profiler sample). | 4899 // for a stack trace or the bottom frames of a profiler sample). |
| 4900 void GetInlinedFunctionsAtReturnAddress( | 4900 void GetInlinedFunctionsAtReturnAddress( |
| 4901 intptr_t pc_offset, | 4901 intptr_t pc_offset, |
| 4902 GrowableArray<const Function*>* functions, | 4902 GrowableArray<const Function*>* functions, |
| 4903 GrowableArray<TokenPosition>* token_positions) const { | 4903 GrowableArray<TokenPosition>* token_positions) const { |
| 4904 GetInlinedFunctionsAtInstruction(pc_offset - 1, functions, token_positions); | 4904 GetInlinedFunctionsAtInstruction(pc_offset - 1, functions, token_positions); |
| 4905 } | 4905 } |
| 4906 | 4906 |
| 4907 NOT_IN_PRODUCT(void PrintJSONInlineIntervals(JSONObject* object) const); | 4907 NOT_IN_PRODUCT(void PrintJSONInlineIntervals(JSONObject* object) const); |
| 4908 void DumpInlineIntervals() const; | 4908 void DumpInlineIntervals() const; |
| (...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5642 RawObject** NativeFieldsAddr() const { | 5642 RawObject** NativeFieldsAddr() const { |
| 5643 return FieldAddrAtOffset(sizeof(RawObject)); | 5643 return FieldAddrAtOffset(sizeof(RawObject)); |
| 5644 } | 5644 } |
| 5645 void SetFieldAtOffset(intptr_t offset, const Object& value) const { | 5645 void SetFieldAtOffset(intptr_t offset, const Object& value) const { |
| 5646 StorePointer(FieldAddrAtOffset(offset), value.raw()); | 5646 StorePointer(FieldAddrAtOffset(offset), value.raw()); |
| 5647 } | 5647 } |
| 5648 bool IsValidFieldOffset(intptr_t offset) const; | 5648 bool IsValidFieldOffset(intptr_t offset) const; |
| 5649 | 5649 |
| 5650 static intptr_t NextFieldOffset() { return sizeof(RawInstance); } | 5650 static intptr_t NextFieldOffset() { return sizeof(RawInstance); } |
| 5651 | 5651 |
| 5652 // The follwoing raw methods are used for morphing. | 5652 // The following raw methods are used for morphing. |
| 5653 // They are needed due to the extraction of the class in IsValidFieldOffset. | 5653 // They are needed due to the extraction of the class in IsValidFieldOffset. |
| 5654 RawObject** RawFieldAddrAtOffset(intptr_t offset) const { | 5654 RawObject** RawFieldAddrAtOffset(intptr_t offset) const { |
| 5655 return reinterpret_cast<RawObject**>(raw_value() - kHeapObjectTag + offset); | 5655 return reinterpret_cast<RawObject**>(raw_value() - kHeapObjectTag + offset); |
| 5656 } | 5656 } |
| 5657 RawObject* RawGetFieldAtOffset(intptr_t offset) const { | 5657 RawObject* RawGetFieldAtOffset(intptr_t offset) const { |
| 5658 return *RawFieldAddrAtOffset(offset); | 5658 return *RawFieldAddrAtOffset(offset); |
| 5659 } | 5659 } |
| 5660 void RawSetFieldAtOffset(intptr_t offset, const Object& value) const { | 5660 void RawSetFieldAtOffset(intptr_t offset, const Object& value) const { |
| 5661 StorePointer(RawFieldAddrAtOffset(offset), value.raw()); | 5661 StorePointer(RawFieldAddrAtOffset(offset), value.raw()); |
| 5662 } | 5662 } |
| (...skipping 3388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9051 | 9051 |
| 9052 inline void TypeArguments::SetHash(intptr_t value) const { | 9052 inline void TypeArguments::SetHash(intptr_t value) const { |
| 9053 // This is only safe because we create a new Smi, which does not cause | 9053 // This is only safe because we create a new Smi, which does not cause |
| 9054 // heap allocation. | 9054 // heap allocation. |
| 9055 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); | 9055 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); |
| 9056 } | 9056 } |
| 9057 | 9057 |
| 9058 } // namespace dart | 9058 } // namespace dart |
| 9059 | 9059 |
| 9060 #endif // RUNTIME_VM_OBJECT_H_ | 9060 #endif // RUNTIME_VM_OBJECT_H_ |
| OLD | NEW |