pike.git/
src/
interpret_functions.h
Branch:
Tag:
Non-build tags
All tags
No tags
2014-08-14
2014-08-14 13:36:53 by Per Hedbor <ph@opera.com>
da045c58493a736f524db4a8e53ea2c39fde5d7f (
26
lines) (+
25
/-
1
)
[
Show
|
Annotate
]
Branch:
8.0
Added F_ASSIGN_PRIVATE_TYPED_GLOBAL
[_AND_POP]
.
This completes the suite of private global opcodes.
365:
print_return_value(); });
-
OPCODE2(F_PRIVATE_TYPED_GLOBAL, "global <private>", I_UPDATE_SP, {
+
OPCODE2(F_
ASSIGN_
PRIVATE_TYPED_GLOBAL
_AND_POP
, "
assign
global <private
,typed
>
and pop
", I_UPDATE_SP, {
+
/* lazy mode. */
+
LOCAL_VAR(union anything *tmp);
LOCAL_VAR(struct object *co);
-
+
co = Pike_fp->current_object;
+
if(!co->prog) /* note: generate an error. */
+
object_low_set_index(co,0,0);
+
tmp = (union anything *)(Pike_fp->current_object->storage + Pike_fp->context->storage_offset + arg1);
+
assign_to_short_svalue( tmp, arg2, Pike_sp-1 );
+
pop_stack();
+
});
+
+
OPCODE2(F_ASSIGN_PRIVATE_TYPED_GLOBAL, "assign global <private,typed>", 0, {
+
LOCAL_VAR(union anything *tmp);
+
LOCAL_VAR(struct object *co);
+
co = Pike_fp->current_object;
+
if(!co->prog) /* note: generate an error. */
+
object_low_set_index(co,0,0);
+
tmp = (union anything *)(Pike_fp->current_object->storage + Pike_fp->context->storage_offset + arg1);
+
assign_to_short_svalue( tmp, arg2, Pike_sp-1);
+
});
+
+
+
OPCODE2(F_PRIVATE_TYPED_GLOBAL, "global <private,typed>", I_UPDATE_SP, {
+
LOCAL_VAR(struct object *co);
LOCAL_VAR(void *ptr); co = Pike_fp->current_object;