Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index ca50fdda2769363203fff055ac86d1ead88e0510..53f3fa21b7d0f0e273257239e4bfbd8832a2f882 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -2924,7 +2924,8 @@ bool Heap::CreateInitialMaps() { |
set_empty_byte_array(byte_array); |
BytecodeArray* bytecode_array; |
- AllocationResult allocation = AllocateBytecodeArray(0, nullptr, 0, 0); |
+ AllocationResult allocation = |
+ AllocateBytecodeArray(0, nullptr, 0, 0, empty_fixed_array()); |
if (!allocation.To(&bytecode_array)) { |
return false; |
} |
@@ -3524,10 +3525,13 @@ AllocationResult Heap::AllocateByteArray(int length, PretenureFlag pretenure) { |
AllocationResult Heap::AllocateBytecodeArray(int length, |
const byte* const raw_bytecodes, |
int frame_size, |
- int parameter_count) { |
+ int parameter_count, |
+ FixedArray* constant_pool) { |
if (length < 0 || length > BytecodeArray::kMaxLength) { |
v8::internal::Heap::FatalProcessOutOfMemory("invalid array length", true); |
} |
+ // Bytecode array is pretenured, so constant pool array should be to. |
+ DCHECK(!InNewSpace(constant_pool)); |
int size = BytecodeArray::SizeFor(length); |
HeapObject* result; |
@@ -3541,6 +3545,7 @@ AllocationResult Heap::AllocateBytecodeArray(int length, |
instance->set_length(length); |
instance->set_frame_size(frame_size); |
instance->set_parameter_count(parameter_count); |
+ instance->set_constant_pool(constant_pool); |
CopyBytes(instance->GetFirstBytecodeAddress(), raw_bytecodes, length); |
return result; |