Displaying 18 results from an estimated 18 matches for "swfdecasstack".
2007 Mar 29
0
Branch 'as' - 9 commits - configure.ac doc/swfdec-sections.txt libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_stack.c
...#define swfdec_as_stack_peek(stack,n) (&(stack)->cur[-(gssize)(n)])
#define swfdec_as_stack_pop(stack) (--(stack)->cur)
-#define swfdec_as_stack_push(stack,val) (*(stack)->cur++)
+#define swfdec_as_stack_push(stack,val) (*(stack)->cur++ = *(val))
void swfdec_as_stack_mark (SwfdecAsStack * stack);
void swfdec_as_stack_ensure_size (SwfdecAsStack * stack,
diff-tree b65aacea6f0606a3402f16fb2af36199e587ded0 (from 147645d82919dbf900f8f7aafec62282550215ce)
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Mar 29 13:33:06 2007 +0200
add a huge enum for all actions
diff --gi...
2007 Apr 16
0
Branch 'as' - 3 commits - libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h
...b/libswfdec/swfdec_as_interpret.c
@@ -1790,40 +1790,60 @@ swfdec_action_extends (SwfdecAsContext *
return JS_FALSE;
return JS_TRUE;
}
+#endif
+
+static gboolean
+swfdec_action_do_enumerate (SwfdecAsObject *object, const SwfdecAsValue *val,
+ SwfdecAsVariable *var, gpointer stackp)
+{
+ SwfdecAsStack *stack = stackp;
+
+ if (var->flags | SWFDEC_AS_VARIABLE_DONT_ENUM)
+ return TRUE;
+ swfdec_as_stack_ensure_left (stack, 1);
+ *swfdec_as_stack_push (stack) = *val;
+ return TRUE;
+}
+
+static void
+swfdec_action_enumerate (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)...
2007 Apr 04
0
Branch 'as' - 9 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_stack.c libswfdec/swfdec_as_stack.h
...+ frame->constant_pool_buffer = swfdec_buffer_new_subbuffer (frame->script->buffer,
+ data - frame->script->buffer->data, len);
}
static void
swfdec_action_push (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
{
- /* FIXME: supply API for this */
+ SwfdecAsStack *stack = cx->frame->stack;
SwfdecBits bits;
- guint stackspace = cx->fp->spend - cx->fp->sp;
swfdec_bits_init_data (&bits, data, len);
- while (swfdec_bits_left (&bits) && stackspace-- > 0) {
+ while (swfdec_bits_left (&bits)) {
guint type =...
2007 Apr 12
0
Branch 'as' - 14 commits - libswfdec-gtk/swfdec_playback_alsa.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c libswfdec/swfdec_as_function.h
...LL
};
diff --git a/libswfdec/swfdec_as_types.h b/libswfdec/swfdec_as_types.h
index b20b2e6..96fe3b4 100644
--- a/libswfdec/swfdec_as_types.h
+++ b/libswfdec/swfdec_as_types.h
@@ -42,7 +42,7 @@ typedef struct _SwfdecAsFunction SwfdecA
typedef struct _SwfdecAsObject SwfdecAsObject;
typedef struct _SwfdecAsStack SwfdecAsStack;
typedef struct _SwfdecAsValue SwfdecAsValue;
-typedef void (* SwfdecAsNative) (SwfdecAsContext *context, SwfdecAsObject *thisp, guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval);
+typedef void (* SwfdecAsNative) (SwfdecAsObject *thisp, guint argc, SwfdecAsValue *argv, SwfdecAs...
2007 Jul 02
0
Branch 'as' - 24 commits - configure.ac doc/Makefile.am doc/swfdec-sections.txt libswfdec/Makefile.am libswfdec/swfdec_amf.c libswfdec/swfdec_as_array.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c
...variable);
return TRUE;
}
diff --git a/libswfdec/swfdec_as_stack.c b/libswfdec/swfdec_as_stack.c
index 0354b49..2b9f678 100644
--- a/libswfdec/swfdec_as_stack.c
+++ b/libswfdec/swfdec_as_stack.c
@@ -88,7 +88,7 @@ swfdec_as_stack_ensure_size (SwfdecAsSta
}
void
-swfdec_as_stack_ensure_left (SwfdecAsStack *stack, guint n_elements)
+swfdec_as_stack_ensure_free (SwfdecAsStack *stack, guint n_elements)
{
g_return_if_fail (stack != NULL);
diff --git a/libswfdec/swfdec_as_stack.h b/libswfdec/swfdec_as_stack.h
index a415406..ec25a71 100644
--- a/libswfdec/swfdec_as_stack.h
+++ b/libswfdec/swfdec_as_...
2007 Jun 20
1
Branch 'as' - 2 commits - libswfdec/swfdec_as_interpret.c
libswfdec/swfdec_as_interpret.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
New commits:
diff-tree 9c5cb7cb9f6278896bc8a1e7cd7fb541b079c8de (from 1e19719b58b5cfcb800c81a5f5432c3ad662dbbc)
Author: Benjamin Otte <otte at gnome.org>
Date: Wed Jun 20 20:58:52 2007 +0200
the modulo arguments were mixed
diff --git a/libswfdec/swfdec_as_interpret.c
2007 Jul 12
0
15 commits - doc/Makefile.am doc/swfdec-docs.sgml doc/swfdec-sections.txt INSTALL libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_interpret.h libswfdec/swfdec_as_object.h
...aee8f21 100644
--- a/player/swfdec_debug_stack.c
+++ b/player/swfdec_debug_stack.c
@@ -71,15 +71,11 @@ swfdec_debug_stack_set_model (SwfdecDebu
context= SWFDEC_AS_CONTEXT (debug->manager->player);
frame = context->frame;
if (frame) {
- SwfdecAsValue *val = context->cur;
- SwfdecAsStack *stack = context->stack;
+ SwfdecAsStackIterator siter;
+ SwfdecAsValue *val;
guint i = 0;
- while (val != frame->stack_begin) {
- if (val == &stack->elements[0]) {
- stack = stack->next;
- val = &stack->elements[stack->used_elements];
- }
- va...
2007 May 21
0
Branch 'as' - libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c libswfdec/swfdec_as_function.h libswfdec/swfdec_as_native_function.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_script_function.c
...gt;argv[i]);
}
@@ -102,18 +102,15 @@ swfdec_as_frame_init (SwfdecAsFrame *fra
}
SwfdecAsFrame *
-swfdec_as_frame_new (SwfdecAsObject *thisp, SwfdecScript *script)
+swfdec_as_frame_new (SwfdecAsContext *context, SwfdecScript *script)
{
- SwfdecAsContext *context;
SwfdecAsFrame *frame;
SwfdecAsStack *stack;
gsize size;
- g_return_val_if_fail (SWFDEC_IS_AS_OBJECT (thisp), NULL);
- g_return_val_if_fail (thisp->properties, NULL);
+ g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), NULL);
g_return_val_if_fail (script != NULL, NULL);
- context = thisp->context;
stack =...
2007 Mar 29
0
Branch 'as' - 9 commits - libswfdec-gtk/swfdec_playback_alsa.c libswfdec/js libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c
...wfdec_as_stack_get_size (context->frame->stack);
+ n_args = MIN (available_args, n_args);
+ } else {
+ n_args = 0;
+ }
+ /* now do different things depending on if we're a native function or not */
+ if (function->native) {
+ if (n_args < function->min_args) {
+ SwfdecAsStack *stack = context->frame->stack;
+ if (n_args == 0) {
+ SwfdecAsValue value = { SWFDEC_TYPE_AS_UNDEFINED, };
+ swfdec_as_stack_ensure_size (stack, 1);
+ swfdec_as_stack_push (stack, &value);
+ } else {
+ stack->cur -= (n_args - 1);
+ SWFDEC_AS_VALUE_SET_UNDEFINED (swfdec_as_st...
2007 Jul 30
0
10 commits - libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_super.c libswfdec/swfdec_video_movie_as.c test/trace
...(SwfdecAsFram
void
swfdec_as_frame_preload (SwfdecAsFrame *frame)
{
- SwfdecAsObject *object;
+ SwfdecAsObject *object, *args;
guint i, current_reg = 1;
SwfdecScript *script;
- SwfdecAsValue val;
+ SwfdecAsValue val = { 0, };
const SwfdecAsValue *cur;
SwfdecAsContext *context;
SwfdecAsStackIterator iter;
@@ -561,17 +561,30 @@ swfdec_as_frame_preload (SwfdecAsFrame *
if (frame->script == NULL)
return;
-
+ /* setup */
object = SWFDEC_AS_OBJECT (frame);
context = object->context;
script = frame->script;
- if (script->flags & SWFDEC_SCRIPT_PRELOAD_THIS...
2007 Jul 13
0
3 commits - doc/Makefile.am doc/swfdec-docs.sgml doc/swfdec-sections.txt libswfdec/Makefile.am libswfdec/swfdec_as_array.c libswfdec/swfdec_as_boolean.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c
...variables on
+ * it. These are local variables inside the executing function. So you can use
+ * functions such as swfdec_as_object_get_variable() to inspect them.
+ */
+
+/**
+ * SwfdecAsFrame:
+ *
+ * the object used to represent an executing function.
+ */
+
/*** STACK ITERATOR ***/
+/**
+ * SwfdecAsStackIterator:
+ *
+ * This is a struct used to walk the stack of a frame. It is supposed to be
+ * allocated on the stack. All of its members are private.
+ */
+
SwfdecAsValue *
swfdec_as_stack_iterator_init_arguments (SwfdecAsStackIterator *iter, SwfdecAsFrame *frame)
{
@@ -57,6 +87,23 @@ swfdec_as...
2007 Mar 28
0
Branch 'as' - 3 commits - libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h libswfdec/swfdec_as_types.c
...t * scope; /* scope object coming after this */
+ SwfdecAsObject * var_object; /* new variables go here */
+ SwfdecAsValue * registers; /* the registers */
+ guint n_registers; /* number of allocated registers */
+ SwfdecConstantPool * constant_pool; /* constant pool currently in use */
+ //SwfdecAsStack * stack; /* variables on the stack */
+};
+
+struct _SwfdecAsFrameClass {
+ SwfdecAsObjectClass object_class;
+};
+
+GType swfdec_as_frame_get_type (void);
+
+SwfdecAsFrame * swfdec_as_frame_new (SwfdecAsContext * context,
+ SwfdecAsObject * thisp,
+ SwfdecScript * script);
+
+...
2007 May 23
0
Branch 'as' - 7 commits - libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h libswfdec/swfdec_as_strings.c
...terpret.c
@@ -1192,35 +1192,31 @@ fail:
fp->sp[-1] = JSVAL_VOID;
return JS_TRUE;
}
+#endif
static void
swfdec_action_init_object (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
{
- JSStackFrame *fp = cx->fp;
- JSObject *object;
- guint n_args;
- gulong i;
+ SwfdecAsStack *stack = cx->frame->stack;
+ SwfdecAsObject *object;
+ guint i, n_args;
- if (!JS_ValueToECMAUint32 (cx, fp->sp[-1], &n_args))
- return JS_FALSE;
- if (!swfdec_script_ensure_stack (cx, 2 * n_args + 1))
- return JS_FALSE;
+ n_args = swfdec_as_value_to_integer (cx, swfdec_as...
2007 Aug 16
0
Branch 'vivi' - 18 commits - configure.ac doc/swfdec-sections.txt libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_types.h libswfdec/swfdec_player.c vivified/core vivified/ui
...if (frame->argc == 0) {
+ iter->current = NULL;
+ return NULL;
+ }
+ context = SWFDEC_AS_OBJECT (frame)->context;
if (frame->argv) {
iter->stack = NULL;
iter->current = (SwfdecAsValue *) frame->argv;
} else {
- iter->stack = context->stack;
+ SwfdecAsStack *stack = context->stack;
+ SwfdecAsValue *end;
iter->current = frame->stack_begin - 1;
+ end = context->cur;
+ while (iter->current < stack->elements ||
+ iter->current > end) {
+ stack = stack->next;
+ end = &stack->elements[stack->us...
2007 Jun 12
0
Branch 'as' - 3 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_math.c libswfdec/swfdec_as_native_function.c libswfdec/swfdec_as_number.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_string.c
...EMPTY);
diff --git a/libswfdec/swfdec_as_types.h b/libswfdec/swfdec_as_types.h
index 67b87b5..0dc580f 100644
--- a/libswfdec/swfdec_as_types.h
+++ b/libswfdec/swfdec_as_types.h
@@ -45,7 +45,11 @@ typedef struct _SwfdecAsObject SwfdecAsO
typedef struct _SwfdecAsScope SwfdecAsScope;
typedef struct _SwfdecAsStack SwfdecAsStack;
typedef struct _SwfdecAsValue SwfdecAsValue;
-typedef void (* SwfdecAsNative) (SwfdecAsObject *thisp, guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval);
+typedef void (* SwfdecAsNative) (SwfdecAsContext * context,
+ SwfdecAsObject * thisp,
+ guint argc,
+ Swfdec...
2007 Apr 12
0
Branch 'as' - 15 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c libswfdec/swfdec_as_function.h libswfdec/swfdec_as_interpret.c
...fdecAsFunctio
} else {
n_args = 0;
}
+ SWFDEC_AS_VALUE_SET_UNDEFINED (return_value);
/* now do different things depending on if we're a native function or not */
if (function->native) {
- SwfdecAsValue retval = { 0, };
if (n_args < function->min_args) {
SwfdecAsStack *stack = context->frame->stack;
if (n_args == 0) {
@@ -139,10 +142,11 @@ swfdec_as_function_call (SwfdecAsFunctio
frame = swfdec_as_frame_new_native (thisp);
g_assert (function->name);
frame->function_name = function->name;
- function->native (context, thi...
2007 Apr 04
0
Branch 'as' - 17 commits - configure.ac doc/Makefile.am doc/swfdec-docs.sgml doc/swfdec-sections.txt doc/swfdec.types libswfdec-gtk/Makefile.am libswfdec-gtk/swfdec-gtk.h libswfdec-gtk/swfdec_gtk_loader.c libswfdec-gtk/swfdec_gtk_loader.h
...+34,14 @@ G_BEGIN_DECLS
#define SWFDEC_TYPE_AS_ASOBJECT (6)
typedef guint8 SwfdecAsType;
+typedef struct _SwfdecAsArray SwfdecAsArray;
typedef struct _SwfdecAsContext SwfdecAsContext;
typedef struct _SwfdecAsFrame SwfdecAsFrame;
typedef struct _SwfdecAsObject SwfdecAsObject;
typedef struct _SwfdecAsStack SwfdecAsStack;
typedef struct _SwfdecAsValue SwfdecAsValue;
+/* IMPORTANT: a SwfdecAsValue memset to 0 is a valid undefined value */
struct _SwfdecAsValue {
SwfdecAsType type;
union {
@@ -92,6 +94,37 @@ extern const char *swfdec_as_strings[];
#define SWFDEC_AS_STR_EMPTY (swfdec_as_strin...
2007 Aug 22
0
163 commits - autogen.sh configure.ac doc/swfdec-sections.txt libswfdec-gtk/swfdec_gtk_player.c libswfdec-gtk/swfdec_gtk_player.h libswfdec-gtk/swfdec_gtk_widget.c libswfdec-gtk/swfdec_source.c libswfdec/Makefile.am libswfdec/swfdec_as_array.c
...f --git a/doc/swfdec-sections.txt b/doc/swfdec-sections.txt
index c5f9076..019380c 100644
--- a/doc/swfdec-sections.txt
+++ b/doc/swfdec-sections.txt
@@ -375,6 +375,7 @@ SwfdecAsFrame
swfdec_as_frame_get_next
swfdec_as_frame_get_function_name
swfdec_as_frame_get_script
+swfdec_as_frame_get_this
SwfdecAsStackIterator
swfdec_as_stack_iterator_init
swfdec_as_stack_iterator_init_arguments
diff --git a/libswfdec/swfdec_as_frame.c b/libswfdec/swfdec_as_frame.c
index a9fe372..b7cb037 100644
--- a/libswfdec/swfdec_as_frame.c
+++ b/libswfdec/swfdec_as_frame.c
@@ -787,3 +787,20 @@ swfdec_as_frame_get_script (S...