pike.git/
src/
code/
amd64.c
Branch:
Tag:
Non-build tags
All tags
No tags
2015-09-03
2015-09-03 22:30:12 by Per Hedbor <ph@opera.com>
7d577f4def3287892c63e0b526dd955f5b770ea7 (
16
lines) (+
7
/-
9
)
[
Show
|
Annotate
]
Branch:
8.1
[amd64]
Bypass the string table and push the string directly
1526:
static void amd64_push_string(int strno, int subtype) {
-
amd64
_
load
_
fp
_
reg()
;
+
struct pike
_
string *str = Pike
_
compiler->new
_
program->strings[strno]
;
amd64_load_sp_reg();
-
mov_mem_reg(fp_reg, OFFSETOF(pike_frame, context), P_REG_RAX);
-
mov_mem_reg(P_REG_RAX, OFFSETOF(inherit, prog), P_REG_RAX);
-
mov_mem_reg(P_REG_RAX, OFFSETOF(program, strings), P_REG_RAX);
-
mov_mem_reg(P_REG_RAX, strno * sizeof(struct pike_string *), P_REG_RAX);
-
mov_imm_mem((subtype<<16) | PIKE_T_STRING, sp_reg,
-
OFFSETOF(svalue, tu.t.type));
-
mov_reg_mem(P_REG_RAX, sp_reg,(INT32)OFFSETOF(svalue, u.string));
-
add_imm_mem( 1, P_REG_RAX, OFFSETOF(pike_string, refs));
+
-
+
mov_imm_reg((INT64)str,P_REG_RAX);
+
mov_imm_mem((subtype<<16) | PIKE_T_STRING, sp_reg, SVAL(0).type);
+
mov_reg_mem(P_REG_RAX,sp_reg,SVAL(0).value);
+
add_imm_mem(1, P_REG_RAX,OFFSETOF(pike_string, refs));
+
amd64_add_sp(1); }