Skip to content

Commit 4ff0928

Browse files
committed
Make read program functions inline
1 parent dbadd37 commit 4ff0928

2 files changed

Lines changed: 20 additions & 30 deletions

File tree

vm/vm.c

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -71,31 +71,6 @@ static inline bool vm_are_values_equal(vm_thread_t **thread, vm_value_t a, vm_va
7171
return result;
7272
}
7373

74-
int16_t vm_read_i16(vm_thread_t **thread, uint32_t *pc) {
75-
*pc += 2;
76-
return (int16_t)*((uint32_t*)((*thread)->state->program + *pc - 2));
77-
}
78-
79-
uint16_t vm_read_u16(vm_thread_t **thread, uint32_t *pc) {
80-
*pc += 2;
81-
return (uint16_t)*((uint32_t*)((*thread)->state->program + *pc - 2));
82-
}
83-
84-
int32_t vm_read_i32(vm_thread_t **thread, uint32_t *pc) {
85-
*pc += 4;
86-
return (int32_t)*((uint32_t*)((*thread)->state->program + *pc - 4));
87-
}
88-
89-
uint32_t vm_read_u32(vm_thread_t **thread, uint32_t *pc) {
90-
*pc += 4;
91-
return (uint32_t) *((uint32_t*) ((*thread)->state->program + *pc - 4));
92-
}
93-
94-
float vm_read_f32(vm_thread_t **thread, uint32_t *pc) {
95-
*pc += 4;
96-
return *((float*) ((*thread)->state->program + *pc - 4));
97-
}
98-
9974
// stack
10075
void vm_do_push(vm_thread_t **thread, vm_value_t value) {
10176
STK_OBJ(thread, (*thread)->sp++)= value;

vm/vm.h

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,10 @@ void vm_pop_frame(vm_thread_t **thread);
482482
* @param pc Program counter
483483
* @return a int16 value from program
484484
*/
485-
int16_t vm_read_i16(vm_thread_t **thread, uint32_t *pc);
485+
inline int16_t vm_read_i16(vm_thread_t **thread, uint32_t *pc) {
486+
*pc += 2;
487+
return (int16_t)*((uint32_t*)((*thread)->state->program + *pc - 2));
488+
}
486489

487490
/**
488491
* @fn uint16_t vm_read_u16(vm_thread_t **thread, uint32_t *pc)
@@ -492,7 +495,10 @@ int16_t vm_read_i16(vm_thread_t **thread, uint32_t *pc);
492495
* @param pc Program counter
493496
* @return a uint16 value from program
494497
*/
495-
uint16_t vm_read_u16(vm_thread_t **thread, uint32_t *pc);
498+
inline uint16_t vm_read_u16(vm_thread_t **thread, uint32_t *pc) {
499+
*pc += 2;
500+
return (uint16_t)*((uint32_t*)((*thread)->state->program + *pc - 2));
501+
}
496502

497503
/**
498504
* @fn int32_t vm_read_i32(vm_thread_t **thread, uint32_t *pc)
@@ -502,7 +508,10 @@ uint16_t vm_read_u16(vm_thread_t **thread, uint32_t *pc);
502508
* @param pc Program counter
503509
* @return a int32 value from program
504510
*/
505-
int32_t vm_read_i32(vm_thread_t **thread, uint32_t *pc);
511+
inline int32_t vm_read_i32(vm_thread_t **thread, uint32_t *pc) {
512+
*pc += 4;
513+
return (int32_t)*((uint32_t*)((*thread)->state->program + *pc - 4));
514+
}
506515

507516
/**
508517
* @fn uint32_t vm_read_u32(vm_thread_t **thread, uint32_t *pc)
@@ -512,7 +521,10 @@ int32_t vm_read_i32(vm_thread_t **thread, uint32_t *pc);
512521
* @param pc Program counter
513522
* @return a uint32 value from program
514523
*/
515-
uint32_t vm_read_u32(vm_thread_t **thread, uint32_t *pc);
524+
inline uint32_t vm_read_u32(vm_thread_t **thread, uint32_t *pc) {
525+
*pc += 4;
526+
return (uint32_t) *((uint32_t*) ((*thread)->state->program + *pc - 4));
527+
}
516528

517529
/**
518530
* @fn float vm_read_f32(vm_thread_t **thread, uint32_t *pc)
@@ -522,7 +534,10 @@ uint32_t vm_read_u32(vm_thread_t **thread, uint32_t *pc);
522534
* @param pc Program counter
523535
* @return a float value from program
524536
*/
525-
float vm_read_f32(vm_thread_t **thread, uint32_t *pc);
537+
inline float vm_read_f32(vm_thread_t **thread, uint32_t *pc) {
538+
*pc += 4;
539+
return *((float*) ((*thread)->state->program + *pc - 4));
540+
}
526541

527542
/////////// heap ////////
528543

0 commit comments

Comments
 (0)