| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 the V8 project authors. All rights reserved. | 
|     2 // Redistribution and use in source and binary forms, with or without |     2 // Redistribution and use in source and binary forms, with or without | 
|     3 // modification, are permitted provided that the following conditions are |     3 // modification, are permitted provided that the following conditions are | 
|     4 // met: |     4 // met: | 
|     5 // |     5 // | 
|     6 //     * Redistributions of source code must retain the above copyright |     6 //     * Redistributions of source code must retain the above copyright | 
|     7 //       notice, this list of conditions and the following disclaimer. |     7 //       notice, this list of conditions and the following disclaimer. | 
|     8 //     * Redistributions in binary form must reproduce the above |     8 //     * Redistributions in binary form must reproduce the above | 
|     9 //       copyright notice, this list of conditions and the following |     9 //       copyright notice, this list of conditions and the following | 
|    10 //       disclaimer in the documentation and/or other materials provided |    10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 2182 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2193  |  2193  | 
|  2194  |  2194  | 
|  2195 TEST(OptimizedPretenuringAllocationFolding) { |  2195 TEST(OptimizedPretenuringAllocationFolding) { | 
|  2196   i::FLAG_allow_natives_syntax = true; |  2196   i::FLAG_allow_natives_syntax = true; | 
|  2197   i::FLAG_max_semi_space_size = 1; |  2197   i::FLAG_max_semi_space_size = 1; | 
|  2198   i::FLAG_allocation_site_pretenuring = false; |  2198   i::FLAG_allocation_site_pretenuring = false; | 
|  2199   CcTest::InitializeVM(); |  2199   CcTest::InitializeVM(); | 
|  2200   if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |  2200   if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; | 
|  2201   if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |  2201   if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; | 
|  2202   v8::HandleScope scope(CcTest::isolate()); |  2202   v8::HandleScope scope(CcTest::isolate()); | 
|  2203   CcTest::heap()->SetNewSpaceHighPromotionModeActive(true); |  | 
|  2204  |  2203  | 
|  2205   v8::Local<v8::Value> res = CompileRun( |  2204   v8::Local<v8::Value> res = CompileRun( | 
|  2206       "function DataObject() {" |  2205       "function DataObject() {" | 
|  2207       "  this.a = 1.1;" |  2206       "  this.a = 1.1;" | 
|  2208       "  this.b = [{}];" |  2207       "  this.b = [{}];" | 
|  2209       "  this.c = 1.2;" |  2208       "  this.c = 1.2;" | 
|  2210       "  this.d = [{}];" |  2209       "  this.d = [{}];" | 
|  2211       "  this.e = 1.3;" |  2210       "  this.e = 1.3;" | 
|  2212       "  this.f = [{}];" |  2211       "  this.f = [{}];" | 
|  2213       "}" |  2212       "}" | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|  2236  |  2235  | 
|  2237  |  2236  | 
|  2238 TEST(OptimizedPretenuringAllocationFoldingBlocks) { |  2237 TEST(OptimizedPretenuringAllocationFoldingBlocks) { | 
|  2239   i::FLAG_allow_natives_syntax = true; |  2238   i::FLAG_allow_natives_syntax = true; | 
|  2240   i::FLAG_max_semi_space_size = 1; |  2239   i::FLAG_max_semi_space_size = 1; | 
|  2241   i::FLAG_allocation_site_pretenuring = false; |  2240   i::FLAG_allocation_site_pretenuring = false; | 
|  2242   CcTest::InitializeVM(); |  2241   CcTest::InitializeVM(); | 
|  2243   if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |  2242   if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; | 
|  2244   if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |  2243   if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; | 
|  2245   v8::HandleScope scope(CcTest::isolate()); |  2244   v8::HandleScope scope(CcTest::isolate()); | 
|  2246   CcTest::heap()->SetNewSpaceHighPromotionModeActive(true); |  | 
|  2247  |  2245  | 
|  2248   v8::Local<v8::Value> res = CompileRun( |  2246   v8::Local<v8::Value> res = CompileRun( | 
|  2249       "var number_elements = 30000;" |  2247       "var number_elements = 30000;" | 
|  2250       "var elements = new Array(number_elements);" |  2248       "var elements = new Array(number_elements);" | 
|  2251       "function DataObject() {" |  2249       "function DataObject() {" | 
|  2252       "  this.a = [{}];" |  2250       "  this.a = [{}];" | 
|  2253       "  this.b = [{}];" |  2251       "  this.b = [{}];" | 
|  2254       "  this.c = 1.1;" |  2252       "  this.c = 1.1;" | 
|  2255       "  this.d = 1.2;" |  2253       "  this.d = 1.2;" | 
|  2256       "  this.e = [{}];" |  2254       "  this.e = [{}];" | 
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2583  |  2581  | 
|  2584 // Test global pretenuring call new. |  2582 // Test global pretenuring call new. | 
|  2585 TEST(OptimizedPretenuringCallNew) { |  2583 TEST(OptimizedPretenuringCallNew) { | 
|  2586   i::FLAG_allow_natives_syntax = true; |  2584   i::FLAG_allow_natives_syntax = true; | 
|  2587   i::FLAG_allocation_site_pretenuring = false; |  2585   i::FLAG_allocation_site_pretenuring = false; | 
|  2588   i::FLAG_pretenuring_call_new = true; |  2586   i::FLAG_pretenuring_call_new = true; | 
|  2589   CcTest::InitializeVM(); |  2587   CcTest::InitializeVM(); | 
|  2590   if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |  2588   if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; | 
|  2591   if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |  2589   if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; | 
|  2592   v8::HandleScope scope(CcTest::isolate()); |  2590   v8::HandleScope scope(CcTest::isolate()); | 
|  2593   CcTest::heap()->SetNewSpaceHighPromotionModeActive(true); |  | 
|  2594  |  2591  | 
|  2595   AlwaysAllocateScope always_allocate(CcTest::i_isolate()); |  2592   AlwaysAllocateScope always_allocate(CcTest::i_isolate()); | 
|  2596   v8::Local<v8::Value> res = CompileRun( |  2593   v8::Local<v8::Value> res = CompileRun( | 
|  2597       "function g() { this.a = 0; }" |  2594       "function g() { this.a = 0; }" | 
|  2598       "function f() {" |  2595       "function f() {" | 
|  2599       "  return new g();" |  2596       "  return new g();" | 
|  2600       "};" |  2597       "};" | 
|  2601       "f(); f(); f();" |  2598       "f(); f(); f();" | 
|  2602       "%OptimizeFunctionOnNextCall(f);" |  2599       "%OptimizeFunctionOnNextCall(f);" | 
|  2603       "f();"); |  2600       "f();"); | 
| (...skipping 1112 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3716              "  %DeoptimizeFunction(test);" |  3713              "  %DeoptimizeFunction(test);" | 
|  3717              "}"); |  3714              "}"); | 
|  3718  |  3715  | 
|  3719   // Warm-up with inline allocation enabled. |  3716   // Warm-up with inline allocation enabled. | 
|  3720   CompileRun("test(); test(); run();"); |  3717   CompileRun("test(); test(); run();"); | 
|  3721  |  3718  | 
|  3722   // Run test with inline allocation disabled. |  3719   // Run test with inline allocation disabled. | 
|  3723   CcTest::heap()->DisableInlineAllocation(); |  3720   CcTest::heap()->DisableInlineAllocation(); | 
|  3724   CompileRun("run()"); |  3721   CompileRun("run()"); | 
|  3725  |  3722  | 
|  3726   // Run test with inline allocation disabled and pretenuring. |  | 
|  3727   CcTest::heap()->SetNewSpaceHighPromotionModeActive(true); |  | 
|  3728   CompileRun("run()"); |  | 
|  3729  |  | 
|  3730   // Run test with inline allocation re-enabled. |  3723   // Run test with inline allocation re-enabled. | 
|  3731   CcTest::heap()->EnableInlineAllocation(); |  3724   CcTest::heap()->EnableInlineAllocation(); | 
|  3732   CompileRun("run()"); |  3725   CompileRun("run()"); | 
|  3733 } |  3726 } | 
|  3734  |  3727  | 
|  3735  |  3728  | 
|  3736 static int AllocationSitesCount(Heap* heap) { |  3729 static int AllocationSitesCount(Heap* heap) { | 
|  3737   int count = 0; |  3730   int count = 0; | 
|  3738   for (Object* site = heap->allocation_sites_list(); |  3731   for (Object* site = heap->allocation_sites_list(); | 
|  3739        !(site->IsUndefined()); |  3732        !(site->IsUndefined()); | 
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4242       "array;"); |  4235       "array;"); | 
|  4243  |  4236  | 
|  4244   Handle<JSObject> o = |  4237   Handle<JSObject> o = | 
|  4245       v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(result)); |  4238       v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(result)); | 
|  4246   CHECK(heap->InOldPointerSpace(o->elements())); |  4239   CHECK(heap->InOldPointerSpace(o->elements())); | 
|  4247   CHECK(heap->InOldPointerSpace(*o)); |  4240   CHECK(heap->InOldPointerSpace(*o)); | 
|  4248   Page* page = Page::FromAddress(o->elements()->address()); |  4241   Page* page = Page::FromAddress(o->elements()->address()); | 
|  4249   CHECK(page->WasSwept() || |  4242   CHECK(page->WasSwept() || | 
|  4250         Marking::IsBlack(Marking::MarkBitFrom(o->elements()))); |  4243         Marking::IsBlack(Marking::MarkBitFrom(o->elements()))); | 
|  4251 } |  4244 } | 
| OLD | NEW |