[svn:parrot] r40673 - in trunk: include/parrot src src/interp
NotFound at svn.parrot.org
NotFound at svn.parrot.org
Thu Aug 20 11:05:42 UTC 2009
Author: NotFound
Date: Thu Aug 20 11:05:41 2009
New Revision: 40673
URL: https://trac.parrot.org/parrot/changeset/40673
Log:
[core] initialize vtables for core PMC at an earlier stage
Modified:
trunk/include/parrot/vtables.h
trunk/src/global_setup.c
trunk/src/interp/inter_create.c
trunk/src/vtables.c
Modified: trunk/include/parrot/vtables.h
==============================================================================
--- trunk/include/parrot/vtables.h Thu Aug 20 09:28:47 2009 (r40672)
+++ trunk/include/parrot/vtables.h Thu Aug 20 11:05:41 2009 (r40673)
@@ -32,6 +32,10 @@
FUNC_MODIFIES(*vtable);
PARROT_EXPORT
+void Parrot_initialize_core_vtables(PARROT_INTERP)
+ __attribute__nonnull__(1);
+
+PARROT_EXPORT
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
VTABLE * Parrot_new_vtable(SHIM_INTERP);
@@ -54,6 +58,9 @@
#define ASSERT_ARGS_Parrot_destroy_vtable __attribute__unused__ int _ASSERT_ARGS_CHECK = \
PARROT_ASSERT_ARG(interp) \
|| PARROT_ASSERT_ARG(vtable)
+#define ASSERT_ARGS_Parrot_initialize_core_vtables \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp)
#define ASSERT_ARGS_Parrot_new_vtable __attribute__unused__ int _ASSERT_ARGS_CHECK = 0
#define ASSERT_ARGS_mark_vtables __attribute__unused__ int _ASSERT_ARGS_CHECK = \
PARROT_ASSERT_ARG(interp)
Modified: trunk/src/global_setup.c
==============================================================================
--- trunk/src/global_setup.c Thu Aug 20 09:28:47 2009 (r40672)
+++ trunk/src/global_setup.c Thu Aug 20 11:05:41 2009 (r40673)
@@ -164,10 +164,7 @@
Parrot_platform_init_code();
#endif
- parrot_alloc_vtables(interp);
-
/* Call base vtable class constructor methods */
- Parrot_initialize_core_pmcs(interp, 0);
parrot_global_setup_2(interp);
Parrot_initialize_core_pmcs(interp, 1);
Modified: trunk/src/interp/inter_create.c
==============================================================================
--- trunk/src/interp/inter_create.c Thu Aug 20 09:28:47 2009 (r40672)
+++ trunk/src/interp/inter_create.c Thu Aug 20 11:05:41 2009 (r40673)
@@ -178,6 +178,8 @@
*/
Parrot_str_init(interp);
+ Parrot_initialize_core_vtables(interp);
+
/* Set up the MMD struct */
interp->binop_mmd_funcs = NULL;
Modified: trunk/src/vtables.c
==============================================================================
--- trunk/src/vtables.c Thu Aug 20 09:28:47 2009 (r40672)
+++ trunk/src/vtables.c Thu Aug 20 11:05:41 2009 (r40673)
@@ -19,6 +19,10 @@
#include "parrot/parrot.h"
#include "parrot/vtables.h"
+/* This function is defined in the auto-generated file core_pmcs.c */
+/* XXX Get it into some public place */
+extern void Parrot_initialize_core_pmcs(PARROT_INTERP, int pass);
+
/* HEADERIZER HFILE: include/parrot/vtables.h */
/*
@@ -222,6 +226,28 @@
}
/*
+
+=item C<void Parrot_initialize_core_vtables(PARROT_INTERP)>
+
+Initialize vtables for the core PMCs.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_initialize_core_vtables(PARROT_INTERP)
+{
+ ASSERT_ARGS(Parrot_initialize_core_vtables)
+
+ if (! interp->vtables) {
+ parrot_alloc_vtables(interp);
+ Parrot_initialize_core_pmcs(interp, 0);
+ }
+}
+
+/*
* Local variables:
* c-file-style: "parrot"
* End:
More information about the parrot-commits
mailing list