| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 the V8 project authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 #include "src/v8.h" |     5 #include "src/v8.h" | 
|     6  |     6  | 
|     7 #include "src/base/atomicops.h" |     7 #include "src/base/atomicops.h" | 
 |     8 #include "src/base/bits.h" | 
|     8 #include "src/code-stubs.h" |     9 #include "src/code-stubs.h" | 
|     9 #include "src/compilation-cache.h" |    10 #include "src/compilation-cache.h" | 
|    10 #include "src/cpu-profiler.h" |    11 #include "src/cpu-profiler.h" | 
|    11 #include "src/deoptimizer.h" |    12 #include "src/deoptimizer.h" | 
|    12 #include "src/execution.h" |    13 #include "src/execution.h" | 
|    13 #include "src/gdb-jit.h" |    14 #include "src/gdb-jit.h" | 
|    14 #include "src/global-handles.h" |    15 #include "src/global-handles.h" | 
|    15 #include "src/heap/incremental-marking.h" |    16 #include "src/heap/incremental-marking.h" | 
|    16 #include "src/heap/mark-compact.h" |    17 #include "src/heap/mark-compact.h" | 
|    17 #include "src/heap/objects-visiting.h" |    18 #include "src/heap/objects-visiting.h" | 
| (...skipping 1901 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1919     if (it.HasNext()) { |  1920     if (it.HasNext()) { | 
|  1920       const MarkBit::CellType next_cell = *(cell + 1); |  1921       const MarkBit::CellType next_cell = *(cell + 1); | 
|  1921       grey_objects = current_cell & ((current_cell >> 1) | |  1922       grey_objects = current_cell & ((current_cell >> 1) | | 
|  1922                                      (next_cell << (Bitmap::kBitsPerCell - 1))); |  1923                                      (next_cell << (Bitmap::kBitsPerCell - 1))); | 
|  1923     } else { |  1924     } else { | 
|  1924       grey_objects = current_cell & (current_cell >> 1); |  1925       grey_objects = current_cell & (current_cell >> 1); | 
|  1925     } |  1926     } | 
|  1926  |  1927  | 
|  1927     int offset = 0; |  1928     int offset = 0; | 
|  1928     while (grey_objects != 0) { |  1929     while (grey_objects != 0) { | 
|  1929       int trailing_zeros = CompilerIntrinsics::CountTrailingZeros(grey_objects); |  1930       int trailing_zeros = base::bits::CountTrailingZeros32(grey_objects); | 
|  1930       grey_objects >>= trailing_zeros; |  1931       grey_objects >>= trailing_zeros; | 
|  1931       offset += trailing_zeros; |  1932       offset += trailing_zeros; | 
|  1932       MarkBit markbit(cell, 1 << offset, false); |  1933       MarkBit markbit(cell, 1 << offset, false); | 
|  1933       DCHECK(Marking::IsGrey(markbit)); |  1934       DCHECK(Marking::IsGrey(markbit)); | 
|  1934       Marking::GreyToBlack(markbit); |  1935       Marking::GreyToBlack(markbit); | 
|  1935       Address addr = cell_base + offset * kPointerSize; |  1936       Address addr = cell_base + offset * kPointerSize; | 
|  1936       HeapObject* object = HeapObject::FromAddress(addr); |  1937       HeapObject* object = HeapObject::FromAddress(addr); | 
|  1937       MemoryChunk::IncrementLiveBytesFromGC(object->address(), object->Size()); |  1938       MemoryChunk::IncrementLiveBytesFromGC(object->address(), object->Size()); | 
|  1938       marking_deque->PushBlack(object); |  1939       marking_deque->PushBlack(object); | 
|  1939       if (marking_deque->IsFull()) return; |  1940       if (marking_deque->IsFull()) return; | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
|  1958  |  1959  | 
|  1959   for (MarkBitCellIterator it(p); !it.Done(); it.Advance()) { |  1960   for (MarkBitCellIterator it(p); !it.Done(); it.Advance()) { | 
|  1960     Address cell_base = it.CurrentCellBase(); |  1961     Address cell_base = it.CurrentCellBase(); | 
|  1961     MarkBit::CellType* cell = it.CurrentCell(); |  1962     MarkBit::CellType* cell = it.CurrentCell(); | 
|  1962  |  1963  | 
|  1963     MarkBit::CellType current_cell = *cell; |  1964     MarkBit::CellType current_cell = *cell; | 
|  1964     if (current_cell == 0) continue; |  1965     if (current_cell == 0) continue; | 
|  1965  |  1966  | 
|  1966     int offset = 0; |  1967     int offset = 0; | 
|  1967     while (current_cell != 0) { |  1968     while (current_cell != 0) { | 
|  1968       int trailing_zeros = CompilerIntrinsics::CountTrailingZeros(current_cell); |  1969       int trailing_zeros = base::bits::CountTrailingZeros32(current_cell); | 
|  1969       current_cell >>= trailing_zeros; |  1970       current_cell >>= trailing_zeros; | 
|  1970       offset += trailing_zeros; |  1971       offset += trailing_zeros; | 
|  1971       Address address = cell_base + offset * kPointerSize; |  1972       Address address = cell_base + offset * kPointerSize; | 
|  1972       HeapObject* object = HeapObject::FromAddress(address); |  1973       HeapObject* object = HeapObject::FromAddress(address); | 
|  1973  |  1974  | 
|  1974       int size = object->Size(); |  1975       int size = object->Size(); | 
|  1975       survivors_size += size; |  1976       survivors_size += size; | 
|  1976  |  1977  | 
|  1977       Heap::UpdateAllocationSiteFeedback(object, Heap::RECORD_SCRATCHPAD_SLOT); |  1978       Heap::UpdateAllocationSiteFeedback(object, Heap::RECORD_SCRATCHPAD_SLOT); | 
|  1978  |  1979  | 
| (...skipping 2799 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4778   SlotsBuffer* buffer = *buffer_address; |  4779   SlotsBuffer* buffer = *buffer_address; | 
|  4779   while (buffer != NULL) { |  4780   while (buffer != NULL) { | 
|  4780     SlotsBuffer* next_buffer = buffer->next(); |  4781     SlotsBuffer* next_buffer = buffer->next(); | 
|  4781     DeallocateBuffer(buffer); |  4782     DeallocateBuffer(buffer); | 
|  4782     buffer = next_buffer; |  4783     buffer = next_buffer; | 
|  4783   } |  4784   } | 
|  4784   *buffer_address = NULL; |  4785   *buffer_address = NULL; | 
|  4785 } |  4786 } | 
|  4786 } |  4787 } | 
|  4787 }  // namespace v8::internal |  4788 }  // namespace v8::internal | 
| OLD | NEW |