aboutsummaryrefslogtreecommitdiff
path: root/cores/arduino/HardwareSerial_private.h
diff options
context:
space:
mode:
authorMatthijs Kooijman <matthijs@stdin.nl>2014-02-12 19:37:09 +0100
committerMatthijs Kooijman <matthijs@stdin.nl>2014-02-18 17:14:42 +0100
commit45b5aa3ebb2168e19441167ec4740f34389dae26 (patch)
treee4317fd911f8e1196d5d1b8c5bbf021bc95339a5 /cores/arduino/HardwareSerial_private.h
parentf4cd0ff0a4708b94744e08bbd72ce389797b93a8 (diff)
In HardwareSerial::_rx_complete_irq, don't use int for buffer index
This was already fixed for HardwareSerial.cpp in #1863, but there was one more case hidden in HardwareSerial_private.h. The index attributes have been uint8_t for a while, so there is no point in using int for local variables. This should allow the compiler to generate slightly more efficient code, but (at least on gcc 4.8.2) it also confuses the register allocator, causing this change to increase code size by 2 bytes instead due to extra push/pop instructions (but this will probably change in the future if the compiler improves).
Diffstat (limited to 'cores/arduino/HardwareSerial_private.h')
-rw-r--r--cores/arduino/HardwareSerial_private.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/cores/arduino/HardwareSerial_private.h b/cores/arduino/HardwareSerial_private.h
index 915d7a1..fa20e55 100644
--- a/cores/arduino/HardwareSerial_private.h
+++ b/cores/arduino/HardwareSerial_private.h
@@ -99,7 +99,7 @@ void HardwareSerial::_rx_complete_irq(void)
// No Parity error, read byte and store it in the buffer if there is
// room
unsigned char c = *_udr;
- int i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_BUFFER_SIZE;
+ uint8_t i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_BUFFER_SIZE;
// if we should be storing the received character into the location
// just before the tail (meaning that the head would advance to the