Changeset 294905 in webkit
- Timestamp:
- May 26, 2022, 3:51:13 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/JSCellInlines.h
r293710 r294905 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2012-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 168 168 } 169 169 170 template<typename T> 171 ALWAYS_INLINE void* tryAllocateCellHelper(Heap& heap, size_t size, GCDeferralContext* deferralContext, AllocationFailureMode failureMode) 172 { 173 VM& vm = heap.vm(); 174 ASSERT(deferralContext || heap.isDeferred() || !DisallowGC::isInEffectOnCurrentThread()); 170 template<typename T, AllocationFailureMode failureMode> 171 ALWAYS_INLINE void* tryAllocateCellHelper(VM& vm, size_t size, GCDeferralContext* deferralContext) 172 { 173 ASSERT(deferralContext || vm.heap.isDeferred() || !DisallowGC::isInEffectOnCurrentThread()); 175 174 ASSERT(size >= sizeof(T)); 176 175 JSCell* result = static_cast<JSCell*>(subspaceFor<T>(vm)->allocate(vm, size, deferralContext, failureMode)); 177 if (failureMode == AllocationFailureMode::ReturnNull && !result) 178 return nullptr; 176 if constexpr (failureMode == AllocationFailureMode::ReturnNull) { 177 if (!result) 178 return nullptr; 179 } 179 180 #if ENABLE(GC_VALIDATION) 180 181 ASSERT(!vm.isInitializingObject()); … … 188 189 void* allocateCell(VM& vm, size_t size) 189 190 { 190 return tryAllocateCellHelper<T >(vm.heap, size, nullptr, AllocationFailureMode::Assert);191 return tryAllocateCellHelper<T, AllocationFailureMode::Assert>(vm, size, nullptr); 191 192 } 192 193 … … 194 195 void* tryAllocateCell(VM& vm, size_t size) 195 196 { 196 return tryAllocateCellHelper<T >(vm.heap, size, nullptr, AllocationFailureMode::ReturnNull);197 return tryAllocateCellHelper<T, AllocationFailureMode::ReturnNull>(vm, size, nullptr); 197 198 } 198 199 … … 200 201 void* allocateCell(VM& vm, GCDeferralContext* deferralContext, size_t size) 201 202 { 202 return tryAllocateCellHelper<T >(vm.heap, size, deferralContext, AllocationFailureMode::Assert);203 return tryAllocateCellHelper<T, AllocationFailureMode::Assert>(vm, size, deferralContext); 203 204 } 204 205 … … 206 207 void* tryAllocateCell(VM& vm, GCDeferralContext* deferralContext, size_t size) 207 208 { 208 return tryAllocateCellHelper<T >(vm.heap, size, deferralContext, AllocationFailureMode::ReturnNull);209 return tryAllocateCellHelper<T, AllocationFailureMode::ReturnNull>(vm, size, deferralContext); 209 210 } 210 211
Note:
See TracChangeset
for help on using the changeset viewer.