| Index: test/cctest/test-heap.cc
 | 
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc
 | 
| index f97bf17219a903143d00a13faef5d1b3eedd5998..9a5f24ec8227701a0af962da4a907ee3477f1eb4 100644
 | 
| --- a/test/cctest/test-heap.cc
 | 
| +++ b/test/cctest/test-heap.cc
 | 
| @@ -1264,9 +1264,9 @@ static void FillUpNewSpace(NewSpace* new_space) {
 | 
|    v8::HandleScope scope;
 | 
|    AlwaysAllocateScope always_allocate;
 | 
|    intptr_t available = new_space->EffectiveCapacity() - new_space->Size();
 | 
| -  intptr_t number_of_fillers = (available / FixedArray::SizeFor(1000)) - 10;
 | 
| +  intptr_t number_of_fillers = (available / FixedArray::SizeFor(32)) - 1;
 | 
|    for (intptr_t i = 0; i < number_of_fillers; i++) {
 | 
| -    CHECK(HEAP->InNewSpace(*FACTORY->NewFixedArray(1000, NOT_TENURED)));
 | 
| +    CHECK(HEAP->InNewSpace(*FACTORY->NewFixedArray(32, NOT_TENURED)));
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -1680,3 +1680,33 @@ TEST(ResetSharedFunctionInfoCountersDuringMarkSweep) {
 | 
|    CHECK_EQ(0, f->shared()->opt_count());
 | 
|    CHECK_EQ(0, f->shared()->code()->profiler_ticks());
 | 
|  }
 | 
| +
 | 
| +
 | 
| +// Test that HAllocateObject will always return an object in new-space.
 | 
| +TEST(OptimizedAllocationAlwaysInNewSpace) {
 | 
| +  i::FLAG_allow_natives_syntax = true;
 | 
| +  InitializeVM();
 | 
| +  if (!i::V8::UseCrankshaft() || i::FLAG_always_opt) return;
 | 
| +  v8::HandleScope scope;
 | 
| +
 | 
| +  FillUpNewSpace(HEAP->new_space());
 | 
| +  AlwaysAllocateScope always_allocate;
 | 
| +  v8::Local<v8::Value> res = CompileRun(
 | 
| +      "function c(x) {"
 | 
| +      "  this.x = x;"
 | 
| +      "  for (var i = 0; i < 32; i++) {"
 | 
| +      "    this['x' + i] = x;"
 | 
| +      "  }"
 | 
| +      "}"
 | 
| +      "function f(x) { return new c(x); };"
 | 
| +      "f(1); f(2); f(3);"
 | 
| +      "%OptimizeFunctionOnNextCall(f);"
 | 
| +      "f(4);");
 | 
| +  CHECK(res->IsObject());
 | 
| +  CHECK(res->ToObject()->GetRealNamedProperty(v8_str("x"))->Int32Value() == 4);
 | 
| +
 | 
| +  Handle<JSObject> o =
 | 
| +      v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res));
 | 
| +
 | 
| +  CHECK(HEAP->InNewSpace(*o));
 | 
| +}
 | 
| 
 |