Chromium Code Reviews| 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 1772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1783 static void VerifyHeapPointer(Object* p); | 1783 static void VerifyHeapPointer(Object* p); |
| 1784 #endif | 1784 #endif |
| 1785 | 1785 |
| 1786 // Layout description. | 1786 // Layout description. |
| 1787 // First field in a heap object is map. | 1787 // First field in a heap object is map. |
| 1788 static const int kMapOffset = Object::kHeaderSize; | 1788 static const int kMapOffset = Object::kHeaderSize; |
| 1789 static const int kHeaderSize = kMapOffset + kPointerSize; | 1789 static const int kHeaderSize = kMapOffset + kPointerSize; |
| 1790 | 1790 |
| 1791 STATIC_CHECK(kMapOffset == Internals::kHeapObjectMapOffset); | 1791 STATIC_CHECK(kMapOffset == Internals::kHeapObjectMapOffset); |
| 1792 | 1792 |
| 1793 static void UpdateMapCodeCache(Handle<HeapObject> object, | |
|
Michael Starzinger
2013/09/12 14:28:48
Please move this up a few lines to above the casti
Toon Verwaest
2013/09/12 14:58:23
Done.
| |
| 1794 Handle<Name> name, | |
| 1795 Handle<Code> code); | |
| 1796 | |
| 1793 protected: | 1797 protected: |
| 1794 // helpers for calling an ObjectVisitor to iterate over pointers in the | 1798 // helpers for calling an ObjectVisitor to iterate over pointers in the |
| 1795 // half-open range [start, end) specified as integer offsets | 1799 // half-open range [start, end) specified as integer offsets |
| 1796 inline void IteratePointers(ObjectVisitor* v, int start, int end); | 1800 inline void IteratePointers(ObjectVisitor* v, int start, int end); |
| 1797 // as above, for the single element at "offset" | 1801 // as above, for the single element at "offset" |
| 1798 inline void IteratePointer(ObjectVisitor* v, int offset); | 1802 inline void IteratePointer(ObjectVisitor* v, int offset); |
| 1799 | 1803 |
| 1800 private: | 1804 private: |
| 1801 DISALLOW_IMPLICIT_CONSTRUCTORS(HeapObject); | 1805 DISALLOW_IMPLICIT_CONSTRUCTORS(HeapObject); |
| 1802 }; | 1806 }; |
| (...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2567 PropertyNormalizationMode mode, | 2571 PropertyNormalizationMode mode, |
| 2568 int expected_additional_properties); | 2572 int expected_additional_properties); |
| 2569 | 2573 |
| 2570 // Convert and update the elements backing store to be a | 2574 // Convert and update the elements backing store to be a |
| 2571 // SeededNumberDictionary dictionary. Returns the backing after conversion. | 2575 // SeededNumberDictionary dictionary. Returns the backing after conversion. |
| 2572 static Handle<SeededNumberDictionary> NormalizeElements( | 2576 static Handle<SeededNumberDictionary> NormalizeElements( |
| 2573 Handle<JSObject> object); | 2577 Handle<JSObject> object); |
| 2574 | 2578 |
| 2575 MUST_USE_RESULT MaybeObject* NormalizeElements(); | 2579 MUST_USE_RESULT MaybeObject* NormalizeElements(); |
| 2576 | 2580 |
| 2577 static void UpdateMapCodeCache(Handle<JSObject> object, | |
| 2578 Handle<Name> name, | |
| 2579 Handle<Code> code); | |
| 2580 | |
| 2581 // Transform slow named properties to fast variants. | 2581 // Transform slow named properties to fast variants. |
| 2582 // Returns failure if allocation failed. | 2582 // Returns failure if allocation failed. |
| 2583 static void TransformToFastProperties(Handle<JSObject> object, | 2583 static void TransformToFastProperties(Handle<JSObject> object, |
| 2584 int unused_property_fields); | 2584 int unused_property_fields); |
| 2585 | 2585 |
| 2586 MUST_USE_RESULT MaybeObject* TransformToFastProperties( | 2586 MUST_USE_RESULT MaybeObject* TransformToFastProperties( |
| 2587 int unused_property_fields); | 2587 int unused_property_fields); |
| 2588 | 2588 |
| 2589 // Access fast-case object properties at index. | 2589 // Access fast-case object properties at index. |
| 2590 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( | 2590 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( |
| (...skipping 2894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5485 // Tells whether the instance is undetectable. | 5485 // Tells whether the instance is undetectable. |
| 5486 // An undetectable object is a special class of JSObject: 'typeof' operator | 5486 // An undetectable object is a special class of JSObject: 'typeof' operator |
| 5487 // returns undefined, ToBoolean returns false. Otherwise it behaves like | 5487 // returns undefined, ToBoolean returns false. Otherwise it behaves like |
| 5488 // a normal JS object. It is useful for implementing undetectable | 5488 // a normal JS object. It is useful for implementing undetectable |
| 5489 // document.all in Firefox & Safari. | 5489 // document.all in Firefox & Safari. |
| 5490 // See https://bugzilla.mozilla.org/show_bug.cgi?id=248549. | 5490 // See https://bugzilla.mozilla.org/show_bug.cgi?id=248549. |
| 5491 inline void set_is_undetectable() { | 5491 inline void set_is_undetectable() { |
| 5492 set_bit_field(bit_field() | (1 << kIsUndetectable)); | 5492 set_bit_field(bit_field() | (1 << kIsUndetectable)); |
| 5493 } | 5493 } |
| 5494 | 5494 |
| 5495 inline bool is_jsobject_map(); | |
|
Michael Starzinger
2013/09/12 14:28:48
I think starting to duplicate type checking predic
Toon Verwaest
2013/09/12 14:58:23
Done.
| |
| 5496 | |
| 5495 inline bool is_undetectable() { | 5497 inline bool is_undetectable() { |
| 5496 return ((1 << kIsUndetectable) & bit_field()) != 0; | 5498 return ((1 << kIsUndetectable) & bit_field()) != 0; |
| 5497 } | 5499 } |
| 5498 | 5500 |
| 5499 // Tells whether the instance has a call-as-function handler. | 5501 // Tells whether the instance has a call-as-function handler. |
| 5500 inline void set_has_instance_call_handler() { | 5502 inline void set_has_instance_call_handler() { |
| 5501 set_bit_field(bit_field() | (1 << kHasInstanceCallHandler)); | 5503 set_bit_field(bit_field() | (1 << kHasInstanceCallHandler)); |
| 5502 } | 5504 } |
| 5503 | 5505 |
| 5504 inline bool has_instance_call_handler() { | 5506 inline bool has_instance_call_handler() { |
| (...skipping 4719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10224 } else { | 10226 } else { |
| 10225 value &= ~(1 << bit_position); | 10227 value &= ~(1 << bit_position); |
| 10226 } | 10228 } |
| 10227 return value; | 10229 return value; |
| 10228 } | 10230 } |
| 10229 }; | 10231 }; |
| 10230 | 10232 |
| 10231 } } // namespace v8::internal | 10233 } } // namespace v8::internal |
| 10232 | 10234 |
| 10233 #endif // V8_OBJECTS_H_ | 10235 #endif // V8_OBJECTS_H_ |
| OLD | NEW |