Skip to content

Commit fa9b974

Browse files
authored
Merge pull request #10264 from tannewt/gc_selective_collect
Add selective collect to memory allocations
2 parents e115623 + e7475ee commit fa9b974

File tree

84 files changed

+464
-272
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+464
-272
lines changed

ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.mk

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ EXTERNAL_FLASH_DEVICES = "GD25Q64C,W25Q64JVxQ"
1111
LONGINT_IMPL = MPZ
1212

1313
CIRCUITPY_AESIO = 0
14-
CIRCUITPY_JPEGIO = 0
15-
CIRCUITPY_SYNTHIO = 0
16-
CIRCUITPY_TILEPALETTEMAPPER = 0
14+
CIRCUITPY_CODEOP = 0
15+
CIRCUITPY_EPAPERDISPLAY = 0
16+
CIRCUITPY_FLOPPYIO = 0
17+
CIRCUITPY_I2CDISPLAYBUS = 0
18+
CIRCUITPY_I2CTARGET = 0
19+
CIRCUITPY_PARALLELDISPLAYBUS = 0
20+
CIRCUITPY_RGBMATRIX = 0
21+
CIRCUITPY_SHARPDISPLAY = 0
22+
CIRCUITPY_SPITARGET = 0

ports/atmel-samd/boards/uartlogger2/mpconfigboard.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ CHIP_FAMILY = samd51
99
QSPI_FLASH_FILESYSTEM = 1
1010
EXTERNAL_FLASH_DEVICES = "W25Q32JVxQ"
1111
LONGINT_IMPL = MPZ
12+
13+
CIRCUITPY_I2CTARGET = 0
1214
CIRCUITPY_SPITARGET = 0
1315
CIRCUITPY_SYNTHIO = 0
1416
CIRCUITPY_JPEGIO = 0

ports/atmel-samd/common-hal/pulseio/PulseIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self,
130130
mp_raise_RuntimeError(MP_ERROR_TEXT("Internal resource(s) in use"));
131131
}
132132

133-
self->buffer = (uint16_t *)m_malloc(maxlen * sizeof(uint16_t));
133+
self->buffer = (uint16_t *)m_malloc_without_collect(maxlen * sizeof(uint16_t));
134134
if (self->buffer == NULL) {
135135
m_malloc_fail(maxlen * sizeof(uint16_t));
136136
}

ports/cxd56/common-hal/pulseio/PulseIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ static int pulsein_interrupt_handler(int irq, FAR void *context, FAR void *arg)
6565

