Index: include/v8.h |
diff --git a/include/v8.h b/include/v8.h |
index 20583c852ca83d686b31099cc562359d99714289..86db38799b103fc9b61fa9b7bbd993a6bd71186f 100644 |
--- a/include/v8.h |
+++ b/include/v8.h |
@@ -7493,13 +7493,12 @@ class Internals { |
static const int kExternalOneByteRepresentationTag = 0x06; |
static const int kIsolateEmbedderDataOffset = 0 * kApiPointerSize; |
- static const int kAmountOfExternalAllocatedMemoryOffset = |
- 4 * kApiPointerSize; |
- static const int kAmountOfExternalAllocatedMemoryAtLastGlobalGCOffset = |
- kAmountOfExternalAllocatedMemoryOffset + kApiInt64Size; |
- static const int kIsolateRootsOffset = |
- kAmountOfExternalAllocatedMemoryAtLastGlobalGCOffset + kApiInt64Size + |
- kApiPointerSize + kApiPointerSize; |
+ static const int kExternalMemoryOffset = 4 * kApiPointerSize; |
+ static const int kExternalMemoryLimitOffset = |
+ kExternalMemoryOffset + kApiInt64Size; |
+ static const int kIsolateRootsOffset = kExternalMemoryLimitOffset + |
+ kApiInt64Size + kApiInt64Size + |
+ kApiPointerSize + kApiPointerSize; |
static const int kUndefinedValueRootIndex = 4; |
static const int kTheHoleValueRootIndex = 5; |
static const int kNullValueRootIndex = 6; |
@@ -7507,10 +7506,6 @@ class Internals { |
static const int kFalseValueRootIndex = 8; |
static const int kEmptyStringRootIndex = 9; |
- // The external allocation limit should be below 256 MB on all architectures |
- // to avoid that resource-constrained embedders run low on memory. |
- static const int kExternalAllocationLimit = 192 * 1024 * 1024; |
- |
static const int kNodeClassIdOffset = 1 * kApiPointerSize; |
static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; |
static const int kNodeStateMask = 0x7; |
@@ -8705,21 +8700,16 @@ uint32_t Isolate::GetNumberOfDataSlots() { |
int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( |
int64_t change_in_bytes) { |
typedef internal::Internals I; |
- int64_t* amount_of_external_allocated_memory = |
- reinterpret_cast<int64_t*>(reinterpret_cast<uint8_t*>(this) + |
- I::kAmountOfExternalAllocatedMemoryOffset); |
- int64_t* amount_of_external_allocated_memory_at_last_global_gc = |
- reinterpret_cast<int64_t*>( |
- reinterpret_cast<uint8_t*>(this) + |
- I::kAmountOfExternalAllocatedMemoryAtLastGlobalGCOffset); |
- int64_t amount = *amount_of_external_allocated_memory + change_in_bytes; |
- if (change_in_bytes > 0 && |
- amount - *amount_of_external_allocated_memory_at_last_global_gc > |
- I::kExternalAllocationLimit) { |
+ int64_t* external_memory = reinterpret_cast<int64_t*>( |
+ reinterpret_cast<uint8_t*>(this) + I::kExternalMemoryOffset); |
+ const int64_t external_memory_limit = *reinterpret_cast<int64_t*>( |
+ reinterpret_cast<uint8_t*>(this) + I::kExternalMemoryLimitOffset); |
+ const int64_t amount = *external_memory + change_in_bytes; |
+ *external_memory = amount; |
+ if (change_in_bytes > 0 && amount > external_memory_limit) { |
ReportExternalAllocationLimitReached(); |
} |
- *amount_of_external_allocated_memory = amount; |
- return *amount_of_external_allocated_memory; |
+ return *external_memory; |
} |