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 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 // Please note this function does not perform a garbage collection. | 760 // Please note this function does not perform a garbage collection. |
761 MUST_USE_RESULT MaybeObject* AllocateMap( | 761 MUST_USE_RESULT MaybeObject* AllocateMap( |
762 InstanceType instance_type, | 762 InstanceType instance_type, |
763 int instance_size, | 763 int instance_size, |
764 ElementsKind elements_kind = TERMINAL_FAST_ELEMENTS_KIND); | 764 ElementsKind elements_kind = TERMINAL_FAST_ELEMENTS_KIND); |
765 | 765 |
766 // Allocates a partial map for bootstrapping. | 766 // Allocates a partial map for bootstrapping. |
767 MUST_USE_RESULT MaybeObject* AllocatePartialMap(InstanceType instance_type, | 767 MUST_USE_RESULT MaybeObject* AllocatePartialMap(InstanceType instance_type, |
768 int instance_size); | 768 int instance_size); |
769 | 769 |
770 // Allocates an empty code cache. | |
771 MUST_USE_RESULT MaybeObject* AllocateCodeCache(); | |
772 | |
773 // Allocates an empty PolymorphicCodeCache. | 770 // Allocates an empty PolymorphicCodeCache. |
774 MUST_USE_RESULT MaybeObject* AllocatePolymorphicCodeCache(); | 771 MUST_USE_RESULT MaybeObject* AllocatePolymorphicCodeCache(); |
775 | 772 |
776 // Clear the Instanceof cache (used when a prototype changes). | 773 // Clear the Instanceof cache (used when a prototype changes). |
777 inline void ClearInstanceofCache(); | 774 inline void ClearInstanceofCache(); |
778 | 775 |
779 // Iterates the whole code space to clear all ICs of the given kind. | 776 // Iterates the whole code space to clear all ICs of the given kind. |
780 void ClearAllICsByKind(Code::Kind kind); | 777 void ClearAllICsByKind(Code::Kind kind); |
781 | 778 |
782 // For use during bootup. | 779 // For use during bootup. |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
987 // callee is only valid in sloppy mode. | 984 // callee is only valid in sloppy mode. |
988 static const int kArgumentsCalleeIndex = 1; | 985 static const int kArgumentsCalleeIndex = 1; |
989 | 986 |
990 // Allocates an arguments object - optionally with an elements array. | 987 // Allocates an arguments object - optionally with an elements array. |
991 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 988 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
992 // failed. | 989 // failed. |
993 // Please note this does not perform a garbage collection. | 990 // Please note this does not perform a garbage collection. |
994 MUST_USE_RESULT MaybeObject* AllocateArgumentsObject( | 991 MUST_USE_RESULT MaybeObject* AllocateArgumentsObject( |
995 Object* callee, int length); | 992 Object* callee, int length); |
996 | 993 |
997 // Same as NewNumberFromDouble, but may return a preallocated/immutable | |
998 // number object (e.g., minus_zero_value_, nan_value_) | |
999 MUST_USE_RESULT MaybeObject* NumberFromDouble( | |
1000 double value, PretenureFlag pretenure = NOT_TENURED); | |
1001 | |
1002 // Allocated a HeapNumber from value. | 994 // Allocated a HeapNumber from value. |
1003 MUST_USE_RESULT MaybeObject* AllocateHeapNumber( | 995 MUST_USE_RESULT MaybeObject* AllocateHeapNumber( |
1004 double value, PretenureFlag pretenure = NOT_TENURED); | 996 double value, PretenureFlag pretenure = NOT_TENURED); |
1005 | 997 |
1006 // Converts an int into either a Smi or a HeapNumber object. | 998 // Converts an int into either a Smi or a HeapNumber object. |
1007 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 999 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
1008 // failed. | 1000 // failed. |
1009 // Please note this does not perform a garbage collection. | 1001 // Please note this does not perform a garbage collection. |
1010 MUST_USE_RESULT inline MaybeObject* NumberFromInt32( | |
1011 int32_t value, PretenureFlag pretenure = NOT_TENURED); | |
1012 | |
1013 // Converts an int into either a Smi or a HeapNumber object. | |
1014 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | |
1015 // failed. | |
1016 // Please note this does not perform a garbage collection. | |
1017 MUST_USE_RESULT inline MaybeObject* NumberFromUint32( | 1002 MUST_USE_RESULT inline MaybeObject* NumberFromUint32( |
1018 uint32_t value, PretenureFlag pretenure = NOT_TENURED); | 1003 uint32_t value, PretenureFlag pretenure = NOT_TENURED); |
1019 | 1004 |
1020 // Allocates a new foreign object. | 1005 // Allocates a new foreign object. |
1021 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 1006 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
1022 // failed. | 1007 // failed. |
1023 // Please note this does not perform a garbage collection. | 1008 // Please note this does not perform a garbage collection. |
1024 MUST_USE_RESULT MaybeObject* AllocateForeign( | 1009 MUST_USE_RESULT MaybeObject* AllocateForeign( |
1025 Address address, PretenureFlag pretenure = NOT_TENURED); | 1010 Address address, PretenureFlag pretenure = NOT_TENURED); |
1026 | 1011 |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1400 // Support for partial snapshots. After calling this we have a linear | 1385 // Support for partial snapshots. After calling this we have a linear |
1401 // space to write objects in each space. | 1386 // space to write objects in each space. |
1402 void ReserveSpace(int *sizes, Address* addresses); | 1387 void ReserveSpace(int *sizes, Address* addresses); |
1403 | 1388 |
1404 // | 1389 // |
1405 // Support for the API. | 1390 // Support for the API. |
1406 // | 1391 // |
1407 | 1392 |
1408 bool CreateApiObjects(); | 1393 bool CreateApiObjects(); |
1409 | 1394 |
1410 // Attempt to find the number in a small cache. If we finds it, return | |
1411 // the string representation of the number. Otherwise return undefined. | |
1412 Object* GetNumberStringCache(Object* number); | |
1413 | |
1414 // Update the cache with a new number-string pair. | |
1415 void SetNumberStringCache(Object* number, String* str); | |
1416 | |
1417 // Adjusts the amount of registered external memory. | 1395 // Adjusts the amount of registered external memory. |
1418 // Returns the adjusted value. | 1396 // Returns the adjusted value. |
1419 inline int64_t AdjustAmountOfExternalAllocatedMemory( | 1397 inline int64_t AdjustAmountOfExternalAllocatedMemory( |
1420 int64_t change_in_bytes); | 1398 int64_t change_in_bytes); |
1421 | 1399 |
1422 // This is only needed for testing high promotion mode. | 1400 // This is only needed for testing high promotion mode. |
1423 void SetNewSpaceHighPromotionModeActive(bool mode) { | 1401 void SetNewSpaceHighPromotionModeActive(bool mode) { |
1424 new_space_high_promotion_mode_active_ = mode; | 1402 new_space_high_promotion_mode_active_ = mode; |
1425 } | 1403 } |
1426 | 1404 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1503 STATIC_CHECK(kTrueValueRootIndex == Internals::kTrueValueRootIndex); | 1481 STATIC_CHECK(kTrueValueRootIndex == Internals::kTrueValueRootIndex); |
1504 STATIC_CHECK(kFalseValueRootIndex == Internals::kFalseValueRootIndex); | 1482 STATIC_CHECK(kFalseValueRootIndex == Internals::kFalseValueRootIndex); |
1505 STATIC_CHECK(kempty_stringRootIndex == Internals::kEmptyStringRootIndex); | 1483 STATIC_CHECK(kempty_stringRootIndex == Internals::kEmptyStringRootIndex); |
1506 | 1484 |
1507 // Generated code can embed direct references to non-writable roots if | 1485 // Generated code can embed direct references to non-writable roots if |
1508 // they are in new space. | 1486 // they are in new space. |
1509 static bool RootCanBeWrittenAfterInitialization(RootListIndex root_index); | 1487 static bool RootCanBeWrittenAfterInitialization(RootListIndex root_index); |
1510 // Generated code can treat direct references to this root as constant. | 1488 // Generated code can treat direct references to this root as constant. |
1511 bool RootCanBeTreatedAsConstant(RootListIndex root_index); | 1489 bool RootCanBeTreatedAsConstant(RootListIndex root_index); |
1512 | 1490 |
1513 MUST_USE_RESULT MaybeObject* NumberToString( | |
1514 Object* number, bool check_number_string_cache = true); | |
1515 MUST_USE_RESULT MaybeObject* Uint32ToString( | |
1516 uint32_t value, bool check_number_string_cache = true); | |
1517 | |
1518 Map* MapForFixedTypedArray(ExternalArrayType array_type); | 1491 Map* MapForFixedTypedArray(ExternalArrayType array_type); |
1519 RootListIndex RootIndexForFixedTypedArray( | 1492 RootListIndex RootIndexForFixedTypedArray( |
1520 ExternalArrayType array_type); | 1493 ExternalArrayType array_type); |
1521 | 1494 |
1522 Map* MapForExternalArrayType(ExternalArrayType array_type); | 1495 Map* MapForExternalArrayType(ExternalArrayType array_type); |
1523 RootListIndex RootIndexForExternalArrayType( | 1496 RootListIndex RootIndexForExternalArrayType( |
1524 ExternalArrayType array_type); | 1497 ExternalArrayType array_type); |
1525 | 1498 |
1526 RootListIndex RootIndexForEmptyExternalArray(ElementsKind kind); | 1499 RootListIndex RootIndexForEmptyExternalArray(ElementsKind kind); |
1527 RootListIndex RootIndexForEmptyFixedTypedArray(ElementsKind kind); | 1500 RootListIndex RootIndexForEmptyFixedTypedArray(ElementsKind kind); |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2152 static void ScavengeObjectSlow(HeapObject** p, HeapObject* object); | 2125 static void ScavengeObjectSlow(HeapObject** p, HeapObject* object); |
2153 | 2126 |
2154 // Total RegExp code ever generated | 2127 // Total RegExp code ever generated |
2155 double total_regexp_code_generated_; | 2128 double total_regexp_code_generated_; |
2156 | 2129 |
2157 GCTracer* tracer_; | 2130 GCTracer* tracer_; |
2158 | 2131 |
2159 // Allocates a small number to string cache. | 2132 // Allocates a small number to string cache. |
2160 MUST_USE_RESULT MaybeObject* AllocateInitialNumberStringCache(); | 2133 MUST_USE_RESULT MaybeObject* AllocateInitialNumberStringCache(); |
2161 // Creates and installs the full-sized number string cache. | 2134 // Creates and installs the full-sized number string cache. |
2162 void AllocateFullSizeNumberStringCache(); | |
2163 // Get the length of the number to string cache based on the max semispace | |
2164 // size. | |
2165 int FullSizeNumberStringCacheLength(); | 2135 int FullSizeNumberStringCacheLength(); |
2166 // Flush the number to string cache. | 2136 // Flush the number to string cache. |
2167 void FlushNumberStringCache(); | 2137 void FlushNumberStringCache(); |
2168 | 2138 |
2169 // Allocates a fixed-size allocation sites scratchpad. | 2139 // Allocates a fixed-size allocation sites scratchpad. |
2170 MUST_USE_RESULT MaybeObject* AllocateAllocationSitesScratchpad(); | 2140 MUST_USE_RESULT MaybeObject* AllocateAllocationSitesScratchpad(); |
2171 | 2141 |
2172 // Sets used allocation sites entries to undefined. | 2142 // Sets used allocation sites entries to undefined. |
2173 void FlushAllocationSitesScratchpad(); | 2143 void FlushAllocationSitesScratchpad(); |
2174 | 2144 |
(...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2980 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. | 2950 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. |
2981 | 2951 |
2982 private: | 2952 private: |
2983 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2953 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
2984 }; | 2954 }; |
2985 #endif // DEBUG | 2955 #endif // DEBUG |
2986 | 2956 |
2987 } } // namespace v8::internal | 2957 } } // namespace v8::internal |
2988 | 2958 |
2989 #endif // V8_HEAP_H_ | 2959 #endif // V8_HEAP_H_ |
OLD | NEW |