6666
void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self,
6767
const mcu_pin_obj_t *pin, uint16_t maxlen, bool idle_state) {
68-
self->buffer = (uint16_t *)m_malloc(maxlen * sizeof(uint16_t));
68+
self->buffer = (uint16_t *)m_malloc_without_collect(maxlen * sizeof(uint16_t));
6969
if (self->buffer == NULL) {
7070
m_malloc_fail(maxlen * sizeof(uint16_t));
7171
}

ports/espressif/common-hal/_bleio/Characteristic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self,
7878
// If max_length is 0, then no storage is allocated.
7979
if (max_length > 0) {
8080
if (gc_alloc_possible()) {
81-
self->current_value = m_malloc(max_length);
81+
self->current_value = m_malloc_without_collect(max_length);
8282
} else {
8383
self->current_value = port_malloc(max_length, false);
8484
if (self->current_value == NULL) {

ports/espressif/common-hal/_bleio/CharacteristicBuffer.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ void common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffe
5454
bleio_characteristic_obj_t *characteristic,
5555
mp_float_t timeout,
5656
size_t buffer_size) {
57-
uint8_t *buffer = m_malloc(buffer_size);
57+
uint8_t *buffer = m_malloc_without_collect(buffer_size);
5858
_common_hal_bleio_characteristic_buffer_construct(self, characteristic, timeout, buffer, buffer_size, NULL, false);
5959
}
6060

ports/espressif/common-hal/_bleio/PacketBuffer.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,17 +240,17 @@ void common_hal_bleio_packet_buffer_construct(
240240
uint32_t *incoming_buffer = NULL;
241241
if (incoming) {
242242
incoming_buffer_size = buffer_size * (sizeof(uint16_t) + max_packet_size);
243-
incoming_buffer = m_malloc(incoming_buffer_size);
243+
incoming_buffer = m_malloc_without_collect(incoming_buffer_size);
244244
}
245245

246246
uint32_t *outgoing1 = NULL;
247247
uint32_t *outgoing2 = NULL;
248248
if (outgoing) {
249-
outgoing1 = m_malloc(max_packet_size);
249+
outgoing1 = m_malloc_without_collect(max_packet_size);
250250
// Only allocate the second buffer if we are doing writes with responses.
251251
// Without responses, we just write as quickly as we can.
252252
if (outgoing == CHAR_PROP_WRITE || outgoing == CHAR_PROP_INDICATE) {
253-
outgoing2 = m_malloc(max_packet_size);
253+
outgoing2 = m_malloc_without_collect(max_packet_size);
254254
}
255255
}
256256
_common_hal_bleio_packet_buffer_construct(self, characteristic,

ports/espressif/common-hal/_bleio/ble_events.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void ble_event_add_handler(ble_gap_event_fn *func, void *param) {
6464
}
6565

6666
// Add a new handler to the front of the list
67-
ble_event_handler_entry_t *handler = m_new(ble_event_handler_entry_t, 1);
67+
ble_event_handler_entry_t *handler = m_new_obj(ble_event_handler_entry_t);
6868
ble_event_add_handler_entry(handler, func, param);
6969
}
7070

ports/espressif/common-hal/audioio/AudioOut.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ static bool audioout_convert_u8s_u8m(
4242

4343
bool buffer_changed = false;
4444
if (in_buffer_size / 2 > *out_buffer_size) {
45-
*out_buffer = m_malloc(in_buffer_size / 2);
45+
*out_buffer = m_malloc_without_collect(in_buffer_size / 2);
4646
buffer_changed = true;
4747
}
4848
audiosample_convert_u8s_u8m(*out_buffer, (uint8_t *)in_buffer, in_buffer_size / 2);
@@ -58,7 +58,7 @@ static bool audioout_convert_u8m_u8s(
5858

5959
bool buffer_changed = false;
6060
if (in_buffer_size * 2 > *out_buffer_size) {
61-
*out_buffer = m_malloc(in_buffer_size * 2);
61+
*out_buffer = m_malloc_without_collect(in_buffer_size * 2);
6262
buffer_changed = true;
6363
}
6464
audiosample_convert_u8m_u8s(*out_buffer, (uint8_t *)in_buffer, in_buffer_size);
@@ -74,7 +74,7 @@ static bool audioout_convert_s8m_u8m(
7474

7575
bool buffer_changed = false;
7676
if (in_buffer_size > *out_buffer_size) {
77-
*out_buffer = m_malloc(in_buffer_size);
77+
*out_buffer = m_malloc_without_collect(in_buffer_size);
7878
buffer_changed = true;
7979
}
8080
audiosample_convert_s8m_u8m(*out_buffer, (int8_t *)in_buffer, in_buffer_size);
@@ -90,7 +90,7 @@ static bool audioout_convert_s8s_u8m(
9090

9191
bool buffer_changed = false;
9292
if (in_buffer_size / 2 > *out_buffer_size) {
93-
*out_buffer = m_malloc(in_buffer_size / 2);
93+
*out_buffer = m_malloc_without_collect(in_buffer_size / 2);
9494
buffer_changed = true;
9595
}
9696
audiosample_convert_s8s_u8m(*out_buffer, (int8_t *)in_buffer, in_buffer_size / 2);
@@ -106,7 +106,7 @@ static bool audioout_convert_s8m_u8s(
106106

107107
bool buffer_changed = false;
108108
if (in_buffer_size * 2 > *out_buffer_size) {
109-
*out_buffer = m_malloc(in_buffer_size * 2);
109+
*out_buffer = m_malloc_without_collect(in_buffer_size * 2);
110110
buffer_changed = true;
111111
}
112112
audiosample_convert_s8m_u8s(*out_buffer, (int8_t *)in_buffer, in_buffer_size);
@@ -122,7 +122,7 @@ static bool audioout_convert_s8s_u8s(
122122

123123
bool buffer_changed = false;
124124
if (in_buffer_size > *out_buffer_size) {
125-
*out_buffer = m_malloc(in_buffer_size);
125+
*out_buffer = m_malloc_without_collect(in_buffer_size);
126126
buffer_changed = true;
127127
}
128128
audiosample_convert_s8s_u8s(*out_buffer, (int8_t *)in_buffer, in_buffer_size);
@@ -138,7 +138,7 @@ static bool audioout_convert_u16m_u8m(
138138

139139
bool buffer_changed = false;
140140
if (in_buffer_size / 2 > *out_buffer_size) {
141-
*out_buffer = m_malloc(in_buffer_size / 2);
141+
*out_buffer = m_malloc_without_collect(in_buffer_size / 2);
142142
buffer_changed = true;
143143
}
144144
audiosample_convert_u16m_u8m(*out_buffer, (uint16_t *)in_buffer, in_buffer_size / 2);
@@ -154,7 +154,7 @@ static bool audioout_convert_u16m_u8s(
154154

155155
bool buffer_changed = false;
156156
if (in_buffer_size > *out_buffer_size) {
157-
*out_buffer = m_malloc(in_buffer_size);
157+
*out_buffer = m_malloc_without_collect(in_buffer_size);
158158
buffer_changed = true;
159159
}
160160
audiosample_convert_u16m_u8s(*out_buffer, (uint16_t *)in_buffer, in_buffer_size / 2);
@@ -186,7 +186,7 @@ static bool audioout_convert_u16s_u8s(
186186

187187
bool buffer_changed = false;
188188
if (in_buffer_size / 2 > *out_buffer_size) {
189-
*out_buffer = m_malloc(in_buffer_size / 2);
189+
*out_buffer = m_malloc_without_collect(in_buffer_size / 2);
190190
buffer_changed = true;
191191
}
192192
audiosample_convert_u16s_u8s(*out_buffer, (uint16_t *)in_buffer, in_buffer_size / 4);
@@ -202,7 +202,7 @@ static bool audioout_convert_s16m_u8m(
202202

203203
bool buffer_changed = false;
204204
if (in_buffer_size / 2 > *out_buffer_size) {
205-
*out_buffer = m_malloc(in_buffer_size / 2);
205+
*out_buffer = m_malloc_without_collect(in_buffer_size / 2);
206206
buffer_changed = true;
207207
}
208208
audiosample_convert_s16m_u8m(*out_buffer, (int16_t *)in_buffer, in_buffer_size / 2);
@@ -218,7 +218,7 @@ static bool audioout_convert_s16m_u8s(
218218

219219
bool buffer_changed = false;
220220
if (in_buffer_size > *out_buffer_size) {
221-
*out_buffer = m_malloc(in_buffer_size);
221+
*out_buffer = m_malloc_without_collect(in_buffer_size);
222222
buffer_changed = true;
223223
}
224224
audiosample_convert_s16m_u8s(*out_buffer, (int16_t *)in_buffer, in_buffer_size / 2);
@@ -250,7 +250,7 @@ static bool audioout_convert_s16s_u8s(
250250

251251
bool buffer_changed = false;
252252
if (in_buffer_size / 2 > *out_buffer_size) {
253-
*out_buffer = m_malloc(in_buffer_size / 2);
253+
*out_buffer = m_malloc_without_collect(in_buffer_size / 2);
254254
buffer_changed = true;
255255
}
256256
audiosample_convert_s16s_u8s(*out_buffer, (int16_t *)in_buffer, in_buffer_size / 4);

ports/espressif/common-hal/nvm/ByteArray.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static esp_err_t get_bytes(nvs_handle_t handle, uint8_t **buf_out) {
4646
*buf_out = NULL;
4747
return result;
4848
}
49-
buf = m_malloc(size); // this SHOULD be the same as
49+
buf = m_malloc_without_collect(size); // this SHOULD be the same as
5050
if (result == ESP_OK) {
5151
result = nvs_get_blob(handle, "data", buf, &size);
5252
} else {

ports/espressif/common-hal/pulseio/PulseIn.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,14 @@ static bool _done_callback(rmt_channel_handle_t rx_chan,
7474

7575
void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self, const mcu_pin_obj_t *pin,
7676
uint16_t maxlen, bool idle_state) {
77-
self->buffer = (uint16_t *)m_malloc(maxlen * sizeof(uint16_t));
77+
self->buffer = (uint16_t *)m_malloc_without_collect(maxlen * sizeof(uint16_t));
7878
if (self->buffer == NULL) {
7979
m_malloc_fail(maxlen * sizeof(uint16_t));
8080
}
8181
// We add one to the maxlen version to ensure that two symbols at lease are
8282
// captured because we may skip the first portion of a symbol.
8383
self->raw_symbols_size = MIN(64, maxlen / 2 + 1) * sizeof(rmt_symbol_word_t);
84-
self->raw_symbols = (rmt_symbol_word_t *)m_malloc(self->raw_symbols_size);
84+
self->raw_symbols = (rmt_symbol_word_t *)m_malloc_without_collect(self->raw_symbols_size);
8585
if (self->raw_symbols == NULL) {
8686
m_free(self->buffer);
8787
m_malloc_fail(self->raw_symbols_size);

ports/espressif/mpconfigport.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
#define MICROPY_NLR_SETJMP (1)
2323
#define CIRCUITPY_DEFAULT_STACK_SIZE 0x6000
2424

25+
// PSRAM can require more stack space for GC.
26+
#define MICROPY_ALLOC_GC_STACK_SIZE (128)
27+
2528
// Nearly all boards have this because it is used to enter the ROM bootloader.
2629
#ifndef CIRCUITPY_BOOT_BUTTON
2730
#if defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2)

ports/mimxrt10xx/common-hal/audiobusio/__init__.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ void port_i2s_initialize(i2s_t *self, int instance, sai_transceiver_t *config) {
309309
mp_raise_ValueError_varg(MP_ERROR_TEXT("Invalid %q"), MP_QSTR_I2SOut);
310310
}
311311
for (size_t i = 0; i < MP_ARRAY_SIZE(self->buffers); i++) {
312-
self->buffers[i] = m_malloc(AUDIO_BUFFER_FRAME_COUNT * sizeof(uint32_t));
312+
self->buffers[i] = m_malloc_without_collect(AUDIO_BUFFER_FRAME_COUNT * sizeof(uint32_t));
313313
}
314314
self->peripheral = peripheral;
315315
SAI_Init(self->peripheral);

ports/mimxrt10xx/common-hal/canio/CAN.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ void common_hal_canio_can_construct(canio_can_obj_t *self, const mcu_pin_obj_t *
228228
self->silent = silent;
229229
self->baudrate = baudrate;
230230

231-
self->data = m_new_obj(mimxrt10xx_flexcan_data_t);
231+
self->data = m_malloc_without_collect(sizeof(mimxrt10xx_flexcan_data_t));
232232
self->data->base = flexcan_bases[instance]; // 'flexcan_bases' start indexing from 1. (The first element is NULL)
233233
self->data->tx_state = 0;
234234

ports/mimxrt10xx/common-hal/canio/Listener.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,13 @@ mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self) {
123123
// allows the CPU to serve the next FIFO entry
124124
FLEXCAN_ClearMbStatusFlags(self->can->data->base, (uint32_t)kFLEXCAN_RxFifoFrameAvlFlag);
125125

126-
canio_message_obj_t *message = m_new_obj(canio_message_obj_t);
126+
const mp_obj_type_t *type;
127+
if (rx_frame.type == kFLEXCAN_FrameTypeRemote) {
128+
type = &canio_remote_transmission_request_type;
129+
} else {
130+
type = &canio_message_type;
131+
}
132+
canio_message_obj_t *message = mp_obj_malloc(canio_message_obj_t, type);
127133
memset(message, 0, sizeof(canio_message_obj_t));
128134

129135
if (rx_frame.format == kFLEXCAN_FrameFormatExtend) {
@@ -134,11 +140,6 @@ mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self) {
134140
message->id = rx_frame.id >> 18; // standard ids are left-aligned
135141
}
136142

137-
if (rx_frame.type == kFLEXCAN_FrameTypeRemote) {
138-
message->base.type = &canio_remote_transmission_request_type;
139-
} else {
140-
message->base.type = &canio_message_type;
141-
}
142143

143144
message->size = rx_frame.length;
144145

ports/nordic/common-hal/_bleio/Adapter.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t
524524
}
525525
self->scan_results = shared_module_bleio_new_scanresults(buffer_size, prefixes, prefix_length, minimum_rssi);
526526
size_t max_packet_size = extended ? BLE_GAP_SCAN_BUFFER_EXTENDED_MAX_SUPPORTED : BLE_GAP_SCAN_BUFFER_MAX;
527-
uint8_t *raw_data = m_malloc(sizeof(ble_data_t) + max_packet_size);
527+
uint8_t *raw_data = m_malloc_without_collect(sizeof(ble_data_t) + max_packet_size);
528528
ble_data_t *sd_data = (ble_data_t *)raw_data;
529529
self->scan_results->common_hal_data = sd_data;
530530
sd_data->len = max_packet_size;

ports/nordic/common-hal/_bleio/Characteristic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self,
8181
self->initial_value_len = initial_value_bufinfo->len;
8282
if (gc_alloc_possible()) {
8383
if (gc_nbytes(initial_value_bufinfo->buf) > 0) {
84-
uint8_t *initial_value = m_malloc(self->initial_value_len);
84+
uint8_t *initial_value = m_malloc_without_collect(self->initial_value_len);
8585
memcpy(initial_value, initial_value_bufinfo->buf, self->initial_value_len);
8686
self->initial_value = initial_value;
8787
} else {

ports/nordic/common-hal/_bleio/CharacteristicBuffer.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ void common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffe
9797
bleio_characteristic_obj_t *characteristic,
9898
mp_float_t timeout,
9999
size_t buffer_size) {
100-
uint8_t *buffer = m_malloc(buffer_size);
100+
uint8_t *buffer = m_malloc_without_collect(buffer_size);
101101
_common_hal_bleio_characteristic_buffer_construct(self, characteristic, timeout, buffer, buffer_size, NULL, false);
102102
}
103103

ports/nordic/common-hal/_bleio/PacketBuffer.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,14 @@ void common_hal_bleio_packet_buffer_construct(
278278
uint32_t *incoming_buffer = NULL;
279279
if (incoming) {
280280
incoming_buffer_size = buffer_size * (sizeof(uint16_t) + max_packet_size);
281-
incoming_buffer = m_malloc(incoming_buffer_size);
281+
incoming_buffer = m_malloc_without_collect(incoming_buffer_size);
282282
}
283283

284284
uint32_t *outgoing1 = NULL;
285285
uint32_t *outgoing2 = NULL;
286286
if (outgoing) {
287-
outgoing1 = m_malloc(max_packet_size);
288-
outgoing2 = m_malloc(max_packet_size);
287+
outgoing1 = m_malloc_without_collect(max_packet_size);
288+
outgoing2 = m_malloc_without_collect(max_packet_size);
289289
}
290290
_common_hal_bleio_packet_buffer_construct(self, characteristic,
291291
incoming_buffer, incoming_buffer_size,

ports/nordic/common-hal/audiobusio/I2SOut.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,8 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
269269
self->buffer_length = sample_rate * buffer_length_ms
270270
* self->bytes_per_sample * self->channel_count / 1000;
271271
self->buffer_length = (self->buffer_length + 3) & ~3;
272-
self->buffers[0] = m_malloc(self->buffer_length);
273-
self->buffers[1] = m_malloc(self->buffer_length);
272+
self->buffers[0] = m_malloc_without_collect(self->buffer_length);
273+
self->buffers[1] = m_malloc_without_collect(self->buffer_length);
274274

275275

276276
audiosample_reset_buffer(self->sample, false, 0);

ports/nordic/common-hal/audiopwmio/PWMAudioOut.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,13 +253,13 @@ void common_hal_audiopwmio_pwmaudioout_play(audiopwmio_pwmaudioout_obj_t *self,
253253

254254
size_t buffer_size = (size_t)max_buffer_length * 2 * sizeof(uint16_t);
255255

256-
self->buffers[0] = m_malloc(buffer_size);
256+
self->buffers[0] = m_malloc_without_collect(buffer_size);
257257
#if MICROPY_MALLOC_USES_ALLOCATED_SIZE
258258
self->buffer_size[0] = buffer_size;
259259
#endif
260260

261261
if (!self->single_buffer) {
262-
self->buffers[1] = m_malloc(buffer_size);
262+
self->buffers[1] = m_malloc_without_collect(buffer_size);
263263
#if MICROPY_MALLOC_USES_ALLOCATED_SIZE
264264
self->buffer_size[1] = buffer_size;
265265
#endif

ports/nordic/common-hal/busio/UART.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data,
325325
if (!nrfx_is_in_ram(data)) {
326326
// Allocate long strings on the heap.
327327
if (len > 128 && gc_alloc_possible()) {
328-
tx_buf = (uint8_t *)m_malloc(len);
328+
tx_buf = (uint8_t *)m_malloc_without_collect(len);
329329
} else {
330330
tx_buf = alloca(len);
331331
}

ports/nordic/common-hal/pulseio/PulseIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self, const mcu
9898
}
9999
_objs[idx] = self;
100100

101-
self->buffer = (uint16_t *)m_malloc(maxlen * sizeof(uint16_t));
101+
self->buffer = (uint16_t *)m_malloc_without_collect(maxlen * sizeof(uint16_t));
102102
if (self->buffer == NULL) {
103103
m_malloc_fail(maxlen * sizeof(uint16_t));
104104
}

ports/raspberrypi/boards/adafruit_fruit_jam/board.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
#define I2S_RESET_PIN_NUMBER 22
1818

19-
#if defined(DEFAULT_USB_HOST_5V_POWER)
2019
bool board_reset_pin_number(uint8_t pin_number) {
20+
#if defined(DEFAULT_USB_HOST_5V_POWER)
2121
if (pin_number == DEFAULT_USB_HOST_5V_POWER->number) {
2222
// doing this (rather than gpio_init) in this specific order ensures no
2323
// glitch if pin was already configured as a high output. gpio_init() temporarily
@@ -29,6 +29,7 @@ bool board_reset_pin_number(uint8_t pin_number) {
2929

3030
return true;
3131
}
32+
#endif
3233
// Set I2S out of reset.
3334
if (pin_number == I2S_RESET_PIN_NUMBER) {
3435
gpio_put(pin_number, 1);
@@ -39,7 +40,6 @@ bool board_reset_pin_number(uint8_t pin_number) {
3940
}
4041
return false;
4142
}
42-
#endif
4343

4444
void board_init(void) {
4545
// Reset the DAC to put it in a known state.

0 commit comments

Comments
 (0)