Show enters and exits. Hide enters and exits.
| 00:00:05 | evan | on the other hand |
| 00:00:12 | evan | it's better that the tests just include everything they need |
| 00:00:20 | evan | since the headers are properly protected against multiple inclusion |
| 00:00:24 | evan | that mitigates the problem |
| 00:00:36 | dgtized | but we can't test that unless we try compiling each test seperately |
| 00:00:40 | evan | I should have just done that originally |
| 00:00:49 | evan | dgtized: right |
| 00:00:53 | evan | so do enough to get it working for you |
| 00:00:56 | evan | and we'll go from there |
| 00:01:01 | Maledictus leaves the room. | |
| 00:01:01 | binary42 leaves the room. | |
| 00:01:16 | dgtized | I mean what I have been doing is going through each test file and stripping out every include until it fails to compile |
| 00:01:25 | dgtized | so I'm almost at the minimal set for this order |
| 00:01:30 | evan | well |
| 00:01:36 | evan | thats probably not the right idea |
| 00:01:47 | evan | because, unless we know the order that they're included in runner |
| 00:01:54 | evan | it might work for you, but not someone else |
| 00:02:00 | evan | if all the tests include what they need |
| 00:02:03 | evan | then we're fine |
| 00:02:11 | dgtized | well then why not ensure that the runner includes all the necessary ones from the getgo? |
| 00:02:12 | evan | no matter what order they're included in |
| 00:02:40 | evan | i feel like we're going in circles. |
| 00:03:08 | dgtized | because i don't understand how to determine if we are including everything necessary in a particular test file |
| 00:03:10 | evan | if you want to change cxxtest |
| 00:03:12 | evan | go for it. |
| 00:03:46 | evan | why should a test file NOT simply include every header it needs? |
| 00:04:03 | dgtized | cxxtest has a --include HEADER |
| 00:04:05 | evan | whats the harm in reader the file, seeing what it needs, and adding all the includes |
| 00:04:12 | dgtized | for including a header prior to all tests |
| 00:04:16 | evan | s/reader/reading/ |
| 00:05:05 | evan | dgtized: ? |
| 00:05:28 | dgtized | the cxxtest.pl has a --include HEADER option for causing cxxtest to add a header before including all tests |
| 00:05:36 | evan | could you answer me first? |
| 00:05:48 | evan | on my above question |
| 00:05:54 | dgtized | because I don't know how to test if it's the minimal set for that test file |
| 00:06:08 | evan | why do we care about the minimal set? |
| 00:06:23 | evan | esp for the tests |
| 00:06:34 | aotearoa leaves the room. | |
| 00:06:58 | dgtized | well if we don't care about the minimal set, then why not just centralize for the tests -- if the tests are supposed to just contain what they need, that means they should have the minimal set, if it doesn't matter then it's just a pain in the ass to keep track of which files they actually need |
| 00:07:04 | evan | esp. since it's BETTER that the test/runner.cpp gets recompiled more often than it might need to be |
| 00:07:11 | evan | so that we're totally sure it's running properly |
| 00:07:24 | aotearoa enters the room. | |
| 00:07:32 | evan | dgtized: maybe we should |
| 00:07:32 | dgtized | but it will get recompiled because the --header include will include those dependencies |
| 00:07:41 | evan | drbrain added this gen/includes.hpp |
| 00:07:46 | evan | perhaps that should be at the top of every test |
| 00:07:48 | evan | and be done with it |
| 00:08:21 | evan | but it's very important that the deps are explained to rake |
| 00:08:30 | evan | so that changes cause runner.cpp to be recompiled |
| 00:08:37 | evan | thats the most frusterating thing |
| 00:08:51 | drbrain | makedepend will figure it out from vm/test/test_*hpp |
| 00:08:52 | evan | if you change something and runner.cpp isn't regen'd or recompiled when it should be |
| 00:09:08 | evan | drbrain: if we just use the catch all gen/includes.hpp |
| 00:09:15 | evan | will it do it correctly? |
| 00:09:28 | evan | we can't use this cxxtest --header thing then |
| 00:09:31 | evan | because makedepend wont see that |
| 00:10:07 | dgtized | runner.cpp gets recreated every time we change any tests or objs |
| 00:10:22 | drbrain | I'd rather that gen/includes.hpp only be used in files that include vm/gen/*cpp |
| 00:10:29 | dgtized | doesn't that depend on makedepends results? |
| 00:10:43 | drbrain | currently runner.cpp depends on vm/test/test_*hpp |
| 00:10:50 | dgtized | and objs |
| 00:11:03 | dgtized | so if any obj file changes it recompiles right? |
| 00:11:16 | drbrain | so if vm/test/test_blah.hpp includes vm/blah.hpp, and vm/blah.hpp includes everything it needs to compile |
| 00:11:21 | drbrain | we should be Just Fine |
| 00:11:25 | drbrain | right |
| 00:11:53 | drbrain | 'vm/test/runner.cpp' => tests + objs |
| 00:12:47 | dgtized | drbrain: ok that works too, I just reached a point where some of the tests I could even remove there vm/blah.hpp and they were still happy, but I do like the idea that they just depend on whatever the core class they test is, and that core class knows what it needs to compile |
| 00:13:13 | Arjen_ leaves the room. | |
| 00:13:19 | drbrain | cool |
| 00:14:06 | dgtized | alright I'll switch it to that form -- the only other issue is that then we have to actually fix the dependencies for all the builtins |
| 00:14:17 | dgtized | oh |
| 00:14:19 | dgtized | wait no |
| 00:14:32 | dgtized | this won't work for things like the numbers |
| 00:14:39 | drbrain | everything on the vm/builtin side should be golden |
| 00:15:18 | dgtized | drbrain: but the numbers forward declare eachother and wait for later to include the other types they convert to |
| 00:15:44 | drbrain | then we can make an exception |
| 00:16:29 | evan | the numbers? |
| 00:16:31 | dgtized | I have one other idea, but maybe this is bad, why is it that ALL of the tests are included in the same runner.cpp? |
| 00:16:36 | dgtized | Float, Bignum, Fixnum |
| 00:16:51 | evan | why are those an exception? |
| 00:17:32 | dgtized | oh they should all attempt to include eachother in builtin/ but forward declare in case they can't? |
| 00:17:51 | evan | builtin/ what? |
| 00:18:00 | evan | the header files in builtin/ |
| 00:18:00 | evan | ? |
| 00:18:05 | dgtized | yes |
| 00:18:29 | evan | the current setup is fine |
| 00:18:29 | octopod leaves the room. | |
| 00:18:35 | evan | it doesn't need to be changed |
| 00:18:36 | evan | imho. |
| 00:19:04 | evan | builtin/ headers don't need to include other builtin/ headers if all they do is use the type in a signature |
| 00:19:09 | evan | then you can just use a fwd decl |
| 00:19:19 | dgtized | well I can compile the tests as I currently have them, and you can compile the tests as you currently have them but I don't think we can swap and still have it work because of order |
| 00:19:30 | evan | but the .cpp files should include the proper builtin headers to make everything work |
| 00:19:47 | evan | dgtized: i'll bet we can swap |
| 00:19:48 | pauldix leaves the room. | |
| 00:19:55 | evan | go look in runner.cpp |
| 00:20:05 | evan | what order do you see the test files included? |
| 00:20:11 | evan | is test_ar.hpp first? |
| 00:20:30 | dgtized | nope |
| 00:20:41 | evan | then it's a wash |
| 00:20:51 | evan | just have every test include gen/includes.hpp at the top |
| 00:20:51 | dgtized | vm/test/test_event.hpp is first |
| 00:20:52 | evan | and be done with it |
| 00:21:08 | evan | or use --include |
| 00:21:22 | evan | so long as rake can still figure out when to rebuild and recompile runner.cpp |
| 00:22:16 | dgtized | what if we pass the list of tests to runner in sorted order? |
| 00:22:22 | evan | Either I'm oversimplying it, or I don't get it. |
| 00:22:23 | dgtized | in the vm task |
| 00:22:27 | evan | er. |
| 00:22:29 | evan | heh |
| 00:22:46 | evan | dgtized: try it! |
| 00:23:00 | drbrain | that would work |
| 00:23:43 | michalw leaves the room. | |
| 00:24:10 | enebo enters the room. | |
| 00:25:18 | Yurik leaves the room. | |
| 00:25:23 | dgtized | why is [{:verbose => true}] added to the list of tests for runner.cpp? |
| 00:25:38 | dgtized | can't I just pass that as a commandline prior to that in that task? |
| 00:26:07 | dgtized | ack, cxxgen doesn't take verbose |
| 00:26:10 | dgtized | what is that even going to? |
| 00:26:19 | evan | thats for sh to see |
| 00:26:39 | evan | just do |
| 00:26:48 | evan | tests = tests.sort + [{:verbose => true}] |
| 00:28:39 | drbrain | yes |
| 00:28:48 | drbrain | it's a rakeism |
| 00:28:58 | drbrain | that should be built-in |
| 00:30:20 | dgtized | alright, I guess I should just revert to HEAD then and see if that fixes everything -- it still means we don't have minimal set of includes per test, but it should work regardless of platform |
| 00:34:09 | dgtized | huh well that mostly fixed it, but the test files fail to resolve a symbol earlier then normal |
| 00:39:01 | CIA-20 | * fixed test runner order to always be sorted to ensure dependencies work across platform; b598bc7 - Charles Comstock |
| 00:40:05 | hemulen enters the room. | |
| 00:41:13 | lopex leaves the room. | |
| 00:41:31 | benburkert enters the room. | |
| 00:41:34 | botanicus enters the room. | |
| 00:43:38 | trythil_ enters the room. | |
| 00:45:43 | dfg59 enters the room. | |
| 00:50:16 | trythil enters the room. | |
| 00:51:12 | drbrain | is anybody seeing a failure in TestObject::test_clone? |
| 00:51:34 | nari_ leaves the room. | |
| 00:53:11 | benburkert leaves the room. | |
| 00:53:47 | brixen | drbrain: checking |
| 00:57:29 | evan | drbrain: yes |
| 00:57:57 | drbrain | is there a way to run just one test suite/ |
| 00:57:59 | brixen | yeah, me too |
| 00:58:00 | drbrain | ? |
| 00:58:05 | drbrain | I don't see it in guide.html |
| 00:58:21 | evan | yeah, i didn't figure that out |
| 00:58:35 | evan | I had, at one point, a make rule that let me pass in the file to use |
| 00:58:52 | evan | make test/runner TEST=test_message |
| 00:58:59 | evan | it would regen runner with just that one file |
| 00:59:19 | brixen | didn't the rake :only task do that? |
| 00:59:46 | drbrain | I can add an arg to the vm:test task if we need to |
| 01:00:23 | evan | sure |
| 01:00:29 | evan | it's useful to be able to do that |
| 01:01:50 | evan | Women's Olympic Soccer is on btw |
| 01:02:01 | evan | The goalie was one of Abby's students at UW |
| 01:05:48 | trythil_ leaves the room. | |
| 01:09:18 | Defiler | drbrain: I'm on the 'clone' test failure; should be checking that in shortly |
| 01:09:28 | drbrain | cool |
| 01:10:24 | Yurik enters the room. | |
| 01:11:49 | drbrain | it looks like test filtering is not supported in cxxtest |
| 01:11:59 | drbrain | I will hack it in |
| 01:12:03 | drbrain | to the rakefile |
| 01:12:35 | evan | ok |
| 01:12:55 | Defiler | oh haha I already fixed this and forgot to push it |
| 01:13:34 | Defiler | No. Hrm. |
| 01:18:51 | moofbong leaves the room. | |
| 01:21:43 | brapse_ leaves the room. | |
| 01:23:37 | benburkert_ enters the room. | |
| 01:26:57 | nari enters the room. | |
| 01:27:12 | headius enters the room. | |
| 01:29:47 | drbrain | hrm, this is going to be messy |
| 01:29:52 | benburkert_ leaves the room. | |
| 01:30:04 | drbrain | I think I'll do it tomorrow |
| 01:30:46 | Defiler | Shouldn't the object_id prim be returning an Integer* not a uintptr_t? |
| 01:30:49 | Defiler | That seems odd to me |
| 01:31:08 | Defiler | That's probably my fault now that I think about it hah |
| 01:31:28 | drbrain | probably |
| 01:31:38 | drbrain | I'm heading home, I'm overheated |
| 01:33:58 | botanicus leaves the room. | |
| 01:33:58 | cored enters the room. | |
| 01:37:13 | lstoll enters the room. | |
| 01:42:20 | trythil leaves the room. | |
| 01:43:06 | benburkert enters the room. | |
| 01:43:14 | joachimm leaves the room. | |
| 01:52:05 | jtoy enters the room. | |
| 01:59:18 | c0sin leaves the room. | |
| 02:00:04 | dfg59 leaves the room. | |
| 02:00:58 | aotearoa leaves the room. | |
| 02:03:09 | tarcieri | OHGOD |
| 02:03:21 | tarcieri | ActiveSupport is crashing Ruby 1.9 :( |
| 02:05:07 | tarcieri | ActiveSupport: it's like using a spike strip for a jock strap |
| 02:05:12 | aotearoa enters the room. | |
| 02:07:13 | antares enters the room. | |
| 02:08:35 | brapse enters the room. | |
| 02:08:58 | aotearoa leaves the room. | |
| 02:12:43 | ezmobius leaves the room. | |
| 02:16:59 | ijcd leaves the room. | |
| 02:21:59 | cored leaves the room. | |
| 02:24:20 | binary42 enters the room. | |
| 02:33:52 | yipstar leaves the room. | |
| 02:41:19 | aotearoa enters the room. | |
| 02:43:47 | Yurik leaves the room. | |
| 02:44:19 | Yurik enters the room. | |
| 02:45:16 | spaceG enters the room. | |
| 02:54:41 | Yurik leaves the room. | |
| 03:06:01 | jackdempsey_ enters the room. | |
| 03:10:55 | gramos leaves the room. | |
| 03:10:58 | jwolski enters the room. | |
| 03:18:20 | CIA-20 | * Fix Object::clone for good; 7446de4 - Wilson Bilkovich |
| 03:18:48 | guitsaru enters the room. | |
| 03:27:59 | gramos enters the room. | |
| 03:30:33 | lorenzod8n leaves the room. | |
| 03:32:01 | nicksieger leaves the room. | |
| 03:32:30 | jazen3 leaves the room. | |
| 03:32:34 | jazen enters the room. | |
| 03:33:11 | lchin enters the room. | |
| 03:33:24 | RyanTM leaves the room. | |
| 03:39:29 | Cosmos95 leaves the room. | |
| 03:40:01 | Cosmos95 enters the room. | |
| 03:40:18 | nicksieger enters the room. | |
| 03:42:32 | bitsweat enters the room. | |
| 03:44:05 | brapse leaves the room. | |
| 03:52:01 | Yurik enters the room. | |
| 03:54:48 | RyanTM enters the room. | |
| 04:03:02 | jackdempsey_ leaves the room. | |
| 04:05:06 | gramos leaves the room. | |
| 04:16:08 | headius | Defiler: optimistic much? |
| 04:26:11 | jackdempsey_ enters the room. | |
| 04:38:41 | imajes leaves the room. | |
| 04:46:51 | imajes enters the room. | |
| 04:56:55 | keisukefukuda leaves the room. | |
| 05:23:51 | AndrewO leaves the room. | |
| 05:31:59 | aotearoa leaves the room. | |
| 05:37:44 | imajes leaves the room. | |
| 05:38:35 | dfg59 enters the room. | |
| 05:38:49 | RyanTM leaves the room. | |
| 05:52:34 | lchin leaves the room. | |
| 05:52:48 | lstoll leaves the room. | |
| 05:53:06 | lstoll enters the room. | |
| 05:58:43 | moofbong enters the room. | |
| 05:59:35 | jack_sleep leaves the room. | |
| 06:16:18 | moofbong leaves the room. | |
| 06:25:54 | jwolski leaves the room. | |
| 06:34:50 | CIA-20 | * Updated MSpec source to 0b989c19.; ffb998b - Brian Ford |
| 06:37:38 | thehcdreamer enters the room. | |
| 06:37:57 | guitsaru leaves the room. | |
| 06:41:31 | edwardam leaves the room. | |
| 06:44:43 | rubuildius_amd64 | Brian Ford: ffb998bf5; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors |
| 06:48:26 | trythil enters the room. | |
| 06:59:27 | rubuildius_ey64 | Brian Ford: ffb998bf5; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors |
| 07:00:22 | lchin enters the room. | |
| 07:00:57 | trythil_ enters the room. | |
| 07:08:01 | thehcdreamer leaves the room. | |
| 07:12:56 | trythil leaves the room. | |
| 07:13:28 | trythil enters the room. | |
| 07:13:59 | bitsweat leaves the room. | |
| 07:18:12 | BobFunkasdas enters the room. | |
| 07:26:25 | dfg59 leaves the room. | |
| 07:27:50 | trythil_ leaves the room. | |
| 07:35:19 | krsh enters the room. | |
| 07:35:33 | enebo leaves the room. | |
| 07:50:29 | aotearoa enters the room. | |
| 08:00:30 | trythil_ enters the room. | |
| 08:03:18 | thehcdreamer enters the room. | |
| 08:05:07 | trythil leaves the room. | |
| 08:12:17 | benburkert leaves the room. | |
| 08:15:23 | Arjen_ enters the room. | |
| 08:18:21 | aotearoa leaves the room. | |
| 08:21:29 | trythil_ leaves the room. | |
| 08:32:17 | aotearoa enters the room. | |
| 08:37:49 | antares leaves the room. | |
| 08:39:39 | krsh leaves the room. | |
| 08:39:51 | dysinger enters the room. | |
| 08:58:53 | CIA-20 | * Cleanup stack usage and fix interpreter Remove Task->stack, added Task methods for manipulating the stack that use active. VMMethod contains a resume ...; 310a461 - Evan Phoenix |
| 09:00:31 | dysinger leaves the room. | |
| 09:00:33 | mitchellvriley enters the room. | |
| 09:08:44 | octopod enters the room. | |
| 09:12:43 | blakewatters leaves the room. | |
| 09:22:14 | botanicus enters the room. | |
| 09:24:57 | BlackEdder enters the room. | |
| 09:37:41 | michalw enters the room. | |
| 09:46:31 | Maledictus enters the room. | |
| 09:48:25 | mutle leaves the room. | |
| 09:57:28 | mutle enters the room. | |
| 10:00:11 | chris2 enters the room. | |
| 10:01:28 | mitchellvriley leaves the room. | |
| 10:06:22 | Arjen_ leaves the room. | |
| 10:11:59 | joachimm enters the room. | |
| 10:18:54 | blakewatters enters the room. | |
| 10:18:58 | blakewatters leaves the room. | |
| 10:26:35 | headius leaves the room. | |
| 10:27:13 | jgre__ enters the room. | |
| 10:27:52 | krsh enters the room. | |
| 10:32:03 | roo enters the room. | |
| 10:38:34 | rue leaves the room. | |
| 11:03:56 | krsh leaves the room. | |
| 11:07:45 | nari leaves the room. | |
| 11:11:24 | jtoy leaves the room. | |
| 11:25:33 | mutle_ enters the room. | |
| 11:35:39 | nari enters the room. | |
| 11:42:37 | mutle leaves the room. | |
| 11:44:40 | gnufied enters the room. | |
| 11:58:05 | imajes enters the room. | |
| 12:03:40 | qrush enters the room. | |
| 12:04:10 | qrush leaves the room. | |
| 12:06:30 | imajes leaves the room. | |
| 12:31:10 | hemulen leaves the room. | |
| 12:37:15 | robin_dewd leaves the room. | |
| 13:09:12 | BobFunkasdas enters the room. | |
| 13:29:20 | mernen enters the room. | |
| 13:32:30 | gnufied leaves the room. | |
| 13:33:07 | aotearoa leaves the room. | |
| 13:40:52 | aotearoa enters the room. | |
| 13:43:43 | jackdempsey_ enters the room. | |
| 13:54:20 | hemulen enters the room. | |
| 14:03:27 | djwonk enters the room. | |
| 14:22:32 | jackdempsey_ leaves the room. | |
| 14:26:16 | AndrewO enters the room. | |
| 14:29:06 | aotearoa leaves the room. | |
| 14:36:26 | yipstar enters the room. | |
| 14:39:07 | blakewatters enters the room. | |
| 14:40:40 | moofbong enters the room. | |
| 14:40:57 | pauldix enters the room. | |
| 14:48:18 | binary42 leaves the room. | |
| 14:51:30 | michalw leaves the room. | |
| 14:51:34 | michalw enters the room. | |
| 14:52:29 | lchin leaves the room. | |
| 14:53:31 | djwonk_ enters the room. | |
| 14:57:13 | mernen | is the cpp branch compiling fine on mac? |
| 14:57:36 | mernen | I had to make a trivial change here because of -Werror |
| 14:58:48 | djwonk__ enters the room. | |
| 14:59:28 | lchin enters the room. | |
| 14:59:35 | lchin leaves the room. | |
| 15:00:02 | djwonk leaves the room. | |
| 15:09:57 | benburkert enters the room. | |
| 15:15:03 | binary42 enters the room. | |
| 15:15:21 | djwonk_ leaves the room. | |
| 15:18:57 | dbussink | mernen: what change? |
| 15:20:10 | mernen | I got a warning on vm/builtin/dir.cpp, line 31, for casting a string literal into a char* |
| 15:20:30 | mernen | I just changed VM::raise_from_errno's signature |
| 15:20:41 | mernen | from char* to const char* |
| 15:21:07 | mernen | now the vm does compile and run here (Ubuntu, 32-bit) |
| 15:21:14 | dbussink | ah ok, nice |
| 15:21:17 | dbussink | and the tests? |
| 15:21:30 | mernen | some tests seem to fail, but anyway it's great to at least get something working |
| 15:21:30 | Defiler | That change should be fine, yeah |
| 15:21:34 | mernen | I haven't looked much at them, though |
| 15:21:55 | Defiler | There are three tests that are known to be failing right now |
| 15:22:20 | mernen | I'm running the tests right now |
| 15:22:27 | Defiler | TestChannel::test_receive_causes_event_block |
| 15:22:37 | Defiler | and then two of the test_send_.. functions in the instruction tests |
| 15:22:56 | anonuser leaves the room. | |
| 15:25:42 | antares enters the room. | |
| 15:25:53 | mernen | http://gist.github.com/4417 |
| 15:25:58 | anonuser enters the room. | |
| 15:26:55 | RyanTM enters the room. | |
| 15:37:27 | bricolage enters the room. | |
| 15:46:27 | BobFunkmmas enters the room. | |
| 15:49:24 | benburkert leaves the room. | |
| 15:50:42 | hemulen leaves the room. | |
| 15:55:08 | lopex enters the room. | |
| 16:01:18 | robin_dewd enters the room. | |
| 16:01:44 | lstoll leaves the room. | |
| 16:02:54 | jgre__ leaves the room. | |
| 16:03:25 | djwonk__ leaves the room. | |
| 16:04:25 | benburkert enters the room. | |
| 16:04:30 | hemulen enters the room. | |
| 16:08:07 | hemulen leaves the room. | |
| 16:14:18 | benburkert leaves the room. | |
| 16:22:37 | nakajima enters the room. | |
| 16:36:31 | BobFunkmmas leaves the room. | |
| 16:48:07 | BlackEdder enters the room. | |
| 16:49:19 | BlackEdder enters the room. | |
| 17:07:59 | pauldix leaves the room. | |
| 17:13:24 | hemulen enters the room. | |
| 17:13:55 | enebo enters the room. | |
| 17:14:03 | brixen | Defiler: what do we know about the rake changes in cpp? |
| 17:15:03 | pauldix enters the room. | |
| 17:15:27 | Defiler | brixen: Which, evan's? |
| 17:16:13 | brixen | well, I suppose these could be from after the cpp branch was made |
| 17:16:24 | brixen | I'm moving mspec.rake and spec.rake over |
| 17:16:41 | brixen | and getting some issues, I'll look more closely |
| 17:17:02 | Defiler | The Rakefile has definitely been heavily modified in the cpp branch |
| 17:17:08 | brixen | rbconfig for one doesn't seem to be sane anymore |
| 17:17:12 | Defiler | You will probably have to re-integrate the other tasks |
| 17:17:17 | brixen | yeah |
| 17:20:29 | Fullmoon enters the room. | |
| 17:26:25 | hemulen leaves the room. | |
| 17:27:05 | hemulen enters the room. | |
| 17:29:14 | benny leaves the room. | |
| 17:46:43 | dgtized | mernen: can you check in that change for VM::raise_from_errno? |
| 17:47:17 | mernen | dgtized: I don't have access to the new repo yet |
| 17:48:30 | dgtized | oh ok, I think I know what the changes are, I'm going to try it and push it since it's breaking 32-bit compat -- barring that, if you want to just format a patch, I can apply it and push it for you so you get credit? |
| 17:49:02 | mernen | sure, just a sec |
| 17:49:18 | CIA-20 | * object_id primitive should return an Integer not uintptr_t; 45b8ee4 - Wilson Bilkovich |
| 17:50:58 | thehcdreamer leaves the room. | |
| 17:53:24 | guitsaru enters the room. | |
| 17:58:58 | mernen | dgtized: http://pastie.org/249296 |
| 18:01:01 | nicksieger leaves the room. | |
| 18:06:54 | edwardam enters the room. | |
| 18:14:56 | octopod leaves the room. | |
| 18:17:16 | nicksieger enters the room. | |
| 18:22:59 | dgtized | well I pushed it but dunno where it went |
| 18:23:08 | evan | it will show up in a sec |
| 18:23:12 | evan | the CIA bots seem to be slow |
| 18:32:51 | mernen | evan, could you give me commit access to the repo? |
| 18:32:53 | mernen | username mernen |
| 18:32:59 | evan | k |
| 18:33:49 | evan | ok, done |
| 18:38:20 | joachimm leaves the room. | |
| 18:38:30 | mernen | thanks |
| 18:39:47 | drbrain | I think we'll need to add the "run only this test" feature to cxxtest |
| 18:39:49 | atduskgreg enters the room. | |
| 18:40:01 | evan | drbrain: agreed. |
| 18:40:04 | drbrain | looking at the rakefile, there's no sane way to do it that won't cause problems later on |
| 18:40:08 | drbrain | or confusion |
| 18:40:10 | evan | drbrain: you want to tackle that? |
| 18:40:21 | evan | you'll have to refresh your perl skills probably |
| 18:40:32 | drbrain | no, it's c++ skills |
| 18:40:40 | evan | but the C++ is generated from perl. |
| 18:40:48 | evan | hopefully you can do it all in C++ |
| 18:40:54 | evan | i guess you probably can |
| 18:40:58 | evan | since the runner is all in C++ |
| 18:41:03 | drbrain | you'd put it in the runner, not the generated code |
| 18:41:16 | drbrain | I'm going to turn my laptop in tomorrow for repair |
| 18:41:23 | evan | ok |
| 18:41:23 | drbrain | so I don't want to start in case I get stuck |
| 18:42:43 | evan | we can discuss that in about 20 minutes |
| 18:42:51 | evan | we could have the call now |
| 18:43:56 | ezmobius enters the room. | |
| 18:44:07 | drbrain | sure |
| 18:44:12 | drbrain | let me open my screen |
| 18:44:19 | benburkert enters the room. | |
| 18:45:01 | nakajima enters the room. | |
| 18:45:20 | Arjen_ enters the room. | |
| 18:49:01 | c0sin enters the room. | |
| 18:51:30 | evan | for anyone interested in checking memory usage of processes in OS X |
| 18:51:48 | evan | be sure to turn on the Private Memory column in Activity Monitor |
| 18:52:16 | evan | that number is how much exclusive heap memory is in use by that process |
| 18:52:42 | BobFunkmmas enters the room. | |
| 18:53:07 | Fullmoon leaves the room. | |
| 19:05:15 | fbuilesv leaves the room. | |
| 19:09:10 | octopod enters the room. | |
| 19:12:41 | thehcdreamer enters the room. | |
| 19:13:28 | thehcdreamer leaves the room. | |
| 19:15:14 | nicksieger leaves the room. | |
| 19:17:44 | headius enters the room. | |
| 19:18:20 | benburkert leaves the room. | |
| 19:18:38 | NoKarma enters the room. | |
| 19:18:52 | benburkert enters the room. | |
| 19:19:06 | evan | ok, i've fixed the memory problem while running tests |
| 19:19:07 | CIA-20 | * Fix memory leak found while running tests; ffcb663 - Evan Phoenix |
| 19:19:15 | NoKarma | hey |
| 19:19:18 | evan | heh |
| 19:19:22 | evan | my timing is awesome. |
| 19:19:22 | evan | :) |
| 19:19:30 | NoKarma enters the room. | |
| 19:19:46 | NoKarma enters the room. | |
| 19:20:07 | blakewatters leaves the room. | |
| 19:26:08 | ezmobius leaves the room. | |
| 19:27:47 | thehcdreamer enters the room. | |
| 19:31:43 | thehcdreamer leaves the room. | |
| 19:34:00 | thehcdreamer enters the room. | |
| 19:37:18 | thehcdreamer leaves the room. | |
| 19:39:28 | blakewatters enters the room. | |
| 19:41:39 | ezmobius enters the room. | |
| 19:44:43 | BobFunkmmas leaves the room. | |
| 19:45:40 | CIA-20 | * Add kernel load index. Try: "rake kernel:build vm; ROOT=runtime vm/vm" to see the kernel load.; b62fcd6 - Evan Phoenix |
| 19:45:53 | evan | ok everyone |
| 19:46:12 | evan | if you want to see a live view of the unhooked up primitives |
| 19:46:23 | evan | run "rake kernel:build vm; ROOT=runtime vm/vm" |
| 19:47:53 | brapse enters the room. | |
| 19:53:05 | edwardam leaves the room. | |
| 19:53:12 | mernen | I get: ./lib/compiler/../compiler/marshal.rb:158:in `marshal': Unknown type: Compiler::Node::ConstAccess (ArgumentError) |
| 19:53:46 | evan | wtf. |
| 19:55:43 | evan | thats... odd. |
| 20:00:28 | Defiler | evan: OK.. so.. I need to refer to 'Float*' as a return type in string.hpp |
| 20:00:38 | chris2 leaves the room. | |
| 20:00:38 | Defiler | but string.hpp doesn't #include float |
| 20:00:42 | evan | Defiler: thats fine |
| 20:00:44 | Defiler | Should I just have it do so? |
| 20:00:46 | evan | just forward decl class Float; |
| 20:00:53 | Defiler | aah |
| 20:01:09 | Defiler | That doesn't need some matching change in the dependency glue? |
| 20:01:18 | thehcdreamer enters the room. | |
| 20:01:38 | evan | Defiler: no |
| 20:01:48 | evan | just in the header is fine |
| 20:01:49 | ezmobius_ enters the room. | |
| 20:02:19 | Defiler | I get this after adding that forward decl: http://gist.github.com/4469 |
| 20:02:34 | evan | ok |
| 20:02:36 | evan | now in string.cpp |
| 20:02:41 | evan | you need to include float.hpp |
| 20:02:49 | Defiler | line 194 is this: return Float::create(state, this->to_double(state)); |
| 20:02:50 | Defiler | aah |
| 20:02:52 | Defiler | I see |
| 20:03:09 | Defiler | Why do we include it in the cpp file and not the header? |
| 20:03:23 | evan | to simplify the dependencies |
| 20:04:02 | evan | the header file isn't actually doing anything with a float |
| 20:04:08 | evan | it's just saying it returns one |
| 20:04:08 | Defiler | OK.. Now I need to make ISSPACE and ISDIGIT available here |
| 20:04:14 | Defiler | (doing string_to_f) |
| 20:04:20 | evan | where actually need to use float is where you include it |
| 20:04:22 | thehcdreamer leaves the room. | |
| 20:04:37 | ezmobius leaves the room. | |
| 20:04:38 | Defiler | and unfortunately those are in the grammar |
| 20:04:48 | Defiler | oh, I see.. also in string.h in shotgun |
| 20:04:49 | evan | the grammar? |
| 20:04:51 | evan | yeah |
| 20:04:53 | evan | just copy them out |
| 20:04:56 | evan | they're just macros |
| 20:05:04 | Defiler | I was looking at the wrong tag hit. |
| 20:05:04 | evan | if they're only used in string.cpp though |
| 20:05:08 | evan | put them in string.cpp directly |
| 20:08:14 | Defiler | Yeah, only in string looks like |
| 20:17:03 | Defiler | evan: Hrm.. inside a ByteArray member function.. if I want to get it back as a char*.. |
| 20:17:10 | Defiler | can't I just do (char*)(this) ? |
| 20:17:32 | atduskgreg leaves the room. | |
| 20:17:51 | evan | no |
| 20:17:55 | antares leaves the room. | |
| 20:18:01 | evan | (char*)this->bytes; |
| 20:18:05 | drbrain | http://rafb.net/p/FuDVrj57.html |
| 20:18:07 | evan | but there is already a method to do that. |
| 20:18:09 | drbrain | is this test sane? |
| 20:18:10 | evan | I think. |
| 20:18:19 | Defiler | I don't think there is in cpp, but I could be wrong |
| 20:18:29 | drbrain | Thread::wakeup() does state->queue_thread(this); |
| 20:18:56 | drbrain | I grabbed the at(0) line from VM::run_best_thread() |
| 20:18:59 | evan | drbrain: sure |
| 20:18:59 | joachimm enters the room. | |
| 20:19:05 | evan | drbrain: i'd refactor it a little though |
| 20:19:15 | evan | go write VM::thread_scheduled_p |
| 20:19:26 | evan | that does the searching of scheduled_threads for ya |
| 20:19:32 | evan | and use that in the test |
| 20:19:32 | drbrain | well, it fails |
| 20:19:44 | drbrain | would we ever use that outside the test? |
| 20:20:15 | evan | seems like we would |
| 20:20:17 | evan | maybe not |
| 20:20:18 | evan | anyway |
| 20:20:24 | evan | thats not what you're asking |
| 20:20:47 | evan | which assertion fails? |
| 20:20:55 | drbrain | empty_p() |
| 20:21:03 | drbrain | so maybe I've got the priority wrong |
| 20:21:18 | octopod leaves the room. | |
| 20:21:20 | evan | could be |
| 20:21:35 | evan | drbrain: a better test is to pass the actual priority of the therad to at() |
| 20:21:47 | drbrain | yeah |
| 20:23:00 | drbrain | 2 is the default priority? |
| 20:23:24 | evan | i'd have to check |
| 20:23:33 | evan | yes |
| 20:23:40 | drbrain | yeah, that seems wrong |
| 20:23:44 | drbrain | in MRI, its 0 |
| 20:23:50 | evan | well |
| 20:23:56 | drbrain | or, is there a reason its 2? |
| 20:23:56 | evan | it's 2 because thats the default in ST |
| 20:24:20 | evan | so that you have a place to put very infrequent threads |
| 20:24:23 | evan | in MRI |
| 20:24:25 | evan | you're already at the bottom |
| 20:24:27 | drbrain | ok |
| 20:27:28 | drbrain | the tests seem to be running faster today |
| 20:27:34 | evan | yeah |
| 20:27:38 | evan | since I fixed the memory leak |
| 20:27:43 | evan | at the end of the tests |
| 20:27:47 | evan | they had 500M private :/ |
| 20:27:48 | evan | before |
| 20:27:57 | drbrain | heh |
| 20:28:07 | drbrain | also, the three failures have disappeared |
| 20:28:13 | evan | yeah |
| 20:28:15 | evan | I fixed them |
| 20:28:19 | evan | with the stack cleanup |
| 20:28:33 | evan | the kind of fixed themselves |
| 20:28:39 | evan | once I had sanitized the stack |
| 20:29:19 | blakewatters leaves the room. | |
| 20:29:39 | Defiler | evan: What do these type strings mean? "uint8_t [0u]", "const char [3]"? |
| 20:29:45 | Defiler | (the part in brackets) |
| 20:29:56 | evan | the size |
| 20:30:16 | evan | i'm guessing the first one is this->bytes |
| 20:30:31 | evan | you need a cast probably |
| 20:31:36 | Defiler | Just thought of an easier way to do this luckily |
| 20:31:52 | Defiler | Trying to get a ByteArray filled with the data of a known string to test against |
| 20:32:28 | evan | you can't just assign to it. |
| 20:32:32 | Defiler | right |
| 20:32:32 | evan | you need to memcpy into it. |
| 20:33:11 | Defiler | For a minute I was thinking SET would let me do it, but then I remember that that is expecting Object* |
| 20:33:36 | evan | no |
| 20:33:39 | evan | thats just assigning it. |
| 20:33:57 | evan | this->bytes isn't something that can be reassigned |
| 20:34:05 | evan | it actually points to the data IN this |
| 20:34:17 | evan | the memory right after the header |
| 20:35:36 | Defiler | Should there eventually be 'at' and 'put' functions on ByteArray, or are we always going to use memcpy? |
| 20:37:31 | evan | thats what get_byte and set_byte are. |
| 20:37:55 | Defiler | Yeah, we don't have those in cpp yet |
| 20:38:03 | octopod enters the room. | |
| 20:38:18 | CIA-20 | * Implement thread_schedule primitive (Thread::wakeup); ba5f77e - Eric Hodel |
| 20:38:21 | CIA-20 | * Test Thread::create; d55999d - Eric Hodel |
| 20:39:21 | CIA-20 | * Implement string_to_f primitive and supporting functions; 07512f3 - Wilson Bilkovich |
| 20:40:27 | evan | ok, lunch. |
| 20:41:41 | CIA-20 | * Correct primitive name in String#tr_expand! error message; 7c10696 - Wilson Bilkovich |
| 20:43:23 | atduskgreg enters the room. | |
| 20:49:34 | blakewatters enters the room. | |
| 20:50:17 | jgre__ enters the room. | |
| 20:50:44 | gramos enters the room. | |
| 20:54:48 | rubuildius_amd64 | Wilson Bilkovich: 7c106960b; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors |
| 20:55:29 | rubuildius_ey64 | Wilson Bilkovich: 7c106960b; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors |
| 21:06:01 | Defiler | brixen: Around? |
| 21:09:29 | antares enters the room. | |
| 21:23:08 | Fullmoon enters the room. | |
| 21:23:40 | jgre__ leaves the room. | |
| 21:25:17 | CIA-20 | * Implement 'string_apply_and' primitive; 1bd22d3 - Wilson Bilkovich |
| 21:27:37 | NoKarma enters the room. | |
| 21:31:32 | brixen | Defiler: whassup? |
| 21:32:09 | Defiler | brixen: Do you know anything about string_apply_and and/or the 'count_table' method in kernel/core/string.rb? |
| 21:32:28 | brixen | yeah |
| 21:33:50 | brixen | I wrote them |
| 21:35:16 | Defiler | Can you explain to me what 'apply_and' is meant for? |
| 21:35:49 | brixen | because you didn't understand the code, or there's a part of the code you don't understand? |
| 21:35:49 | Defiler | I just wrote a cpp version of it, but I was surprised to see that it did 'a[i] = a[i] && b[i]" |
| 21:36:01 | Defiler | instead of a[i] & b[i] |
| 21:36:16 | Defiler | I guess I'm wondering why we needed a primitive for such a specialized case |
| 21:36:18 | brixen | the 2nd is bit & |
| 21:36:23 | Defiler | right |
| 21:36:25 | brixen | the first is logical && |
| 21:36:44 | brixen | that is a port of MRI logic, which is pretty hairy |
| 21:36:47 | Defiler | So it is a no-op except for positions that are \000 in the 'other' string? |
| 21:36:51 | Defiler | That's the whole story? |
| 21:36:54 | brixen | feel free to rewrite and make it as fast |
| 21:37:06 | brixen | yeah, pretty much |
| 21:37:11 | Defiler | port of MRI logic for which method? |
| 21:37:19 | brixen | you're logically and'ing the two tables |
| 21:37:22 | brixen | to see what to translate |
| 21:37:35 | Defiler | OK, so this is more 'tr'-related rigging |
| 21:37:42 | brixen | see where it's used |
| 21:37:51 | Defiler | Hrm. Yeah. |
| 21:38:12 | brixen | it's way way faster than the way we did it before |
| 21:38:18 | Defiler | whoa String#count is wacky |
| 21:38:43 | brixen | yeah, I had to write some edge-case specs in doing that |
| 21:38:46 | Defiler | brixen: Feel like looking at test_apply_and in test_string.hpp? Just to make sure I understood what it was supposed to return. Heh |
| 21:38:52 | brixen | I can find you the region of commits if you want some context |
| 21:39:02 | brixen | I can look at it |
| 21:39:09 | brixen | but first, grabbing a quick bite |
| 21:39:15 | Defiler | Well, I don't need to delve too deeply. I just wanted to make sure we really needed this thing, etc. |
| 21:39:17 | brixen | we'll know for sure as soon as we can run the specs ;) |
| 21:39:19 | Defiler | No hurry |
| 21:39:22 | Defiler | true enough |
| 21:39:44 | brixen | yeah, I'd say given the behavior of count (and methods that use that logic) and tr, that we need it |
| 21:41:51 | moofbong leaves the room. | |
| 21:44:20 | ezmobius_ enters the room. | |
| 21:50:55 | bricolage leaves the room. | |
| 21:52:37 | Fullmoon leaves the room. | |
| 21:54:55 | BobFunkmmas enters the room. | |
| 21:57:10 | Defiler | evan: So, I want a static, overloaded primitive. a la: http://pastie.org/249489 |
| 21:57:24 | Defiler | evan: but field_extract.rb says I can't |
| 21:57:25 | evan | Defiler: NO! |
| 21:57:28 | evan | :D |
| 21:57:46 | evan | either fix field_extract.rb |
| 21:57:51 | evan | or give them different names. |
| 22:00:00 | ezmobius_ leaves the room. | |
| 22:02:33 | Fullmoon enters the room. | |
| 22:02:37 | Defiler | Hrm. Tough call. The shotgun prim for this is hideous because of the conditionals |
| 22:03:57 | headius_ enters the room. | |
| 22:03:57 | headius leaves the room. | |
| 22:04:05 | evan | Defiler: right, thats why the overloading prims exist |
| 22:04:13 | evan | Defiler: feel free to make field_extract smarter |
| 22:05:05 | Fullmoon leaves the room. | |
| 22:07:17 | joachimm | how do I get a coverage report for the c++ vm tests? |
| 22:07:44 | evan | hm, i think it broke recently |
| 22:07:47 | evan | let me fix it |
| 22:07:48 | evan | one sec |
| 22:07:49 | drbrain | resurrect the coverage tasks from history and plug them into rakelib/vm.rake |
| 22:08:02 | Defiler | evan: Is it simply that 'add_static_primitive' never learned about the last arg ('overload')? There's nothing fundamental in the way, right? |
| 22:08:33 | evan | yeah, i didn't add it. |
| 22:08:41 | evan | drbrain: will do |
| 22:08:54 | evan | Defiler: you'll just need another class probably |
| 22:09:02 | evan | thats like the normal overload one |
| 22:09:05 | drbrain | evan: zenspider might have gutted it |
| 22:09:13 | Defiler | Oh yeah I see it |
| 22:09:28 | Defiler | Hrm.. the other flavor of overloading claims to only support single-argument functions |
| 22:09:38 | Defiler | Why is that? |
| 22:09:41 | evan | drbrain: yeah, i think so. |
| 22:10:06 | evan | because handling multiples requires a lot more code |
| 22:10:07 | evan | A LOT. |
| 22:10:19 | evan | if i can get it working, go for it. |
| 22:10:28 | evan | I didn't need it |
| 22:10:31 | evan | and thus didn't implement it |
| 22:10:35 | Defiler | OK |
| 22:11:03 | Defiler | I think what I will do here, in the interest of schedule, is make the primitive map to a function that then calls a more specialized version |
| 22:11:25 | Defiler | As cool as it would be to fix field_generator, it should probably wait until the second time someone wants this |
| 22:11:42 | evan | sure |
| 22:11:55 | evan | just write your static primitive with OBJECT as the last argument |
| 22:11:58 | evan | and use try_as in it |
| 22:12:04 | evan | to dispatch to the proper version |
| 22:12:08 | evan | ie, write it manually for now |
| 22:12:31 | ezmobius leaves the room. | |
| 22:13:29 | Defiler | yep |
| 22:14:07 | octopod leaves the room. | |
| 22:15:15 | Fullmoon enters the room. | |
| 22:15:25 | brixen | Defiler: why are you creating a new BA in apply_and and memcpy'ing into it? |
| 22:15:43 | brixen | that's gonna suck for performance and isn't needed |
| 22:15:50 | brixen | it modifies the contents of the BA in place |
| 22:18:39 | drbrain | hrm, closing a 16GB file shouldn't take this long |
| 22:19:47 | drbrain | oh, the disk is writing out all those zeros |
| 22:19:59 | evan | drbrain: zero's take longer than 1s |
| 22:20:03 | evan | drbrain: you should have made it all 1s |
| 22:20:12 | evan | a 1 is just a straight line |
| 22:20:21 | evan | a 0 is like twice as long |
| 22:20:24 | evan | duh. |
| 22:20:28 | drbrain | do you need to use some other API to make a sparse file? |
| 22:20:40 | evan | i think so. |
| 22:20:42 | blakewatters leaves the room. | |
| 22:20:44 | evan | did you just dd it? |
| 22:20:46 | drbrain | I did a seek 4<<32 and wrote an 'x' |
| 22:21:09 | Defiler | brixen: When I set that part up I guess I didn't realize that the length will never differ from this->size() |
| 22:21:13 | Defiler | brixen: That IS true, right? |
| 22:21:17 | brixen | Defiler: yeah |
| 22:21:31 | drbrain | somebody's OS on ruby-talk has a bug where files > 2GB are negatively sized |
| 22:21:32 | Defiler | then yeah, that is unnecessary |
| 22:21:55 | brixen | Defiler: you should grok how those prims are used relative to your knowledge of how the ruby methods work |
| 22:21:55 | Defiler | evan: How do I fail a primitive that has String* return value signature? |
| 22:22:21 | Defiler | brixen: I don't know anything about this part of the kernel, really |
| 22:22:27 | evan | throw a PrimitiveFailure exception |
| 22:22:43 | brixen | Defiler: k, cus there's lots of edge cases. I'd recommend just copying the code until we can run the specs |
| 22:22:47 | dbussink | drbrain: with rubinius? |
| 22:22:54 | dbussink | drbrain: or mri? |
| 22:22:57 | brixen | Defiler: since #count is interwoven into so many String methods |
| 22:22:58 | Defiler | brixen: code was not applicable to the cpp branch |
| 22:22:59 | drbrain | with ruby |
| 22:23:03 | drbrain | MRI |
| 22:23:15 | brixen | Defiler: sure it is, the kernel of that code is the loop |
| 22:23:20 | dbussink | well, apparently it doesn't use 64 bit file io then |
| 22:23:29 | brixen | Defiler: the other shotgun methods are converted to cpp this->num_butes etc |
| 22:23:31 | Defiler | Are you talking about the primitive code? |
| 22:23:34 | brixen | yeah |
| 22:23:36 | dbussink | i know we use it on darwin, linux and freebsd i think |
| 22:23:42 | dbussink | last one not really sure |
| 22:24:07 | Defiler | rbx_string_as_cstr doesn't exist in the cpp branch |
| 22:24:21 | brixen | Defiler: it's analog does, that's what I'm saying |
| 22:24:21 | Defiler | Which is what got me started on making it fit |
| 22:24:27 | brixen | translate only those parts |
| 22:24:37 | brixen | j |
| 22:24:40 | brixen | er k |
| 22:25:10 | dbussink | brixen: jerk? ;) |
| 22:25:23 | brixen | dbussink: nah :P |
| 22:25:26 | evan | brixen: if you've got a certain way you think those should be done |
| 22:25:31 | evan | please go pair with Defiler |
| 22:25:38 | Defiler | I can't just modify a char* in place after casting a bytearray's ->bytes to it in place, right? |
| 22:25:38 | evan | rather than just use IRC |
| 22:25:46 | Defiler | If I can, then you are right, that is the best way |
| 22:25:52 | evan | Defiler: you can |
| 22:25:54 | Defiler | Hrm. |
| 22:25:56 | evan | when you do |
| 22:26:01 | evan | you're changing the ByteArray |
| 22:26:04 | evan | directly |
| 22:26:30 | Defiler | so I can do: ((char*)string->data->bytes)[0] = blah |
| 22:26:51 | evan | yep |
| 22:27:03 | Defiler | Well that will be easier :) |
| 22:27:20 | evan | just be sure you don't write off the end :) |
| 22:27:46 | brixen | Defiler: I think you got it, but if you want to pair let me know |
| 22:28:15 | codebrulee enters the room. | |
| 22:28:16 | brixen | evan: where's my SEE license? ;) |
| 22:28:22 | evan | oh oh! |
| 22:28:23 | Defiler | I do have this, yeah.. but if you want to pair on something you are working on, that would be fun |
| 22:28:24 | evan | on esec. |
| 22:28:25 | evan | one sec. |
| 22:28:59 | Defiler | hrm.. where is PrimitiveFailure defined? |
| 22:29:01 | brixen | Defiler: I'm working on Hash in cpp, and just started so I don't even know the layout yet |
| 22:29:09 | Defiler | I see references to it, but not its declaration |
| 22:29:36 | imajes enters the room. | |
| 22:29:37 | Defiler | oh, dexc is 'define exception' |
| 22:30:00 | codebrulee leaves the room. | |
| 22:30:09 | evan | brixen: see pm |
| 22:30:12 | codebrulee enters the room. | |
| 22:30:30 | brixen | thanks |
| 22:32:07 | drbrain | maybe HFS+ doesn't properly support sparse files |
| 22:32:17 | evan | drbrain: certainly possible |
| 22:32:23 | evan | drbrain: try on freebsd |
| 22:32:31 | drbrain | I can't create a 1TB sparse file with dd on OS X |
| 22:32:36 | drbrain | can on FreeBSD |
| 22:32:57 | drbrain | "Most modern file systems support sparse files, including most Unix variants and NTFS, but notably not Apple's HFS+" |
| 22:33:17 | evan | ack. |
| 22:34:03 | Defiler | throw new PrimitiveFailure("string_template expects a Fixnum or a String pattern"); |
| 22:34:13 | Defiler | Should that work? I get nasty errors |
| 22:34:42 | Defiler | The first of which is "error: expected type-specifier before ‘PrimitiveFailure’" |
| 22:35:17 | evan | Defiler: you didn't include primitives.hpp |
| 22:35:19 | evan | i'm guessing. |
| 22:35:42 | Defiler | objects.cpp defines PrimitiveFailure |
| 22:35:55 | evan | no it doesn't. |
| 22:35:59 | Defiler | Oh, I need throw new PrimitiveFailure(some_obj, "desc") right? |
| 22:35:59 | evan | it uses it. |
| 22:36:06 | Defiler | GO(exc_primitive_failure).set(dexc(PrimitiveFailure, exc)); |
| 22:36:10 | evan | yeah |
| 22:36:12 | evan | it's USING it. |
| 22:36:21 | Defiler | What? That declares it |
| 22:36:22 | evan | thats wrong anyway. |
| 22:36:25 | evan | no |
| 22:36:29 | evan | who added that? |
| 22:36:31 | Defiler | dexc makes a new PrimitiveFailure class that is a subclass of 'exc' right? |
| 22:36:36 | Defiler | and exc is Exception |
| 22:36:39 | evan | PrimitiveFailure never gets seen. |
| 22:36:50 | evan | Defiler: someone confused the situation. |
| 22:36:52 | Defiler | OK |
| 22:37:02 | evan | it's not THAT PrimitiveFailure at all. |
| 22:37:02 | Defiler | I note that there are no current examples of this exception being used |
| 22:37:08 | evan | that code is wrong. |
| 22:37:15 | evan | Defiler: include primitives.hpp |
| 22:37:19 | evan | and you'll be fine. |
| 22:37:35 | Defiler | k |
| 22:39:02 | Defiler | http://pastie.org/249544 |
| 22:39:10 | Defiler | is what I get after including primitives.hpp |
| 22:39:22 | Defiler | oh duh |
| 22:39:27 | Defiler | it is PrimitiveFailed, not PrimitiveFailure |
| 22:39:42 | evan | oh doh. |
| 22:39:43 | evan | yes. |
| 22:39:46 | evan | my mistake. |
| 22:40:08 | evan | the PrimitiveFailed exception is just so a primitive can communicate with the VM about it's status |
| 22:40:43 | mass | hopefully I just referred a new customer to EY |
| 22:40:51 | ezmobius_ enters the room. | |
| 22:41:18 | Defiler | evan: It yells when I try to pass it a literal string though |
| 22:41:36 | Defiler | http://pastie.org/249548 |
| 22:41:42 | evan | did you check it's signature? |
| 22:41:48 | mass | I just learned today from the gitcasts that git add actually creates a new object in the local repo |
| 22:41:51 | mass | neat. |
| 22:41:57 | evan | Defiler: you need to learn to read headers. |
| 22:41:59 | mass | at first that seemed weird, then it made sense |
| 22:42:02 | evan | Defiler: it doesn't take an argument. |
| 22:42:02 | Defiler | VMException (its parent) has const char* as 'reason' |
| 22:42:06 | Defiler | as an arg |
| 22:42:12 | Defiler | so it should be here too, right? |
| 22:42:36 | evan | it doesn't currently |
| 22:42:36 | evan | no. |
| 22:42:44 | Defiler | Oh right |
| 22:42:45 | Defiler | Assertion |
| 22:42:53 | Defiler | so this needs to subclass Assertion instead of VMException? |
| 22:42:59 | evan | no |
| 22:43:05 | evan | why would it need to be? |
| 22:43:34 | Defiler | Well, that or repeat what Assertion does, right? |
| 22:43:43 | evan | you're not reading the code at all |
| 22:43:45 | evan | it feels like. |
| 22:43:51 | Defiler | I'm looking right at it |
| 22:43:53 | Defiler | so I guess not |
| 22:44:06 | evan | nothing about the usage of PrimitiveFailed indicates it needs or should take an argument. |
| 22:44:46 | evan | where you getting that it should? |
| 22:44:47 | Defiler | What do you mean by 'usage'? |
| 22:44:55 | Defiler | Nothing throws it currently |
| 22:45:40 | guitsaru leaves the room. | |
| 22:46:10 | mass | the exceptions look a little odd |
| 22:47:27 | mass | typically unless you have your heavy code optimization hat on, objects with an inheritance tree need a virtual destructor. |
| 22:49:03 | evan | only if the parents have virtual methods |
| 22:50:19 | AndrewO leaves the room. | |
| 23:00:39 | brapse leaves the room. | |
| 23:03:44 | Maledictus leaves the room. | |
| 23:08:42 | codebrulee leaves the room. | |
| 23:08:55 | drbrain | should Thread::create() queue the thread it creates? |
| 23:09:05 | drbrain | I think that's why my Thread::pass() test isn't working the way I expect |
| 23:09:06 | aotearoa enters the room. | |
| 23:09:09 | drbrain | evan: ^^ |
| 23:09:32 | evan | hm. |
| 23:09:37 | evan | i guess it doesn't |
| 23:09:39 | evan | it can |
| 23:09:41 | evan | thats fine |
| 23:09:48 | evan | i don't really have an opinion |
| 23:09:57 | drbrain | it doesn't seem to in shotgun either |
| 23:10:04 | lopex leaves the room. | |
| 23:10:22 | drbrain | unless it happens in something cpu_thread_new calls |
| 23:10:55 | mernen leaves the room. | |
| 23:11:20 | drbrain | ... no, doesn't seem to at all |
| 23:11:43 | evan | I think i wanted to make it explicit |
| 23:11:45 | evan | rather than implicit |
| 23:11:49 | evan | so you'd create a new thread |
| 23:11:52 | evan | then you'd have to call wakeup |
| 23:11:53 | evan | to queue it |
| 23:12:10 | drbrain | ok, I'll adjust my test instead |
| 23:12:22 | drbrain | changing Thread::create causes failures in Channel |
| 23:13:30 | evan | ok |
| 23:13:39 | Arjen_ leaves the room. | |
| 23:14:55 | fbuilesv enters the room. | |
| 23:16:57 | pauldix leaves the room. | |
| 23:22:00 | edwardam enters the room. | |
| 23:25:28 | drbrain | I think run_best_thread isn't going to work |
| 23:25:52 | evan | not work how? |
| 23:25:54 | drbrain | it picks lower priority threads over higher priority threads (simple fix) |
| 23:26:00 | evan | ah |
| 23:26:00 | drbrain | but doesn't seem to address starvation at all |
| 23:26:02 | evan | probably just a bug. |
| 23:26:06 | evan | yeah |
| 23:26:06 | evan | i know |
| 23:26:12 | evan | again, thats the ST scheduler |
| 23:26:22 | evan | it doesn't address starvation on purpose though |
| 23:26:36 | drbrain | if you have a threads at priority 0, 2 and 2, it'll ping-pong between the two priority 2 threads |
| 23:26:48 | evan | yeah |
| 23:26:49 | evan | i know. |
| 23:26:54 | evan | thats the way the ST scheduler works |
| 23:27:40 | evan | they describe it as "each priority is run only when there are no threads of a higher priority ready" |
| 23:27:55 | drbrain | ok |
| 23:28:25 | drbrain | looks like 1.8 does the same |
| 23:29:30 | drbrain | walks the linked-list of threads, prefering higher priority threads always |
| 23:30:07 | BobFunkmmas leaves the room. | |
| 23:30:41 | evan | yep |
| 23:30:49 | brixen | evan: the CSM stuff for ivars, we want to continue using that, right? |
| 23:30:49 | evan | i've put in a task for us to address starvation |
| 23:30:54 | evan | brixen: yeah |
| 23:31:04 | brixen | evan: so, I can move that to LT, yes? |
| 23:31:14 | drbrain | I think it should be lowest possible priority |
| 23:31:15 | evan | it should already be an LT |
| 23:31:21 | brixen | it's still on Hash |
| 23:31:31 | evan | brixen: yeah, should be an LT |
| 23:31:34 | brixen | k |
| 23:31:48 | evan | drbrain: so not support anything lower than the default? |
| 23:32:17 | drbrain | just leave the algorithm alone |
| 23:32:28 | drbrain | and wait until somebody says "hey, my thread didn't run" |
| 23:32:34 | evan | ok, but those seem like different things |
| 23:32:49 | drbrain | I've never seen anybody set priorities on threads |
| 23:33:03 | evan | true |
| 23:33:06 | evan | sure, whatever ya think. |
| 23:33:50 | drbrain | well, you'll never starve threads of the same priority |
| 23:33:56 | drbrain | only threads of lower priority |
| 23:34:07 | evan | so how does that effect the default being 0 versus 2? |
| 23:34:25 | drbrain | I have no objection to default being 2 |
| 23:34:35 | brixen | evan: do we really need the CSM idea? couldn't we just have Tuple::to_lt (or to_lookuptable) ? |
| 23:34:47 | evan | brixen: thats what it is. |
| 23:34:56 | evan | there is no CSM class |
| 23:35:00 | evan | it's just using a Tuple |
| 23:35:07 | brixen | yeah, but it's weird to have Hash::csm_new |
| 23:35:15 | evan | move it. |
| 23:35:15 | brixen | why not just use a Tuple? |
| 23:35:17 | brixen | k |
| 23:35:21 | evan | it is a tuple |
| 23:35:30 | evan | Hash::csm_new return a Tuple |
| 23:35:34 | evan | it's just named badly. |
| 23:35:54 | evan | there is just CSM logic |
| 23:36:11 | brixen | yeah |
| 23:36:13 | evan | treating a Tuple is a linear key/value pair set |
| 23:36:21 | brixen | yep, but those names are just weird |
| 23:36:24 | evan | s/is/as/ |
| 23:36:29 | evan | brixen: feel free to fix the names |
| 23:36:43 | brixen | why not just have CSM? |
| 23:36:48 | brixen | as a class? |
| 23:37:15 | evan | sure |
| 23:37:20 | evan | we should change the name then. |
| 23:37:24 | brixen | to? |
| 23:37:26 | evan | and expose it |
| 23:37:34 | evan | I'd say CompactLookupTable |
| 23:37:37 | brixen | ok |
| 23:37:55 | evan | should probably be a subclass of Tuple |
| 23:37:56 | mass | evan: the problem is that if you catch a higher level exception, I believe the system will cast it, at which point it calls the parent destructor |
| 23:38:04 | brixen | evan: yeah |
| 23:38:16 | evan | mass: hm, ok. |
| 23:39:28 | ezmobius leaves the room. | |
| 23:40:07 | drbrain | ah, I read run_best_thread() wrong |
| 23:40:12 | drbrain | it has continue, not break |
| 23:40:27 | drbrain | so it walks through all the possible priorities |
| 23:40:32 | mass | the way things currently look, that would happen if you throw Assertion and catch VMException |
| 23:40:46 | drbrain | it should probably go the other way, still |
| 23:41:16 | evan | drbrain: well, while your there, write up some tests for the behavior you think is best and impl. it. |
| 23:41:24 | drbrain | I did |
| 23:41:37 | drbrain | which is how I found I read it wrong :) |
| 23:41:49 | drbrain | I'm going to start from max priority and work down until we find a thread |
| 23:41:55 | drbrain | that will be clearer |
| 23:42:08 | evan | sure |
| 23:47:29 | codebrulee enters the room. | |
| 23:48:50 | CIA-20 | * Add coverage task back in as vm:coverage; bebd2d1 - Evan Phoenix |
| 23:49:02 | evan | joachimm: ok, coverage is back, use 'rake vm:coverage' |
| 23:51:49 | joachimm | evan: great, running now. |
| 23:57:58 | codebrulee leaves the room. | |
| 23:58:04 | botanicus leaves the room. |