Allow the compiler to optimize member
function access.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
- init_piece_attacks_fn();
init_mersenne();
init_direction_table();
init_bitboards();
init_mersenne();
init_direction_table();
init_bitboards();
int generate_piece_moves(PieceType piece, const Position &pos, MoveStack *mlist,
Color side, Bitboard target) {
int generate_piece_moves(PieceType piece, const Position &pos, MoveStack *mlist,
Color side, Bitboard target) {
+
+ const Piece_attacks_fn mem_fn = piece_attacks_fn[piece];
Square from, to;
Bitboard b;
Square from, to;
Bitboard b;
- Piece_attacks_fn mem_fn = piece_attacks_fn[piece];
int n = 0;
for (int i = 0; i < pos.piece_count(side, piece); i++)
int n = 0;
for (int i = 0; i < pos.piece_count(side, piece); i++)
Value Position::MgPieceSquareTable[16][64];
Value Position::EgPieceSquareTable[16][64];
Value Position::MgPieceSquareTable[16][64];
Value Position::EgPieceSquareTable[16][64];
-Piece_attacks_fn piece_attacks_fn[7];
+const Piece_attacks_fn piece_attacks_fn[] =
+ { 0, 0,
+ &Position::knight_attacks,
+ &Position::bishop_attacks,
+ &Position::rook_attacks,
+ &Position::queen_attacks,
+ &Position::king_attacks };
-void init_piece_attacks_fn() {
-
- piece_attacks_fn[KNIGHT] = &Position::knight_attacks;
- piece_attacks_fn[BISHOP] = &Position::bishop_attacks;
- piece_attacks_fn[ROOK] = &Position::rook_attacks;
- piece_attacks_fn[QUEEN] = &Position::queen_attacks;
- piece_attacks_fn[KING] = &Position::king_attacks;
-}
-
/// Constructors
Position::Position(const Position &pos) {
/// Constructors
Position::Position(const Position &pos) {
/// An array of member functions to dispatch attacks_square
typedef Bitboard (Position::* Piece_attacks_fn)(Square s) const;
/// An array of member functions to dispatch attacks_square
typedef Bitboard (Position::* Piece_attacks_fn)(Square s) const;
-extern Piece_attacks_fn piece_attacks_fn[7];
-extern void init_piece_attacks_fn();
+extern const Piece_attacks_fn piece_attacks_fn[];
////
//// Inline functions
////
//// Inline functions