pike.git
/
src
/
code
/
amd64.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/code/amd64.c:3182:
mov_mem8_reg( sp_reg, -sizeof(struct svalue )+OFFSETOF(svalue,tu.t.type), P_REG_RAX); cmp_reg32_imm( P_REG_RAX, c ); je( &label_B ); /* not the same type. Fall back to use C-function (for code size mainly).. */ mov_reg_reg( P_REG_RBX, ARG1_REG ); mov_imm_reg( c, ARG2_REG ); add_reg_imm_reg( sp_reg, -sizeof(struct svalue), ARG3_REG ); amd64_call_c_function(assign_to_short_svalue); /* pop stack if needed. */
-
if( a == F_ASSIGN_PRIVATE_GLOBAL_AND_POP )
+
if( a == F_ASSIGN_PRIVATE_
TYPED_
GLOBAL_AND_POP )
{ amd64_add_sp(-1); /* this will either have assigned 0 or thrown an error. * if we assigned 0, it was because the argument evaluated as false. * However, that means that we might possibly have to free it here.. * * We do not even know that is has at least two references. */ amd64_free_svalue( sp_reg, 0 ); }
pike.git/src/code/amd64.c:3216:
jnz(&label_C); mov_reg_reg( P_REG_RBX, ARG1_REG ); mov_imm_reg( c, ARG2_REG ); amd64_call_c_function(really_free_short_svalue_ptr); } LABEL_C; /* old value is gone. Assign new value */ mov_mem_reg( sp_reg, -8, P_REG_RAX ); mov_reg_mem( P_REG_RAX, P_REG_RBX, 0 );
-
if( a == F_ASSIGN_PRIVATE_GLOBAL_AND_POP )
+
if( a == F_ASSIGN_PRIVATE_
TYPED_
GLOBAL_AND_POP )
amd64_add_sp( -1 ); else if( c >= MIN_REF_TYPE ) add_mem_imm( P_REG_RAX, OFFSETOF(pike_string,refs), 1 ); LABEL_E; } return; case F_PRIVATE_TYPED_GLOBAL: /* b -> off, c -> type */ ins_debug_instr_prologue(a-F_OFFSET, b, c); amd64_load_sp_reg();