History log of /art/runtime/base/bit_vector.h
Revision Date Author Comments
ffddfdf6fec0b9d98a692e27242eecb15af5ead2 03-Jun-2014 Tim Murray <timmurray@google.com> DO NOT MERGE

Merge ART from AOSP to lmp-preview-dev.

Change-Id: I0f578733a4b8756fd780d4a052ad69b746f687a9
014d77a2107fec8ba978a7428fd4d04e0bf8e168 02-Jun-2014 Jean Christophe Beyler <jean.christophe.beyler@intel.com> ART: BitVector not calculating number_of_bits correctly

The number_of_bits_ field has an unclear intent. Instead, using
storage_size_ * kWordBits when relevant.

Change-Id: I8c13be0d6643de37813fb154296d451f22c298c8
Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
920be0b27c72ceb3d40b5f2775cd1950f7c65b5f 23-May-2014 Vladimir Marko <vmarko@google.com> Fix style issue.

Change-Id: I2044e01c68265c33e7fa6057efa7b6c7ac41ada4
520f37bb5c34c5d86ad0091cb84a84c163a2fa9c 23-May-2014 Jean Christophe Beyler <jean.christophe.beyler@intel.com> ART: Added print indices back to BitVector Dumper

- Added an API to get the indices set instead of 001...0 format

Change-Id: I75841e41ca9b7ef77a0717715669dbe12506d6a1
Signed-Off-By: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
a5b8fde2d2bc3167078694fad417fddfe442a6fd 23-May-2014 Vladimir Marko <vmarko@google.com> Rewrite BitVector index iterator.

The BitVector::Iterator was not iterating over the bits but
rather over indexes of the set bits. Therefore, we rename it
to IndexIterator and provide a BitVector::Indexes() to get
a container-style interface with begin() and end() for range
based for loops.

Also, simplify InsertPhiNodes where the tmp_blocks isn't
needed since the phi_nodes and input_blocks cannot lose any
blocks in subsequent iterations, so we can do the Union()
directly in those bit vectors and we need to repeat the loop
only if we have new input_blocks, rather than on phi_nodes
change. And move the temporary bit vectors to scoped arena.

Change-Id: I6cb87a2f60724eeef67c6aaa34b36ed5acde6d43
622d9c31febd950255b36a48b47e1f630197c5fe 12-May-2014 Nicolas Geoffray <ngeoffray@google.com> Add loop recognition and CFG simplifications in new compiler.

We do three simplifications:
- Split critical edges, for code generation from SSA (new).
- Ensure one back edge per loop, to simplify loop recognition (new).
- Ensure only one pre header for a loop, to simplify SSA creation (existing).

Change-Id: I9bfccd4b236a00486a261078627b091c8a68be33
804d09372cc3d80d537da1489da4a45e0e19aa5d 02-May-2014 Nicolas Geoffray <ngeoffray@google.com> Build live-in, live-out and kill sets for each block.

This information will be used when computing live ranges of
instructions.

Change-Id: I345ee833c1ccb4a8e725c7976453f6d58d350d74
5afa08f95d43dd24fb4b3d7a08aa1ec23386ad54 16-Apr-2014 Jean Christophe Beyler <jean.christophe.beyler@intel.com> ART: Bitvector extensions for dumping and size handling

- Added dumping functions and the ensure size and clear function.
- Fixed a bug in union where if a bit is not set in the source, an buffer
overflow can occur later down.

Change-Id: Iff40529f3a8970a1ce2dd5c591f659f71924dea3
Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Signed-off-by: Yixin Shou <yixin.shou@intel.com>
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
Signed-off-by: Udayan Banerji <udayan.banerji@intel.com>
d3c5bebcb52a67cb06e7ab303eaf45f230c08b60 11-Apr-2014 Vladimir Marko <vmarko@google.com> Avoid allocating OatFile::OatClass on the heap.

Avoid allocating a BitVector for OatFile::OatClass::bitmap_
with kOatClassSomeCompiled methods. That makes the OatClass
copy-constructible as it doesn't own any memory. We use that
in OatFile::OatDexFile::GetOatClass() to return the result
by value thus avoiding one or two heap allocations per call.

Change-Id: Ic7098109028a5b49e39ef626f877de86e732ed18
ad0d30a2a2141aa0e9da9e97993ce20e4d8e056e 16-Jan-2014 Jean Christophe Beyler <jean.christophe.beyler@intel.com> Update to the BitVector Implementation

IsBitSet:
- If the index requested is above the size, return false.

ClearBit:
- If the index requested is above the size, ignore.

Added SameBitsSet:
- Check the bits set disregarding size and expandable.

Intersect and Union:
- removed the requirement of same size.
- handles case where the sizes are not the same.

Added Subtract between BitVectors.

SetInitialBits:
- Now requests expansion if above the bits available.
- Clears upper bits.

Added GetHighestBitSet.

ClearBit:
- If we clear above the size, it is fine, it has not been set yet.

Copy:
- Supposes it is well allocated.
- It used to just copy what was available in destination without checking source's size.
- Now actually allocate the destination to make sure it holds enough space.
- Set parameter to const.

General:
- Moved sizeof(uint32_t) to sizeof(*storage_) for future maintenance.

Change-Id: Iebb214632482c46807deca957f5b6dc892a61a84
ba150c37d582eeeb8c11ba5245edc281cf31793c 28-Aug-2013 Brian Carlstrom <bdc@google.com> Omit OatMethodOffsets for classes without compiled code

Change-Id: If0d290f4aebc778ff12d8fed017c270ad2ac3220