seed r500 - trunk/libseed
- From: racarr svn gnome org
- To: svn-commits-list gnome org
- Subject: seed r500 - trunk/libseed
- Date: Sat, 20 Dec 2008 03:13:20 +0000 (UTC)
Author: racarr
Date: Sat Dec 20 03:13:20 2008
New Revision: 500
URL: http://svn.gnome.org/viewvc/seed?rev=500&view=rev
Log:
Avoid some heap allocations.
Modified:
trunk/libseed/seed-closure.c
Modified: trunk/libseed/seed-closure.c
==============================================================================
--- trunk/libseed/seed-closure.c (original)
+++ trunk/libseed/seed-closure.c Sat Dec 20 03:13:20 2008
@@ -125,7 +125,7 @@
GIArgInfo *arg_info;
GITypeInfo *return_type;
GArgument rarg;
- GArgument *return_arg = g_new0(GArgument, 1);
+ GArgument return_arg;
JSContextRef ctx =
JSGlobalContextCreateInGroup(context_group, 0);
@@ -136,7 +136,7 @@
num_args = g_callable_info_get_n_args(privates->info);
return_type = g_callable_info_get_return_type(privates->info);
return_tag = g_type_info_get_tag(return_type);
- jsargs = (JSValueRef *) g_new0(JSValueRef, num_args);
+ jsargs = (JSValueRef *) g_newa(JSValueRef, num_args);
for (i = 0; i < num_args; i++)
{
@@ -253,58 +253,56 @@
exception = 0;
}
- g_free(jsargs);
-
seed_gi_make_argument(ctx, (JSValueRef) return_value, return_type,
- return_arg, 0);
+ &return_arg, 0);
switch (return_tag)
{
case GI_TYPE_TAG_BOOLEAN:
- *(gboolean *) result = return_arg->v_boolean;
+ *(gboolean *) result = return_arg.v_boolean;
break;
case GI_TYPE_TAG_INT8:
- *(gint8 *) result = return_arg->v_int8;
+ *(gint8 *) result = return_arg.v_int8;
break;
case GI_TYPE_TAG_UINT8:
- *(guint8 *) result = return_arg->v_uint8;
+ *(guint8 *) result = return_arg.v_uint8;
break;
case GI_TYPE_TAG_INT16:
- *(gint16 *) result = return_arg->v_int16;
+ *(gint16 *) result = return_arg.v_int16;
break;
case GI_TYPE_TAG_UINT16:
- return_arg->v_uint16 = *(guint16 *) args[i];
+ return_arg.v_uint16 = *(guint16 *) args[i];
break;
case GI_TYPE_TAG_INT32:
- *(gint32 *) result = return_arg->v_int32;
+ *(gint32 *) result = return_arg.v_int32;
break;
case GI_TYPE_TAG_UINT32:
- *(guint32 *) result = return_arg->v_uint32;
+ *(guint32 *) result = return_arg.v_uint32;
break;
case GI_TYPE_TAG_LONG:
case GI_TYPE_TAG_INT64:
- *(glong *) result = return_arg->v_int64;
+ *(glong *) result = return_arg.v_int64;
break;
case GI_TYPE_TAG_ULONG:
case GI_TYPE_TAG_UINT64:
- *(glong *) result = return_arg->v_uint64;
+ *(glong *) result = return_arg.v_uint64;
break;
case GI_TYPE_TAG_INT:
case GI_TYPE_TAG_SSIZE:
case GI_TYPE_TAG_SIZE:
- *(gint *) result = return_arg->v_int32;
+ *(gint *) result = return_arg.v_int32;
break;
case GI_TYPE_TAG_UINT:
- *(guint *) result = return_arg->v_uint32;
+ *(guint *) result = return_arg.v_uint32;
break;
case GI_TYPE_TAG_FLOAT:
- *(gfloat *) result = return_arg->v_float;
+ *(gfloat *) result = return_arg.v_float;
break;
case GI_TYPE_TAG_DOUBLE:
- *(gdouble *) result = return_arg->v_double;
+ *(gdouble *) result = return_arg.v_double;
break;
case GI_TYPE_TAG_UTF8:
- *(gchar **) result = return_arg->v_string;
+ *(gchar **) result = return_arg.v_string;
break;
case GI_TYPE_TAG_INTERFACE:
{
@@ -317,32 +315,31 @@
if (interface_type == GI_INFO_TYPE_OBJECT ||
interface_type == GI_INFO_TYPE_INTERFACE)
{
- *(gpointer *) result = return_arg->v_pointer;
+ *(gpointer *) result = return_arg.v_pointer;
break;
}
else if (interface_type == GI_INFO_TYPE_ENUM ||
interface_type == GI_INFO_TYPE_FLAGS)
{
- *(double *)result = return_arg->v_double;
+ *(double *)result = return_arg.v_double;
break;
}
else if (interface_type == GI_INFO_TYPE_STRUCT)
{
- *(gpointer *) result = return_arg->v_pointer;
+ *(gpointer *) result = return_arg.v_pointer;
break;
}
}
case GI_TYPE_TAG_GLIST:
case GI_TYPE_TAG_GSLIST:
- *(gpointer *) result = return_arg->v_pointer;
+ *(gpointer *) result = return_arg.v_pointer;
break;
default:
*(gpointer *) result = 0;
}
JSGlobalContextRelease((JSGlobalContextRef)ctx);
- g_free(return_arg);
}
SeedNativeClosure *seed_make_native_closure(JSContextRef ctx,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]