00:07:04
| * Jarvix__ | joined |
00:07:56
| * Jarvix | quit (Ping timeout: 245 seconds) |
00:07:57
| * Jarvix__ | changed nick to Jarvix |
00:26:35
| * temp01 | quit (Ping timeout: 248 seconds) |
00:33:07
| * temp01 | joined |
00:56:31
| * nierob_ | quit (Read error: Operation timed out) |
00:56:55
| * nierob_ | joined |
01:07:01
| * c4milo | quit (Remote host closed the connection) |
01:10:58
| * iamdustan | joined |
01:25:47
| * c4milo | joined |
01:28:03
| * temp01 | quit (Ping timeout: 245 seconds) |
01:30:39
| * temp01 | joined |
01:39:42
| * abraxas | joined |
01:58:21
| * carif | quit (Ping timeout: 245 seconds) |
02:28:12
| * temp01 | quit (Read error: Connection reset by peer) |
02:32:07
| * temp01 | joined |
02:35:41
| * temp01 | quit (Client Quit) |
02:36:08
| * temp01 | joined |
02:41:23
| * Jarvix | quit (Quit: Jarvix) |
02:54:51
| * carif | joined |
02:54:53
| * carif | quit (Client Quit) |
03:08:49
| * bryceco | joined |
03:17:22
| * bryceco | quit (Quit: bryceco) |
04:47:04
| * jaseemabid | joined |
05:10:37
| * c4milo | quit (Remote host closed the connection) |
05:32:31
| * soluble | joined |
05:45:16
| * xan___ | joined |
05:45:28
| * xan_ | quit (Ping timeout: 240 seconds) |
05:49:51
| * Petka | joined |
05:51:33
| * Petka | part |
06:00:37
| * bryceco | joined |
06:00:46
| * bryceco | quit (Client Quit) |
06:11:09
| * bnoordhuis | joined |
06:26:11
| * c4milo | joined |
06:39:32
| * jaseemabid | changed nick to jas|work |
06:58:31
| * Lethalman | joined |
06:58:55
| * [[zzz]] | quit (Ping timeout: 256 seconds) |
07:00:01
| * [[zzz]] | joined |
07:01:15
| * soluble | quit (Ping timeout: 260 seconds) |
07:32:55
| * c4milo | quit (Remote host closed the connection) |
07:59:30
| * bnoordhuis | quit (Ping timeout: 264 seconds) |
08:15:24
| * bnoordhuis | joined |
08:25:48
| * bnoordhuis | quit (Ping timeout: 240 seconds) |
08:28:08
| * temp01 | quit (Ping timeout: 240 seconds) |
08:33:02
| * jas|work | quit (Ping timeout: 240 seconds) |
08:40:54
| * bnoordhuis | joined |
08:53:48
| * [[zzz]] | changed nick to [[zz]] |
08:57:40
| * stalled | quit (Read error: Connection reset by peer) |
09:07:33
| * stalled | joined |
09:41:47
| * RT|Chatzilla | quit (Read error: Connection reset by peer) |
09:41:55
| * jas|work | joined |
09:42:36
| * RT|Chatzilla | joined |
09:48:21
| * bnoordhuis | quit (Ping timeout: 245 seconds) |
10:06:19
| * bnoordhuis | joined |
10:20:04
| * Jarvix | joined |
10:22:55
| * bnoordhuis | quit (Ping timeout: 256 seconds) |
10:51:13
| * abraxas | quit (Remote host closed the connection) |
11:09:22
| * bnoordhuis | joined |
11:31:02
| * iamdustan | quit (Ping timeout: 240 seconds) |
11:44:30
| * bnoordhuis | quit (Ping timeout: 252 seconds) |
11:59:02
| * Net147 | joined |
12:05:28
| * stalled | quit (Ping timeout: 260 seconds) |
12:11:40
| * matjas | quit (Ping timeout: 245 seconds) |
12:11:51
| * sanjoyd | quit (Ping timeout: 245 seconds) |
12:15:49
| * spolu | joined |
12:23:21
| * spolu | quit (Ping timeout: 245 seconds) |
12:24:15
| * stalled | joined |
12:35:17
| * iamdustan | joined |
12:40:46
| * matjas | joined |
13:16:33
| <aboudreault> | Can I modify the ref counter of an object? |
13:17:44
| <aboudreault> | or maybe the External() class takes care of that too. |
13:29:24
| <Jarvix> | refcount? no, is implementation detail |
13:29:29
| <Jarvix> | what do you want to achieve? |
13:40:01
| * soluble | joined |
13:40:42
| * temp01 | joined |
13:55:24
| <Jarvix> | aboudreault: ping ^ |
13:55:42
| <aboudreault> | Jarvix, sorry.. haven't seen your message. |
13:57:41
| <aboudreault> | In fact, I'm exposing an internal object through SetInternalField. This object has a function, which return a member of that internal object. So, I wrap it and return it. However, if my first object (shapeObj) gets deleted by the GC.... I'll probably get a segfault if I try to use the other object (lineObj) |
13:58:09
| <aboudreault> | so, if someway, I need to say to V8 that my new object is a children of my first object. |
13:58:38
| <aboudreault> | I'm currently doing a simple test ... http://pastebin.ca/2460769 |
14:01:10
| <aboudreault> | here we go. just reproduced what I expected. |
14:02:07
| <aboudreault> | msV8Print: 1 |
14:02:07
| <aboudreault> | msV8WeakObjectDeleted: yeahhhh |
14:02:07
| <aboudreault> | msV8Print: 28670080 |
14:02:19
| <aboudreault> | the 1 is the correct value. |
14:02:40
| * temp01 | quit (Ping timeout: 246 seconds) |
14:03:37
| * temp01 | joined |
14:03:57
| * temp01 | quit (Read error: Connection reset by peer) |
14:05:58
| <Jarvix> | Ehm, and the C++ code you wrote for this? |
14:07:00
| <Jarvix> | I actually don't know much about the C++ Memory Management. I had to work with ObjC MM when storing my objects inside V8 |
14:07:34
| <aboudreault> | http://pastebin.ca/2460771 |
14:08:02
| * sanjoyd | joined |
14:08:06
| <aboudreault> | I don't think it is related to C++ MM and ObjC MM neither. but really to v8 GC |
14:08:33
| <Jarvix> | >I< had to work with ObjC MM, You Wont, because YOu don't use Objective-C :P |
14:08:55
| <Jarvix> | Anyways, first, go update V8 and fix all errors that will come up |
14:08:57
| <aboudreault> | this is not what I said |
14:09:01
| * soluble | quit (Ping timeout: 256 seconds) |
14:09:18
| <aboudreault> | what errors? |
14:09:28
| <aboudreault> | there is no errors |
14:09:31
| <Jarvix> | In i think 3.20, a lot of changes have been made |
14:09:57
| <Jarvix> | you should update the v8 library and due to the changes, you will have errors :P |
14:10:34
| <aboudreault> | I'm using 3.19 and pretty sure what I'm trying to accomplish is not a bug, but something I have to handle in my code |
14:10:56
| <Jarvix> | me too. But you should still update :) |
14:11:03
| <Jarvix> | Anyways, lets read the code... |
14:11:42
| <aboudreault> | I don't want to update. I've just pushed a first version of what I am doing. many people will try it with 3.19 |
14:11:50
| <aboudreault> | will update in a few months maybe. |
14:12:24
| <Jarvix> | in a few months? :o |
14:12:39
| <aboudreault> | 3.19 is not old. |
14:12:42
| <Jarvix> | 3.19 is already 4 months old :) |
14:12:56
| <aboudreault> | this is not old, but stable and safe. |
14:13:17
| <aboudreault> | if 3.20 come up with too many api changes, I'm stuck |
14:13:47
| <Jarvix> | A lot of changes yes :) mainly in Persist and the callbacks. Arguments is removed. |
14:15:14
| <Jarvix> | what is the type of lineObj? Is that a class? |
14:15:23
| <aboudreault> | it's a C struct |
14:15:32
| <aboudreault> | so, in that case, yes a C++ class. |
14:15:35
| * bnoordhuis | joined |
14:15:37
| <Jarvix> | ah! |
14:15:37
| * matjas | quit (Ping timeout: 246 seconds) |
14:15:49
| * hackygolucky_ | quit (Ping timeout: 256 seconds) |
14:15:58
| * Alex_Gaynor | quit (Ping timeout: 256 seconds) |
14:16:11
| <Jarvix> | And is there only 1 place you free the object? in the weak callback? |
14:16:24
| <Jarvix> | bnoordhuis: current recommended v8 version is 3.20 right? |
14:16:38
| <Jarvix> | and hi :P |
14:16:43
| <aboudreault> | yes the weak callback is the only destructor. |
14:17:02
| <Jarvix> | tried logging when it was called by v8? |
14:17:02
| * sanjoyd | quit (Ping timeout: 240 seconds) |
14:17:18
| <aboudreault> | yes, that's what I pasted |
14:17:43
| <Jarvix> | ah, ok, i understand the problem. |
14:18:22
| * soluble | joined |
14:19:15
| * soluble | quit (Max SendQ exceeded) |
14:21:13
| * soluble | joined |
14:21:59
| * soluble | quit (Max SendQ exceeded) |
14:22:48
| * soluble | joined |
14:23:03
| <bnoordhuis> | Jarvix: probably 3.21.x |
14:23:32
| <Jarvix> | Ok. I was trying to convince aboudreault to update van 19 to 20/21 |
14:23:51
| * soluble | quit (Max SendQ exceeded) |
14:24:22
| * soluble | joined |
14:24:29
| <aboudreault> | bnoordhuis, this is what I'm trying to do: http://pastebin.ca/2460779 |
14:24:45
| <aboudreault> | Jarvix, Everythingg willl break :P |
14:25:12
| <aboudreault> | Jarvix, I would prefer to finish what I'm currently doing and plan my upgrade later this month then. |
14:25:13
| * soluble | quit (Max SendQ exceeded) |
14:25:39
| <Jarvix> | aboudreault, I think you have too few strong references |
14:26:01
| <Jarvix> | a weak reference does not keep an object alive. That's the property of a 'weak' reference |
14:26:18
| <Jarvix> | aboudreault: fair enough |
14:26:40
| <aboudreault> | a weak object won't get deleted unless everything in javascript reference it. |
14:27:02
| <aboudreault> | that said, my line SHOULD reference of be linked somehow to it. since it's its children |
14:27:18
| <Jarvix> | the contents of a weak reference is cleared when the object is deleted. an object is deleted when it had no strong references anymore |
14:27:18
| <aboudreault> | *should reference it of be linked* |
14:27:46
| <aboudreault> | that is. I need a strong reference of the shape object in my line object |
14:27:49
| <Jarvix> | as you store void pointers in External, no GC information is known about it, and thus it is no reference at all, according to the GC |
14:28:07
| <aboudreault> | yep, I understand that. |
14:28:23
| <Jarvix> | if a shape owns the line, the shape needs a strong reference to the line, at least |
14:28:28
| <Jarvix> | so when the shape is deleted, the line is too |
14:28:50
| <Jarvix> | if you hold a strong ref to the line, and the shape is deleted, the line will not be deleted (as there is another strong ref) |
14:28:54
| <aboudreault> | how can I accomplish that? |
14:29:17
| <aboudreault> | I understand the problematic. |
14:29:19
| <Jarvix> | I only use weak references to bind between an ObjC object (C in your case) and a V8 object. Weakly |
14:29:38
| <Jarvix> | you could store the handle value inside the object |
14:30:22
| <Jarvix> | so like this: v8::Handle<v8::Array> myArray = v8::Array::New(); then add all line v8 objects to the array. object->SetHiddenValue(0,myArray); |
14:30:35
| <Jarvix> | myArray->Set(0,myV8LineObjectWrapper); |
14:30:50
| <Jarvix> | then the shape contains an array of strong references to the lines |
14:31:11
| <Jarvix> | Disclaimer: Methinks |
14:31:16
| <aboudreault> | and it won't get deleted as long as my line variable is alive? |
14:31:43
| <aboudreault> | Let me try this. |
14:31:45
| <Jarvix> | Eeh |
14:32:39
| <aboudreault> | ? |
14:32:41
| * Net147 | quit (Quit: HydraIRC -> http://www.hydrairc.com <- In tests, 0x09 out of 0x0A l33t h4x0rz prefer it :)) |
14:32:46
| <Jarvix> | Maybe you should make a strong reference from line to shape instead. Then you can also use the GetLine to make the line objects, when you need them |
14:33:21
| <aboudreault> | Ok. let try this way. My children will keep a strong reference to its parent. |
14:33:28
| <aboudreault> | doing it now. |
14:33:31
| <Jarvix> | yeap |
14:34:39
| <Jarvix> | I think you should imagine it this way: if you would take a string from a C++ object, and go out of scope of the object by returning the string from the current function, you would not lose the string, but you will lose the stack allocated object you got the string from. Hence whats happening now. |
14:35:13
| <Jarvix> | good luck :D |
14:35:21
| <Jarvix> | memory management is a PITA, always |
14:35:48
| <aboudreault> | yes, I understand that. However first time I play with that using V8. In my PHP extension, I was able to simply modify the ref counter of the GC for all needed parents |
14:36:52
| <Jarvix> | When was this? |
14:37:19
| <aboudreault> | when what? not sure of the point :) |
14:37:39
| <Jarvix> | when did you play with v8 and could change that? 8 months ago? 9? 5? |
14:37:58
| <aboudreault> | *In my PHP extension* |
14:38:05
| <aboudreault> | PHP binding extension |
14:38:39
| <Jarvix> | not where, when? What V8 version did you use back then? :P |
14:39:12
| <aboudreault> | what the hell are you saying? lol. There was no V8 at all. |
14:39:38
| <Jarvix> | ooh :s |
14:39:49
| <Jarvix> | so you are comparing the GC of PHP with the GC of V8? |
14:39:58
| <aboudreault> | yes |
14:40:02
| <Jarvix> | And you think that makes sense? :P |
14:40:29
| <aboudreault> | damn |
14:41:05
| <aboudreault> | I JUST mentionned how I handled the same situation in another similar case. |
14:41:16
| <aboudreault> | it's heavy to talk with you.. |
14:41:20
| <aboudreault> | getting tired. |
14:41:21
| <aboudreault> | :) |
14:42:01
| <Jarvix> | :P sorry |
14:42:08
| <Jarvix> | I am just trying to understand you :P |
14:42:22
| <aboudreault> | no *I* am. |
14:42:28
| <aboudreault> | was very simple to follow. |
14:42:35
| * hackygolucky__ | joined |
14:42:39
| * Alex_Gaynor | joined |
14:42:53
| <bnoordhuis> | aboudreault: it is kind of an apples/oranges comparison though |
14:42:58
| * soluble | joined |
14:43:30
| <aboudreault> | bnoordhuis, yes and no. We have been able to use a method like IncrementReference(). |
14:43:43
| <aboudreault> | which is exactly what keeping a strong reference as member is doing. |
14:43:49
| <Jarvix> | You can't be surprised that you can't change the refcount in PHP and not in V8 :) |
14:44:21
| * c4milo | joined |
14:44:35
| <Jarvix> | I am looking at PHP GC and I don't think they have a notion of Strong and Weak at all. |
14:44:38
| <aboudreault> | Jarvix, I *can* in PHP. that why |
14:44:44
| <bnoordhuis> | well... a strong persistent handle is an artificial gc root. reference counting is, well, reference counting |
14:44:48
| <aboudreault> | I asked this initially. |
14:45:08
| <aboudreault> | any, I'm tring the solution now. |
14:45:12
| <aboudreault> | *anyway* |
14:45:49
| <aboudreault> | bbl meeting. |
14:47:58
| <Jarvix> | bnoordhuis would this be a similar comparison: 'Why can't I drive through the tunnel with this 3m high truck? I could with my Minicooper!' :P |
14:51:28
| * matjas | joined |
15:12:49
| <aboudreault> | Jarvix, worst comment ever. |
15:13:49
| <Jarvix> | dunno. I think it compares :) |
15:13:59
| <Jarvix> | Anyways, any luck with the strong refs? |
15:15:29
| <aboudreault> | it'll work, don't worry. continue your work. Won't disturb you anymore :) |
15:16:06
| <Jarvix> | I've been working all along ;) |
15:17:11
| * ctruta | joined |
15:20:59
| <Jarvix> | Mm, interesting, it seems like every release note contains 'Performance and stability improvements on all platforms' |
15:22:19
| <bnoordhuis> | it's a long-winded way of saying 'assorted bug fixes' |
15:29:34
| <Jarvix> | bnoordhuis: who managed the github v8 repo? Who could I ask for a commit/push hook? |
15:32:45
| <bnoordhuis> | Jarvix: any v8 team member, i think |
15:32:46
| * RT|Chatzilla | quit (Quit: ChatZilla 0.9.86.1 [Firefox 2.0.0.22pre/2009081014]) |
15:33:06
| <Jarvix> | Thought so. Ill use the ML then. |
15:33:17
| <Jarvix> | Thinking about running a continuous docs site |
15:34:11
| <bnoordhuis> | Jarvix: you could set up a script that does a pull every hour or so |
15:34:16
| <Jarvix> | that shows docs for all (limited to 30 or so ago) and updates when a hook comes in |
15:34:30
| <Jarvix> | yeah could do. |
15:36:22
| <Jarvix> | but with the post-receive-hook, i could see directly if the include/*.h files changed. And if not, ignore the commit (or do some version categorising magic) |
15:37:54
| * jas|work | quit (Ping timeout: 264 seconds) |
15:45:47
| <Jarvix> | you think an auto-updated docsite for v8 would be useful? |
15:47:17
| <bnoordhuis> | Jarvix: well, maybe at release boundaries. probably not for every commit though |
15:47:37
| <bnoordhuis> | real men (and women) just use the source though |
15:47:40
| <Jarvix> | yeah, for --tags (are mostly daily) |
15:47:53
| <Jarvix> | it will reference to the headers |
15:48:53
| <Jarvix> | yeah, but v8.h is one big shitfile with every class rammed into it. Instead of nice header-per-class(group) |
15:49:22
| <Jarvix> | AND with doxygen, doc errors show up way easier :D |
15:49:40
| <bnoordhuis> | i guess that's true. v8.h's never bothered me though |
15:49:52
| <bnoordhuis> | it's the tip of the iceberg really |
15:51:30
| <Jarvix> | i never look beyond the v8*.h files |
15:51:39
| <Jarvix> | I am just an embedder |
15:51:56
| * spolu | joined |
15:52:52
| <bnoordhuis> | me too but i still like to know how stuff works |
15:53:39
| <bnoordhuis> | okay, enough merry banter - time for dinner |
15:57:49
| <Jarvix> | wow, a real 6PM eater :O Even at my parents I have dinner at ~7PM |
15:57:57
| * bnoordhuis | quit (Ping timeout: 240 seconds) |
16:00:28
| <soluble> | Where's MaybeObject defined? |
16:12:53
| * Lethalman | quit (Ping timeout: 248 seconds) |
16:14:53
| * sanjoyd | joined |
16:23:23
| * temp01 | joined |
17:04:17
| * juanjosanchez | joined |
17:11:30
| * soluble | quit (Ping timeout: 264 seconds) |
17:26:36
| * spolu | quit (Ping timeout: 260 seconds) |
17:28:32
| * c4milo | quit (Remote host closed the connection) |
17:46:39
| * juanjosanchez | quit (Ping timeout: 260 seconds) |
17:59:03
| * hackygolucky__ | changed nick to hackygolucky_ |
18:11:39
| * bnoordhuis | joined |
18:36:19
| * iamdustan | quit (Quit: Lost terminal) |
18:36:33
| * xan___ | quit (Quit: leaving) |
18:36:54
| * iamdustan | joined |
18:41:19
| * c4milo | joined |
19:08:48
| * temp01 | quit (Ping timeout: 260 seconds) |
19:10:55
| * temp01 | joined |
19:20:58
| * tabbott__ | joined |
19:21:09
| * bnoordhuis | quit (Ping timeout: 248 seconds) |
19:21:58
| * Vbitz_ | joined |
19:27:21
| * Vbitz | quit (*.net *.split) |
19:27:22
| * tabbott_ | quit (*.net *.split) |
19:49:13
| * Vbitz_ | changed nick to Vbitz |
20:11:10
| * iamdustan | quit (Remote host closed the connection) |
20:23:12
| * iamdustan | joined |
20:31:52
| * bnoordhuis | joined |
21:00:13
| * ctruta | quit (Ping timeout: 246 seconds) |
21:12:07
| * iamdustan | quit (Ping timeout: 246 seconds) |
21:17:47
| * bnoordhuis | quit (Ping timeout: 240 seconds) |
21:20:31
| * carif | joined |
21:42:19
| * carif | quit (Read error: Operation timed out) |
21:54:24
| * bnoordhuis | joined |
22:23:22
| * RT|Chatzilla | joined |
22:25:43
| * bnoordhuis | quit (Ping timeout: 260 seconds) |
22:41:10
| * Jarvix | quit (Ping timeout: 240 seconds) |
22:47:22
| * carif | joined |
22:48:28
| * c4milo | quit (Remote host closed the connection) |
23:01:15
| * carif | quit (Read error: Operation timed out) |
23:06:36
| * temp01 | quit (Read error: Connection reset by peer) |
23:08:36
| * [[zzz]] | joined |
23:10:29
| * [[zz]] | quit (Ping timeout: 248 seconds) |
23:11:25
| * temp01 | joined |
23:58:30
| * carif | joined |