| 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 4246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4257 Handle<JSFunction> g = Handle<JSFunction>::cast( | 4257 Handle<JSFunction> g = Handle<JSFunction>::cast( |
| 4258 v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( | 4258 v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
| 4259 CcTest::global()->Get(env.local(), v8_str("g")).ToLocalChecked()))); | 4259 CcTest::global()->Get(env.local(), v8_str("g")).ToLocalChecked()))); |
| 4260 code = inner_scope.CloseAndEscape(handle(g->code(), isolate)); | 4260 code = inner_scope.CloseAndEscape(handle(g->code(), isolate)); |
| 4261 if (!code->is_optimized_code()) return; | 4261 if (!code->is_optimized_code()) return; |
| 4262 } | 4262 } |
| 4263 | 4263 |
| 4264 Handle<TypeFeedbackVector> vector = | 4264 Handle<TypeFeedbackVector> vector = |
| 4265 TypeFeedbackVector::New(isolate, handle(shared->feedback_metadata())); | 4265 TypeFeedbackVector::New(isolate, handle(shared->feedback_metadata())); |
| 4266 Handle<LiteralsArray> lit = | 4266 Handle<LiteralsArray> lit = |
| 4267 LiteralsArray::New(isolate, vector, shared->num_literals(), TENURED); | 4267 LiteralsArray::New(isolate, vector, shared->num_literals()); |
| 4268 Handle<Context> context(isolate->context()); | 4268 Handle<Context> context(isolate->context()); |
| 4269 | 4269 |
| 4270 // Add the new code several times to the optimized code map and also set an | 4270 // Add the new code several times to the optimized code map and also set an |
| 4271 // allocation timeout so that expanding the code map will trigger a GC. | 4271 // allocation timeout so that expanding the code map will trigger a GC. |
| 4272 heap->set_allocation_timeout(5); | 4272 heap->set_allocation_timeout(5); |
| 4273 FLAG_gc_interval = 1000; | 4273 FLAG_gc_interval = 1000; |
| 4274 for (int i = 0; i < 10; ++i) { | 4274 for (int i = 0; i < 10; ++i) { |
| 4275 BailoutId id = BailoutId(i); | 4275 BailoutId id = BailoutId(i); |
| 4276 SharedFunctionInfo::AddToOptimizedCodeMap(shared, context, code, lit, id); | 4276 SharedFunctionInfo::AddToOptimizedCodeMap(shared, context, code, lit, id); |
| 4277 } | 4277 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4335 | 4335 |
| 4336 // Add the code with a literals array to be evacuated. | 4336 // Add the code with a literals array to be evacuated. |
| 4337 Page* evac_page; | 4337 Page* evac_page; |
| 4338 { | 4338 { |
| 4339 HandleScope inner_scope(isolate); | 4339 HandleScope inner_scope(isolate); |
| 4340 AlwaysAllocateScope always_allocate(isolate); | 4340 AlwaysAllocateScope always_allocate(isolate); |
| 4341 // Make sure literal is placed on an old-space evacuation candidate. | 4341 // Make sure literal is placed on an old-space evacuation candidate. |
| 4342 heap::SimulateFullSpace(heap->old_space()); | 4342 heap::SimulateFullSpace(heap->old_space()); |
| 4343 | 4343 |
| 4344 // Make sure there the number of literals is > 0. | 4344 // Make sure there the number of literals is > 0. |
| 4345 Handle<LiteralsArray> lit = | 4345 Handle<LiteralsArray> lit = LiteralsArray::New(isolate, vector, 23); |
| 4346 LiteralsArray::New(isolate, vector, 23, TENURED); | |
| 4347 | 4346 |
| 4348 evac_page = Page::FromAddress(lit->address()); | 4347 evac_page = Page::FromAddress(lit->address()); |
| 4349 BailoutId id = BailoutId(100); | 4348 BailoutId id = BailoutId(100); |
| 4350 SharedFunctionInfo::AddToOptimizedCodeMap(shared, context, code, lit, id); | 4349 SharedFunctionInfo::AddToOptimizedCodeMap(shared, context, code, lit, id); |
| 4351 } | 4350 } |
| 4352 | 4351 |
| 4353 // Heap is ready, force {lit_page} to become an evacuation candidate and | 4352 // Heap is ready, force {lit_page} to become an evacuation candidate and |
| 4354 // simulate incremental marking to enqueue optimized code map. | 4353 // simulate incremental marking to enqueue optimized code map. |
| 4355 FLAG_manual_evacuation_candidates_selection = true; | 4354 FLAG_manual_evacuation_candidates_selection = true; |
| 4356 evac_page->SetFlag(MemoryChunk::FORCE_EVACUATION_CANDIDATE_FOR_TESTING); | 4355 evac_page->SetFlag(MemoryChunk::FORCE_EVACUATION_CANDIDATE_FOR_TESTING); |
| (...skipping 2566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6923 chunk, chunk->area_end() - kPointerSize, chunk->area_end()); | 6922 chunk, chunk->area_end() - kPointerSize, chunk->area_end()); |
| 6924 slots[chunk->area_end() - kPointerSize] = false; | 6923 slots[chunk->area_end() - kPointerSize] = false; |
| 6925 RememberedSet<OLD_TO_NEW>::Iterate(chunk, [&slots](Address addr) { | 6924 RememberedSet<OLD_TO_NEW>::Iterate(chunk, [&slots](Address addr) { |
| 6926 CHECK(slots[addr]); | 6925 CHECK(slots[addr]); |
| 6927 return KEEP_SLOT; | 6926 return KEEP_SLOT; |
| 6928 }); | 6927 }); |
| 6929 } | 6928 } |
| 6930 | 6929 |
| 6931 } // namespace internal | 6930 } // namespace internal |
| 6932 } // namespace v8 | 6931 } // namespace v8 |
| OLD | NEW |