Front page | perl.perl6.internals |
Postings from December 2001
[COMMIT] Initial dynamic oplib loading stuff.
From:
Gregor N. Purdy
Date:
December 27, 2001 09:14
Subject:
[COMMIT] Initial dynamic oplib loading stuff.
Message ID:
1009473210.2542.6.camel@borg.oh.focusresearch.com
All --
I just committed the first chunk of stuff to make dynamic oplib
loading work. This is an early step. The most interesting stuff
is yet to come. For now, the code is only exercised when the -P
(predereferencing) option to test_parrot is used. We still link
core_ops.c in statically, but we dynamically load the prederef
version if -P is used. This isn't the real intent of oplib
dynaloading, though. It will be use to load oplibs *in addition
to* rather than *instead of* core.ops. Also, please note that
the prederef stuff probably has limited remaining usefulness,
at least in its current form.
Here is the log from the commit:
Initial code for dynamic loading of oplibs, applied for now to the
loading of the core_prederef oplib when the -P flag is passed to
test_parrot.
* MANIFEST: Added entry for the new file include/parrot/oplib.h.
* Makefile.in:
* Added libcore_prederef_0_3.so to the shared target.
* Added build rule for libcore_prederef_0_3.so.
* Added dependencies on Parrot/OpsFile.pm and Parrot/Op.pm
to Parrot/OpLib/core.pm, core_ops.c and
core_ops_prederef.c.
* config_h.in: Added defines for constants used to locate the
core oplib's init function, and the core_prederef oplib for
dynaloading.
* core.ops: Added a VERSION = 0.3 line near the top. This is now
required by Parrot/OpsFile.pm.
* interpreter.c:
* Added init_prederef() and stop_prederef() functions to load
and unload the core_prederef oplib when we are in prederef
mode.
NOTE: In all likelihood, the prederef stuff has a rapidly
dwindling time-to-live. The JIT should provide vastly superior
performance, and loading an alternate set of core_ops isn't
the real direction for the dynaloading stuff. Loading
*additional* ops is. It does provide a handy test case for the
general idea for now, though.
* Gets the core copcode table, etc. via the core oplibs oplib
info pointer, as returned by the core oplib's init function.
* ops2c.pl
* Make use of the version, major version and minor version
stuff parsed by Parrot/OpsFile.pm
* The only exported symbol in the generated files is the init
function now, since that returns an oplib info struct
pointer, and all the important stuff can be found there.
* ops2pm.pl: Put the oplib version in the generated .pm file.
* test_main.c: Small changes necessitated by changes in the names
of some members of the interpreter struct.
* trace.c: Small changes necessitated by changes in the names
of some members of the interpreter struct.
* Parrot/OpsFile.pm: Require a "VERSION = x.y" line before any
ops are found.
* include/parrot/interp_guts.h: Small changes necessitated by
changes in the names of some members of the interpreter struct.
* include/parrot/interpreter.h: Include the new
include/parrot/oplib.h header. Small changes to the oplib-
related members.
* include/parrot/oplib.h: Define the type of the oplib init
function, and the struct type for the oplib info.
* platforms/*.[hc]: Remove the second argument to Parrot_dlopen()
since not all platforms have it. For those that do, a default
second argument is provided.
Regards,
-- Gregor
____________________________________________________________________
/ Inspiration >> Innovation >> Excellence (TM) \
Gregor N. Purdy gregor@focusresearch.com
Focus Research, Inc. http://www.focusresearch.com/
8080 Beckett Center Drive #203 513-860-3570 vox
West Chester, OH 45069 513-860-3579 fax
\____________________________________________________________________/
[finest@newyork.ny.us]$ ping osama.taliban.af
PING osama.taliban.af (68.69.65.68) from 20.1.9.11 : 56 bytes of data.
From 85.83.77.67: Time to live exceeded
-
[COMMIT] Initial dynamic oplib loading stuff.
by Gregor N. Purdy