Skip to content

Commit e9a23c4

Browse files
committed
Refactor jrt buffer operations
`jrt_read_from_buffer_by_offset` is not used anywhere in the code while `jrt_write_to_buffer_by_offset` is only used by snapshot saving functions. Thus, this patch removes the read variant completely and moves the write variant as a static function to jerry.c. This empties out jrt.c, thus deleting. JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
1 parent 6974424 commit e9a23c4

3 files changed

Lines changed: 43 additions & 91 deletions

File tree

jerry-core/jerry.c

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1747,6 +1747,34 @@ typedef struct
17471747
size_t snapshot_buffer_write_offset;
17481748
} snapshot_globals_t;
17491749

1750+
/**
1751+
* Write data into the specified buffer.
1752+
*
1753+
* Note:
1754+
* Offset is in-out and is incremented if the write operation completes successfully.
1755+
*
1756+
* @return true, if write was successful, i.e. offset + data_size doesn't exceed buffer size,
1757+
* false - otherwise.
1758+
*/
1759+
static inline bool __attr_always_inline___
1760+
snapshot_write_to_buffer_by_offset (uint8_t *buffer_p, /**< buffer */
1761+
size_t buffer_size, /**< size of buffer */
1762+
size_t *in_out_buffer_offset_p, /**< [in,out] offset to write to
1763+
* incremented with data_size */
1764+
const void *data_p, /**< data */
1765+
size_t data_size) /**< size of the writable data */
1766+
{
1767+
if (*in_out_buffer_offset_p + data_size > buffer_size)
1768+
{
1769+
return false;
1770+
}
1771+
1772+
memcpy (buffer_p + *in_out_buffer_offset_p, data_p, data_size);
1773+
*in_out_buffer_offset_p += data_size;
1774+
1775+
return true;
1776+
} /* snapshot_write_to_buffer_by_offset */
1777+
17501778
/**
17511779
* Snapshot callback for byte codes.
17521780
*
@@ -1798,11 +1826,11 @@ snapshot_add_compiled_code (ecma_compiled_code_t *compiled_code_p, /**< compiled
17981826

17991827
pattern_size = buffer_size;
18001828

1801-
if (!jrt_write_to_buffer_by_offset (snapshot_buffer_p,
1802-
snapshot_buffer_size,
1803-
&globals_p->snapshot_buffer_write_offset,
1804-
buffer_p,
1805-
buffer_size))
1829+
if (!snapshot_write_to_buffer_by_offset (snapshot_buffer_p,
1830+
snapshot_buffer_size,
1831+
&globals_p->snapshot_buffer_write_offset,
1832+
buffer_p,
1833+
buffer_size))
18061834
{
18071835
globals_p->snapshot_error_occured = true;
18081836
}
@@ -1826,11 +1854,11 @@ snapshot_add_compiled_code (ecma_compiled_code_t *compiled_code_p, /**< compiled
18261854
return start_offset;
18271855
}
18281856

1829-
if (!jrt_write_to_buffer_by_offset (snapshot_buffer_p,
1830-
snapshot_buffer_size,
1831-
&globals_p->snapshot_buffer_write_offset,
1832-
compiled_code_p,
1833-
((size_t) compiled_code_p->size) << JMEM_ALIGNMENT_LOG))
1857+
if (!snapshot_write_to_buffer_by_offset (snapshot_buffer_p,
1858+
snapshot_buffer_size,
1859+
&globals_p->snapshot_buffer_write_offset,
1860+
compiled_code_p,
1861+
((size_t) compiled_code_p->size) << JMEM_ALIGNMENT_LOG))
18341862
{
18351863
globals_p->snapshot_error_occured = true;
18361864
return 0;
@@ -2049,11 +2077,11 @@ jerry_parse_and_save_snapshot (const jerry_char_t *source_p, /**< script source
20492077

20502078
size_t header_offset = 0;
20512079

2052-
jrt_write_to_buffer_by_offset (buffer_p,
2053-
buffer_size,
2054-
&header_offset,
2055-
&header,
2056-
sizeof (header));
2080+
snapshot_write_to_buffer_by_offset (buffer_p,
2081+
buffer_size,
2082+
&header_offset,
2083+
&header,
2084+
sizeof (header));
20572085

20582086
if (lit_map_p != NULL)
20592087
{

jerry-core/jrt/jrt.c

Lines changed: 0 additions & 73 deletions
This file was deleted.

jerry-core/jrt/jrt.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,4 @@ extern void jerry_ref_unused_variables (void *, ...);
160160
#define JERRY_MIN(v1, v2) (((v1) < (v2)) ? (v1) : (v2))
161161
#define JERRY_MAX(v1, v2) (((v1) < (v2)) ? (v2) : (v1))
162162

163-
extern bool jrt_read_from_buffer_by_offset (const uint8_t *, size_t, size_t *, void *, size_t);
164-
extern bool jrt_write_to_buffer_by_offset (uint8_t *, size_t, size_t *, const void *, size_t);
165-
166163
#endif /* !JRT_H */

0 commit comments

Comments
 (0)