Sander van Rossen wrote: > Oops, completely missed the meeting... can anyone post the log of the > meeting? > > > On Dec 9, 2007 3:45 AM, Bruce Markham <[EMAIL PROTECTED]> wrote: > > From reading the log, and stopping by to say my own 2 cents, I > > gather that the meeting was a good success! > > ------------------------------------------------------------------------- > SF.Net email is sponsored by: Check out the new SourceForge.net > Marketplace. It's the best place to buy or sell services for just > about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ SharpOS-Developers > mailing list SharpOS-Developers@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sharpos-developers >
I'm not sure if it's complete. (07:13:59 PM) Broudy [EMAIL PROTECTED] entered the room. (07:18:58 PM) {DarxKies} [EMAIL PROTECTED] entered the room. (07:20:24 PM) illuminus: [DarxKies]/{DarxKies} : I committed a couple more string tests to emulate a bug I am encountering with the kernel, except they pass fine when run in the Tests Kernel and NUnit. But not the original ones that I put in the kernel, so I committed all of them, and I need you to take a look when you get the chance. (07:21:32 PM) {DarxKies}: sure just tell me where the bug in the trunk kernel occurs (07:21:35 PM) {DarxKies}: and i will take a look at it (07:22:01 PM) illuminus: Foundation.ByteString.__RunTests() will show you what I'm dealing with - I'm comparing "US"[1] to "SK"[0] (more or less), and its failing. (07:22:31 PM) {DarxKies}: ok i will take a look at it (07:23:20 PM) illuminus: I first noticed this issue when using the version of xfury's ByteString.Compare() that compares a byte string to one of these specially embedded string const, and it kept failing. (07:24:27 PM) illuminus: Which means CString8->IndexOf() fails too... (07:27:26 PM) illuminus: {DarxKies}: thx (07:27:27 PM) {DarxKies}: great more stuff to fix (07:27:30 PM) {DarxKies}: :D (07:27:46 PM) illuminus: Is it a bug? Or a mistake of mine? (07:28:04 PM) {DarxKies}: i am not sure yet as i didn't get to get a look at it (07:28:11 PM) {DarxKies}: but i will do it very soon (07:28:13 PM) illuminus: oh, I misunderstood you then (07:28:27 PM) ***illuminus points pretend gun at self (07:28:32 PM) illuminus: "Don't make me do it!" (07:28:59 PM) illuminus: Oh well folks, I'll be back, in spirit if nothing else, as soon as I can... (07:29:05 PM) {DarxKies}: hahahahaha (07:29:23 PM) illuminus left the room (quit: "Leaving."). (07:37:28 PM) [DarxKies] left the room (quit: Read error: 110 (Connection timed out)). (08:36:34 PM) {DarxKies}: so when should we start the meeting? (08:36:36 PM) {DarxKies}: in 30 mins? (08:36:38 PM) {DarxKies}: is that ok? (08:38:14 PM) himek: I'm here all the time.. (08:38:50 PM) {DarxKies}: me too i just hoped the others will come too :D (08:48:38 PM) himek: I'm very happy that AOT compiles the kernel out of the box with mono and vmware :) (08:49:43 PM) {DarxKies}: xfury too for sure ;) (09:00:14 PM) {DarxKies}: i guess it's time for the meeting? (09:01:34 PM) [EMAIL PROTECTED]: {DarxKies} has changed the topic to: SharpOS Project | http://sharpos.sf.net | Meeting in Progress :D (09:01:34 PM) {DarxKies}: hi everybody (09:01:34 PM) {DarxKies} is now known as DarxKies (09:02:33 PM) DarxKies: Illuminus moved yesterday the new AOT to the trunk so please give it a try and report any bugs, even better please try to write testcases (09:04:05 PM) DarxKies: I am trying to implement the runtime type information (MethodTable + EEClass from .NET) and the question is how much from the .NET reflection functionality will we need for the kernel internal classes (09:04:50 PM) DarxKies: I thought of perhaps writing the Metadata of the kernel + korlib together to the resulting binary (09:05:12 PM) DarxKies: and then using the cecil to decode it at runtime (09:05:56 PM) DarxKies: the problem with that approach is that cecil uses classes and that means it needs object support and that leads to the chicken & egg problem (09:11:15 PM) DarxKies: another way to solve it would be to encode the type information into the data section of the binary like it would be an instance (actually lots of) on the heap (09:12:01 PM) DarxKies: just like the way the .net strings are encoded right now instead of allocating an object on the heap (09:12:27 PM) DarxKies: what do you guys think? (09:12:33 PM) DarxKies: is there another way? (09:12:35 PM) DarxKies: any ideas? (09:17:16 PM) xfury: oy (09:17:23 PM) xfury: i seem to have made it? (09:18:03 PM) DarxKies: it looks like that :D (09:18:18 PM) xfury: coool (09:19:38 PM) xfury: it seems that the second option woujld be easier (09:21:01 PM) DarxKies: the downside of that option is that it will be a bit hard to implement the full reflection (09:21:43 PM) DarxKies: and then we have a class (MethodTable/EEClass) that holds all the infos to that class, fields, methods, constructors, properties (09:23:15 PM) xfury: well we dont have to implement it all at once do we? (09:23:18 PM) DarxKies: and encoding the data for a class holding all that data so that it works at runtime like it was an object on the heap will be a bit tricky and error prone (09:23:47 PM) DarxKies: i guess no only piece by piece (09:23:51 PM) xfury: why does it have to be in classes? (09:24:03 PM) xfury: simple structures would fit the purpose, using static pointers and all (09:24:18 PM) DarxKies: but the most important question is only, how much of the reflection will we need for the structures in the kernel (09:24:42 PM) xfury: i would imagine anything that can be used by EDC (09:25:24 PM) xfury: and, do we try to draw a line somewhere or have EDC capable of accessing all EIC interfaces? (09:25:26 PM) DarxKies: struct will do it as well only that sooner or later we will need that data on the heap too for the loaded assemblies/modules (09:25:38 PM) DarxKies: and that means having to box the valuetypes (struct) (09:26:06 PM) xfury: yeah (09:26:22 PM) xfury: how do we plan to go about with boxing? (09:27:55 PM) DarxKies: boxing is actually allocating an object on the heap (09:28:08 PM) DarxKies: copying the struct data to that object (09:28:22 PM) DarxKies: and setting the typehandle so that it knows that it is related to that struct (09:28:24 PM) DarxKies: that is all (09:28:30 PM) xfury: yrsh (09:28:31 PM) xfury: yeah* (09:29:29 PM) DarxKies: so i think if we want all the type information of the kernel and the loaded files to work side by side we need to implement it as classes (09:29:52 PM) DarxKies: and make sure that the encoded data and the class fields mach (09:30:26 PM) DarxKies: an advantage of that option is that the kernel will be up and running very fast as well (09:30:39 PM) xfury: huh-- how so? (09:30:47 PM) xfury: you mean speed to boot? (09:30:52 PM) DarxKies: yes (09:31:07 PM) DarxKies: after setting up the memory manager (09:31:32 PM) DarxKies: real objects can be created directly on the heap (09:32:13 PM) DarxKies: and the type handle of an object is actually not a pointer to an object on the heap (09:33:01 PM) DarxKies: but to the memory that is the encoded in the kernel binary and mimics an object on the heap (09:33:47 PM) xfury: so, it would use all the class front end stuff, but actually be stored statically (09:34:03 PM) DarxKies: right (09:34:34 PM) xfury: so, would that mean that to get this special reference we would need a new API, or do we construct the AOT to recognize new Type() (09:34:49 PM) DarxKies: somehow like a serialized instance (09:35:10 PM) xfury: as in the .NET serialize apis? (09:35:17 PM) DarxKies: yes (09:35:41 PM) DarxKies: about the new API (09:35:45 PM) xfury: oooh now thats a plan worthy of the great DarxKies :-P (09:36:11 PM) DarxKies: that brings us to the interface that a kernel should have in order to be generated (09:36:12 PM) xfury: itd be badass (09:36:13 PM) DarxKies: :D (09:36:33 PM) DarxKies: i thought about what you said like IRuntimeHelper (09:36:44 PM) DarxKies: IKernel (for the bootentry method) (09:36:59 PM) DarxKies: and IRuntimeHelper for all the AOT related stuff (09:37:13 PM) xfury: that would allow us to implement the runtime stuff in a different class (09:37:20 PM) xfury: definitely avoid partial classes too (09:37:21 PM) DarxKies: i agree (09:39:06 PM) xfury: and what for the new stuff in IRuntimeHelper then (09:39:29 PM) xfury: how do we divide between the AOT's work and natural kernel implementation of reflection (09:39:57 PM) xfury: and heap interface we already can guess of course (09:41:07 PM) DarxKies: what would be an appropriate name for the class holding the type information (09:41:48 PM) DarxKies: i guess it would work like this (09:42:14 PM) DarxKies: the AOT knows the TypeHandle of every type and when a newobj is found in the CIL (09:42:43 PM) DarxKies: then it generates a call to the kernel class that implements the IRuntimeHelper and it passes as parameter the TypeHandle (09:43:25 PM) DarxKies: and that method is then responsible to allocate the object on the heap using the type information that is encoded in the kernel binary (09:43:39 PM) DarxKies: hmmm shit the whole stuff starts to sound more and more confusing (09:43:50 PM) DarxKies: hopefully it is still understandable :D (09:45:01 PM) DarxKies: another method that should be in IRuntimeHelper is the one that can gets an object and is supposed to call a virtual method and that can be done only at runtime (09:46:45 PM) xfury: i understand (09:46:57 PM) xfury: am making some ramen (09:47:14 PM) xfury: but yeah (09:47:33 PM) xfury: but then to read the class data the IKernelHelper class must be EDC? (09:58:46 PM) illuminus|log is now known as illuminus (09:58:48 PM) DarxKies: hmmm I think yes (09:58:49 PM) xfury: wb (09:58:53 PM) illuminus: thx (09:59:05 PM) illuminus: partial classes shouldn't be a problem, since they are just a C# compiler issue (09:59:36 PM) DarxKies: true (09:59:39 PM) xfury: i meant avoiding having the kernel as a partial class (09:59:44 PM) xfury: just cuz its messy (10:00:02 PM) illuminus: so IKernel and IRuntimeHelper, the interfaces themselves, should probably be defined in AOT.Core (10:00:21 PM) xfury: aye (10:00:22 PM) DarxKies: yes just like the x86 stubs (10:00:46 PM) DarxKies: i guess the classes that hold the type information too? (10:00:54 PM) illuminus: In my runtime experimentation, I've been tagging mono corlib stub implementors with a "VesICallAttribute" (10:01:51 PM) illuminus: and the AOT can use the metadata to link our minimal set of mono corlib types, in our korlib, to the stubs, at AOT time. (10:04:49 PM) illuminus: I don't have any code in front of me, but basically, it would be like: (10:04:49 PM) illuminus: [VesICall(typeof(System.Object),ICallType.Instance)] (10:04:49 PM) illuminus: public unsafe static int GetHashCode(MonoObject* self) { } (10:06:02 PM) illuminus: where MonoObject = whatever we want to call our representation of a managed object on the heap (10:06:18 PM) DarxKies: it would be great if the list was somewhere in the repository (10:06:56 PM) illuminus: of the stubs? (10:07:03 PM) DarxKies: yes (10:07:15 PM) illuminus: yea, well, xfury wrote that RuntimeCop tool, which is in the repo, that makes the list (10:07:28 PM) DarxKies: i see (10:07:38 PM) illuminus: I started on, (but have temporarilly stalled), a tool that would generate code files with husks that implement the stubs (10:07:55 PM) xfury: awesome use of the word husk btw (10:08:02 PM) illuminus: Thx ;-) (10:08:44 PM) illuminus: I can't continue it until we decide how we want to represent certain types in EIC (10:08:52 PM) illuminus: like our equivalent of MonoArray. (10:09:15 PM) illuminus: Granted, in that specific case, it should be easy. But I need to aggregate a list of other types to deal with, too. (10:10:30 PM) illuminus: At first, I also stupidly assumed that all stubs were static (10:12:23 PM) illuminus: But my tool is going to have to translate managed types (in the stub signatures) into our EIC equivalents, using attribute metedata I imagine (same way the AOT would, I imagine). So the tool will have to use reflection on the kernel, in able to generate the husks *for* the kernel... (10:12:38 PM) illuminus: *Unless* we want to do it all by hand... (10:13:14 PM) illuminus: Which is technically feasible. I haven't counted the stubs, but there are probably between 50 and 100 of them. (10:13:46 PM) illuminus: Array.GetLength() is a good example of an instance stub (10:13:50 PM) DarxKies: over 560 ;) (10:14:15 PM) illuminus: ah (10:14:17 PM) illuminus: well then (10:14:23 PM) illuminus: that settles it. ;-) (10:14:27 PM) illuminus: tool it is! (10:14:27 PM) DarxKies: hahaha (10:14:59 PM) illuminus: oh well, I have to run and do work. keep the conversation alive, and I'll read some more of the log later. (10:15:01 PM) illuminus: peace out! (10:15:06 PM) illuminus is now known as illuminus|log (10:15:26 PM) xfury: yeah theres a ridiculous number (10:15:35 PM) xfury: i sometimes wonder if its all really necessary (10:16:17 PM) xfury: but it probably is (10:16:40 PM) DarxKies: i wonder too if all are necessary (10:16:59 PM) xfury: id have to take a closer look at the list (10:17:25 PM) DarxKies: i generated one against the 1.2.6 version (10:17:29 PM) DarxKies: if you want i can send it to you (10:19:36 PM) xfury: hey, that list in the repo only covers mscorlib (10:19:42 PM) xfury: there's also calls in System and the others (10:20:17 PM) DarxKies: hmmm (10:20:48 PM) xfury: i got 614 between mscorlib/System (10:23:09 PM) DarxKies: that will be alot of work (10:23:26 PM) xfury: yeah we've got to reduce em a bit (10:24:20 PM) xfury: but, the Object class has 8 (10:24:25 PM) xfury: we could start there (10:24:41 PM) xfury: ooops (10:24:42 PM) xfury: less (10:24:46 PM) xfury: 4 (10:24:51 PM) DarxKies: we will need MonoType (10:25:01 PM) xfury: one of em is obj_address (10:25:05 PM) DarxKies: MonoType is actually what we talked above if i am not wrong (10:25:59 PM) xfury: huh, as a real class, or for accessing class data from EIC? (10:26:16 PM) xfury: type data* (10:26:39 PM) DarxKies: it is for acessing the type data (10:27:12 PM) DarxKies: but it wraps the Class that we will need to contain the type information (10:27:58 PM) DarxKies: i count 29 (10:30:03 PM) xfury: for Object? (10:30:33 PM) DarxKies: you mean MonoObject i think (10:30:37 PM) DarxKies: but i mean the MonoType (10:30:44 PM) DarxKies: MonoType contains the information to a type (10:30:50 PM) xfury: where is that in the mono source? (10:30:54 PM) xfury: i see MonoTypeInfo but (10:31:01 PM) DarxKies: and MonoObject just contains the type handle and the data belonging to that object (10:33:22 PM) DarxKies: mcs/class/corlib/System/MonoType.cs ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ SharpOS-Developers mailing list SharpOS-Developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sharpos-developers