| Index: src/transitions.cc
|
| diff --git a/src/transitions.cc b/src/transitions.cc
|
| index 85e5dc7967dccc65235a6b6e274489498eed2e2e..4fe2ace3d94f28736bcef8e94db59e208fc3fee3 100644
|
| --- a/src/transitions.cc
|
| +++ b/src/transitions.cc
|
| @@ -391,18 +391,23 @@ int TransitionArray::Capacity(Object* raw_transitions) {
|
| Handle<TransitionArray> TransitionArray::Allocate(Isolate* isolate,
|
| int number_of_transitions,
|
| int slack) {
|
| - Handle<FixedArray> array = isolate->factory()->NewFixedArray(
|
| - LengthFor(number_of_transitions + slack), TENURED);
|
| + Handle<FixedArray> array = isolate->factory()->NewTransitionArray(
|
| + LengthFor(number_of_transitions + slack));
|
| + array->set(kNextLinkIndex, isolate->heap()->undefined_value());
|
| array->set(kPrototypeTransitionsIndex, Smi::FromInt(0));
|
| array->set(kTransitionLengthIndex, Smi::FromInt(number_of_transitions));
|
| return Handle<TransitionArray>::cast(array);
|
| }
|
|
|
|
|
| -static void ZapTransitionArray(TransitionArray* transitions) {
|
| - MemsetPointer(transitions->data_start(),
|
| +// static
|
| +void TransitionArray::ZapTransitionArray(TransitionArray* transitions) {
|
| + // Do not zap the next link that is used by GC.
|
| + STATIC_ASSERT(kNextLinkIndex + 1 == kPrototypeTransitionsIndex);
|
| + MemsetPointer(transitions->data_start() + kPrototypeTransitionsIndex,
|
| transitions->GetHeap()->the_hole_value(),
|
| - transitions->length());
|
| + transitions->length() - kPrototypeTransitionsIndex);
|
| + transitions->SetNumberOfTransitions(0);
|
| }
|
|
|
|
|
|
|