Skip to content

Instantly share code, notes, and snippets.

View mgiuca's full-sized avatar

Matt Giuca mgiuca

View GitHub Profile
@mgiuca
mgiuca / stringpiecefindtest-fixed.s
Created March 21, 2017 23:56
Assembly code for iteration over StringPiece; with base::internal::find changed to take arguments by value
# Source:
# void StringPieceFindTestVal(const std::vector<base::StringPiece>& vector) {
# for (base::StringPiece piece : vector)
# printf("%zu\n", piece.find('x'));
# }
#
# void StringPieceFindTestRef(const std::vector<base::StringPiece>& vector) {
# for (const base::StringPiece& piece : vector)
# printf("%zu\n", piece.find('x'));
# }
@mgiuca
mgiuca / stringpiecefindtest-ref.s
Last active March 21, 2017 08:02
Assembly code for iteration over StringPiece (by-reference)
# Source:
# void StringPieceFindTestRef(const std::vector<base::StringPiece>& vector) {
# for (const base::StringPiece& piece : vector)
# printf("%zu\n", piece.find('x'));
# }
#
# Compiler: clang++ Linux 64-bit
# BB#0: # %entry
pushq %rbp
@mgiuca
mgiuca / stringpiecefindtest-val.s
Created March 21, 2017 07:39
Assembly code for iteration over StringPiece (by-value)
# Source:
# void StringPieceFindTestVal(const std::vector<base::StringPiece>& vector) {
# for (base::StringPiece piece : vector)
# printf("%zu\n", piece.find('x'));
# }
#
# Compiler: clang++ Linux 64-bit
# BB#0: # %entry
pushq %rbp
@mgiuca
mgiuca / stringpieceitertest.s
Created March 21, 2017 07:31
Assembly code for iteration over StringPiece (by-value vs by-reference)
# Source:
# void StringPieceIterTestVal(const std::vector<base::StringPiece>& vector) {
# for (base::StringPiece piece : vector)
# std::fwrite(piece.data(), piece.size(), 1, stdout);
# }
#
# void StringPieceIterTestRef(const std::vector<base::StringPiece>& vector) {
# for (const base::StringPiece& piece : vector)
# std::fwrite(piece.data(), piece.size(), 1, stdout);
# }