diff options
| author | Wojciech Siewierski <wojciech.siewierski@onet.pl> | 2016-04-13 22:24:42 +0200 |
|---|---|---|
| committer | Wojciech Siewierski <wojciech.siewierski@onet.pl> | 2016-04-13 22:24:42 +0200 |
| commit | 02a3d77940d9b9dcf3af3e8ca9672145155fbfe6 (patch) | |
| tree | f0e901f12bbc079208fc7629337ad639e8c82f42 /tmk_core/common/action_layer.c | |
| parent | a0194d7e5ff2f3d242a5c6508abf81b4ddf67a3e (diff) | |
| download | qmk_firmware-02a3d77940d9b9dcf3af3e8ca9672145155fbfe6.tar.gz qmk_firmware-02a3d77940d9b9dcf3af3e8ca9672145155fbfe6.zip | |
Optimize source_layers_cache for the cache memory
Swapping the array indices should increase the locality of the memory access.
Diffstat (limited to 'tmk_core/common/action_layer.c')
| -rw-r--r-- | tmk_core/common/action_layer.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c index fc721a732..e817c0d51 100644 --- a/tmk_core/common/action_layer.c +++ b/tmk_core/common/action_layer.c | |||
| @@ -111,7 +111,7 @@ void layer_debug(void) | |||
| 111 | #endif | 111 | #endif |
| 112 | 112 | ||
| 113 | #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) | 113 | #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) |
| 114 | uint8_t source_layers_cache[MAX_LAYER_BITS][(MATRIX_ROWS * MATRIX_COLS + 7) / 8] = {0}; | 114 | uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {0}; |
| 115 | 115 | ||
| 116 | void update_source_layers_cache(keypos_t key, uint8_t layer) | 116 | void update_source_layers_cache(keypos_t key, uint8_t layer) |
| 117 | { | 117 | { |
| @@ -120,9 +120,9 @@ void update_source_layers_cache(keypos_t key, uint8_t layer) | |||
| 120 | const uint8_t storage_bit = key_number % 8; | 120 | const uint8_t storage_bit = key_number % 8; |
| 121 | 121 | ||
| 122 | for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { | 122 | for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { |
| 123 | source_layers_cache[bit_number][storage_row] ^= | 123 | source_layers_cache[storage_row][bit_number] ^= |
| 124 | (-((layer & (1U << bit_number)) != 0) | 124 | (-((layer & (1U << bit_number)) != 0) |
| 125 | ^ source_layers_cache[bit_number][storage_row]) | 125 | ^ source_layers_cache[storage_row][bit_number]) |
| 126 | & (1U << storage_bit); | 126 | & (1U << storage_bit); |
| 127 | } | 127 | } |
| 128 | } | 128 | } |
| @@ -136,7 +136,7 @@ uint8_t read_source_layers_cache(keypos_t key) | |||
| 136 | 136 | ||
| 137 | for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { | 137 | for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { |
| 138 | layer |= | 138 | layer |= |
| 139 | ((source_layers_cache[bit_number][storage_row] | 139 | ((source_layers_cache[storage_row][bit_number] |
| 140 | & (1U << storage_bit)) != 0) | 140 | & (1U << storage_bit)) != 0) |
| 141 | << bit_number; | 141 | << bit_number; |
| 142 | } | 142 | } |
