| 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;
|
|
|