| Index: src/compiler/node.cc
|
| diff --git a/src/compiler/node.cc b/src/compiler/node.cc
|
| index 1486d8a34d2655b3a6367810139d77bac6cbf67a..a4680e4636f1630219fcfc4041e3aef1f260edbf 100644
|
| --- a/src/compiler/node.cc
|
| +++ b/src/compiler/node.cc
|
| @@ -12,15 +12,15 @@
|
|
|
| Node* Node::New(Zone* zone, NodeId id, const Operator* op, int input_count,
|
| Node** inputs, bool has_extensible_inputs) {
|
| - size_t node_size = sizeof(Node);
|
| + size_t node_size = sizeof(Node) - sizeof(Input);
|
| int reserve_input_count = has_extensible_inputs ? kDefaultReservedInputs : 0;
|
| - size_t inputs_size = (input_count + reserve_input_count) * sizeof(Input);
|
| + size_t inputs_size = std::max<size_t>(
|
| + (input_count + reserve_input_count) * sizeof(Input), sizeof(InputDeque*));
|
| size_t uses_size = input_count * sizeof(Use);
|
| int size = static_cast<int>(node_size + inputs_size + uses_size);
|
| void* buffer = zone->New(size);
|
| Node* result = new (buffer) Node(id, op, input_count, reserve_input_count);
|
| - Input* input =
|
| - reinterpret_cast<Input*>(reinterpret_cast<char*>(buffer) + node_size);
|
| + Input* input = result->inputs_.static_;
|
| Use* use =
|
| reinterpret_cast<Use*>(reinterpret_cast<char*>(input) + inputs_size);
|
|
|
| @@ -175,9 +175,7 @@
|
| ReservedInputCountField::encode(reserved_input_count) |
|
| HasAppendableInputsField::encode(false)),
|
| first_use_(nullptr),
|
| - last_use_(nullptr) {
|
| - inputs_.static_ = reinterpret_cast<Input*>(this + 1);
|
| -}
|
| + last_use_(nullptr) {}
|
|
|
|
|
| void Node::EnsureAppendableInputs(Zone* zone) {
|
|
|