00:11:18  * rendarquit (Quit: std::lower_bound + std::less_equal *works* with a vector without duplicates!)
00:18:55  * evanlucasquit (Read error: Connection reset by peer)
00:19:21  * evanlucasjoined
00:25:49  * jgiquit (Quit: jgi)
00:27:14  * jgijoined
00:33:38  * plutoniixjoined
00:37:44  * bobmcwquit (Remote host closed the connection)
00:47:02  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
00:48:12  * ofrobotsjoined
00:53:38  * C-Manquit (Quit: Connection reset by beer)
01:33:15  * watildequit (Remote host closed the connection)
01:38:09  * bobmcwjoined
01:38:09  * bobmcwquit (Changing host)
01:38:09  * bobmcwjoined
01:45:08  * bobmcwquit (Ping timeout: 276 seconds)
02:10:08  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
02:16:12  * ofrobotsjoined
02:26:17  * jgiquit (Quit: jgi)
02:34:52  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
03:17:04  * evanlucasquit (Read error: Connection reset by peer)
03:18:16  * evanlucasjoined
03:28:43  * ofrobotsjoined
03:51:54  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
04:44:57  * plutoniixquit (Quit: จรลี จรลา)
04:53:43  * plutoniixjoined
04:56:44  * jgijoined
04:57:32  * xaxxonjoined
05:09:32  * evanluca_joined
05:10:32  * evanlucasquit (Read error: Connection reset by peer)
05:43:42  <dherman>is there any kind of standard way to extract a Function's FunctionTemplate? if not, I'm wondering what would be the best way to stash it away in a private extra field of the function
05:44:41  <dherman>ah maybe the `data` parameter of FunctionTemplate::New
05:44:44  <caitp>doesn't the api expose an extra_data thing?
05:45:35  <dherman>doh
05:45:36  <dherman>it does
05:45:37  <dherman>but
05:45:40  <dherman>it's a Handle<Value>
05:45:43  <dherman>not a Handle<Data>
05:45:50  <dherman>Template is a subclass of Data but not Value
05:46:32  <dherman>guessing I can probably create an extra object that has the FunctionTemplate as a secret field...
05:46:47  * dhermanhasn't learned all the right v8 terminology for things yet
05:52:21  <caitp>what do you need the template for?
05:52:41  <caitp>i mean, the template associated with an object
05:53:27  <dherman>I need the FunctionTemplate
05:53:37  <dherman>it's a slightly long story... I'll try to keep it short
05:54:02  <dherman>I'm working on Neon, a framework for building Node addons with Rust
05:54:24  <dherman>what I'm working on right now is a safe mechanism for creating custom classes that wrap Rust data
05:55:01  <dherman>in the implementation I need the ability to get access to the FunctionTemplate so I can do template->HasInstance on the `this` binding
05:56:17  <dherman>when I create the class constructor function, I'd like to just stash the FunctionTemplate as the optional `data` parameter to FunctionTemplate#New
05:56:35  <dherman>but the `data` parameter has to be a Handle<Value> so that doesn't work
05:57:25  <dherman>so what I was saying ^^ was that maybe I could allocate an object whose only purpose is to have an internal field that points to the FunctionTemplate, and use that object as the `data` parameter
05:57:48  <dherman>unsure if I'm doing things stupidly... I'm still feeling my way around the v8 api
06:03:29  <caitp>ah I see
06:04:42  <caitp>I think you could use v8::External for that
06:04:59  <caitp>so long as you have some way to safely keep the template alive
06:05:20  <caitp>chromium does some gymnastics like that I think, but I haven't gone over the whole thing
06:05:30  <dherman>according to the docs the template should live for the lifetime of the context
06:06:11  <caitp>you don't need a context to get a Template, though
06:06:26  <dherman>hm, maybe I'm misunderstanding
06:06:36  <dherman>I'm not sure why I need to keep the template alive?
06:07:04  <caitp>well, if you want to reference it later
06:07:52  <caitp>under the hood it's basically just an array with information about properties to add to new objects it creates, and that stuff can disappear if it's not retained
06:08:34  <dherman>but isn't it true that the FunctionTemplate itself should be retained at least as long as one of the functions it created?
06:08:35  <xaxxon>can I use a functiontemplate to create an object the same way it would be created if I had it bound to javascript and new FunctionName was called?
06:09:40  <xaxxon>I'm trying functmpl->InstanceTemplate->newinstance but when I try to set the internal object, it complains that it's out of bounds
06:11:06  <caitp>dherman: I don't think so, afaik they don't retain any reference to the template
06:11:07  <xaxxon>but, I think I'm in a similar boat as dherman which is I don't really understand what templates are used for at "runtime"
06:11:22  <dherman>huh
06:11:43  <caitp>i'm wrong
06:11:59  <dherman>phew! :)
06:12:01  <caitp>so, I guess the template is retained
06:12:56  <dherman>ok
06:13:45  <dherman>looking at v8::External... the thing that worries me here is that I don't know what pointer I can use that's actually stable, since the GC can move things
06:13:55  <dherman>just because the FunctionTemplate is retained doesn't mean it won't be moved
06:14:45  <xaxxon>dherman, isn't that why you wrap it in a local/persistent/global so the GC knows to keep it updated?
06:14:53  <xaxxon>(I'm asking as much as suggesting)
06:15:20  <dherman>yeah I can probably create a persistent, I just need to figure out how to store that in an object
06:15:35  <dherman>I'm not sure External is the right thing as opposed to ObjectTemplate but caitp knows better than me :)
06:15:50  <xaxxon>I make my persistents copyable... but I don't know the side effects of that
06:15:58  <xaxxon>but it seems to work for me
06:16:03  <dherman>well it warns against that :(
06:16:15  <dherman>so many sharp edges...
06:17:54  <caitp>the node guys, or maybe jochen or adam if they get time, are more well versed in the api
06:18:03  <dherman>kk
06:18:25  <dherman>yeah I might hassle adam... he hasn't yet told me to buzz off when I've bugged him for help so far :)
06:18:34  <xaxxon>is the node channel a good place to ask theese types of questions?
06:18:41  <caitp>doubt it
06:18:43  <xaxxon>or do those people come here?
06:18:44  <xaxxon>oh ok
06:19:32  <caitp>I think there would be more people around to answer api questions, if the api were shaped more like JSC's, easier to keep in mind
06:33:34  <xaxxon>is there any way to ask if there is a current scope of some type? like "is there a current isolate scope?"
06:44:28  <xaxxon>I'm so tempted to write a function that takes a closure and just makes every kind of scope and then calls the function. so painful to figure out what needs what
06:48:21  * ofrobotsjoined
06:49:57  * jgiquit (Quit: jgi)
06:56:55  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
07:04:37  * plutoniixquit (Quit: จรลี จรลา)
07:13:13  * plutoniixjoined
07:35:16  * ofrobotsjoined
07:36:07  <xaxxon>idiom
07:36:19  <xaxxon>(oops)
07:40:08  * xaxxonquit (Quit: This computer has gone to sleep)
07:41:09  * rendarjoined
07:42:58  * xaxxonjoined
07:44:04  * watildejoined
07:46:27  * watildequit (Remote host closed the connection)
07:55:49  * mostynbjoined
08:20:22  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
08:28:55  * esasquit (Ping timeout: 245 seconds)
08:59:40  * plutoniixquit (Quit: จรลี จรลา)
09:03:21  * JoWiejoined
09:06:18  <jochen__>dherman: FunctionTemplates are context independent.
09:06:39  <jochen__>xaxxon: the side effect is that your program randomly crashes
09:06:54  <xaxxon>oh
09:07:07  <xaxxon>jochen__, are you referring to making copyable persistents?
09:07:41  <xaxxon>jochen__, if so, how do you store a handle outside of the flow control where you make something for use later?
09:08:06  <jochen__>yes
09:08:08  <xaxxon>and then pass it back in to functions when it's needed.. things like a context
09:08:09  <jochen__>create a new persistent
09:08:14  <jochen__>or move the existing persistent around
09:08:17  <jochen__>just don't copy i
09:08:18  <jochen__>t
09:08:34  <xaxxon>when you say "move it around"... do you mean like std::move it?
09:09:16  <xaxxon>because obviously having it be non-copyable means you can't just send it in as a normal parameter.. won't compile
09:10:28  <jochen__>you can pass a reference to it around
09:10:40  <xaxxon>oh ok
09:10:50  <xaxxon>a reference to the persistent or a reference to the thing it holds?
09:11:01  <xaxxon>errr... I'm guessing the former
09:11:25  <jochen__>to the persistent
09:11:36  <jochen__>actually, you never get a pointer to the thing it holds in the V8 API
09:11:51  <jochen__>operator* on Local<T> is defined as reinterepret_cast<T*>(this)
09:12:03  <xaxxon>ok
09:12:16  <xaxxon>I'll start getting rid of the copyable stuff.. see how it goes
09:13:11  <xaxxon>thank you for your hlep
09:23:59  * plutoniixjoined
09:37:23  <jochen__>yw :)
10:00:06  * davijoined
10:00:06  * daviquit (Changing host)
10:00:06  * davijoined
10:04:20  <xaxxon>jochen__, if I want to have a class that stores off a context, for example, as a data member. what type do I make it? Error messages like this: error: assigning to 'v8::Object *volatile' from incompatible type 'v8::Primitive *' just means I'm trying to copy an uncopyable persistent, right?
10:05:36  <xaxxon>I was trying to use rvalues and such.. but that doesn't seem to be the trick (or I'm doing it wrong)
10:07:20  <jochen__>you'd add a v8::Persistent<v8::Context> context_; as member
10:07:41  <jochen__>when you set it, just use context_.Reset(isolate, some_local);
10:07:48  <xaxxon>oh
10:07:52  <xaxxon>I...
10:08:11  <xaxxon>oh.. it's in PersistentBase
10:08:31  <xaxxon>I was looking at the docs for something like that.
10:09:08  <xaxxon>jochen__, last thing for tonight.. is there a short description of the difference between persistent and global?
10:09:37  <jochen__>Persistent is the deprecated name :)
10:09:47  <xaxxon>I thought global was uniquepersistent
10:09:47  <jochen__>so actually, use v8::Global<v8::Context> context_
10:10:49  <xaxxon>http://v8.paulfryzel.com/docs/master/classv8_1_1_persistent_base.html <== shows them as different classes -- which may be why I'm confused.
10:11:42  <xaxxon>but ok.. so local and global
10:13:16  * daviquit (Ping timeout: 250 seconds)
10:14:14  <jochen__>yeah, sorry about that
10:41:31  * plutoniixquit (Quit: จรลี จรลา)
10:47:23  * bobmcwjoined
10:52:37  * bobmcwquit (Ping timeout: 265 seconds)
11:03:26  <trungl-bot`>Tree closed by [email protected]: Tree is closed (Automatic: "Test262 - no variants" on http://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20debug/builds/7405 "V8 Win64 - debug" from e8e4e920d42f0bb2980e4014fc52bbd4af9bd305: [email protected])
11:04:27  <trungl-bot`>Tree opened by [email protected]: open
11:09:46  * chrisdickinsonquit (Ping timeout: 240 seconds)
11:13:33  * chrisdickinsonjoined
11:20:46  * xaxxonquit (Quit: This computer has gone to sleep)
11:30:07  * Bob_Gneuquit (Read error: Connection reset by peer)
13:23:52  * davijoined
13:27:54  * sxa__quit (Ping timeout: 246 seconds)
13:36:27  * daviquit (Remote host closed the connection)
13:52:01  * plutoniixjoined
13:57:10  * bobmcwjoined
13:57:11  * bobmcwquit (Changing host)
13:57:11  * bobmcwjoined
14:14:09  * sxa__joined
15:06:17  <dherman>jochen__: so am I correct in understanding: 1. a FT exists outside of all contexts 2. It can be multiply instantiated in separate contexts 3. A FT is managed by the GC 4. Each Function instance of the FT keeps the FT alive 5. Each Function instance lives as long as its own Context
15:06:20  <dherman>?
15:35:39  * davijoined
15:40:34  * ofrobotsjoined
15:46:34  * RT|Chatzillaquit (Quit: ChatZilla [Firefox])
15:53:47  * mostynbquit (Quit: -)
15:59:35  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
16:05:51  * BobGneujoined
16:11:47  * ofrobotsjoined
16:21:50  * bnoordhuisjoined
16:34:23  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
16:36:55  * evanluca_quit (Read error: Connection reset by peer)
16:37:54  * evanlucasjoined
16:40:35  * ofrobotsjoined
16:47:28  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
16:56:33  * jgijoined
16:58:22  * ofrobotsjoined
17:01:25  <dherman>aklein: if you have a moment today I had a question for jochen__ ^^ but I suspect he's in munich and it's getting late in the day :)
17:04:55  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
17:05:10  * jgiquit (Quit: jgi)
17:20:03  * ofrobotsjoined
17:21:08  * BobGneuquit (Ping timeout: 276 seconds)
17:29:17  * jgijoined
17:31:37  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
17:32:36  * bnoordhuisquit (Ping timeout: 264 seconds)
17:33:43  * bnoordhuisjoined
17:36:19  * BobGneujoined
17:46:53  * jgiquit (Quit: jgi)
17:50:22  * watildejoined
17:54:51  * xaxxonjoined
17:56:56  * daviquit (Ping timeout: 240 seconds)
17:57:47  * BobGneuquit (Read error: Connection reset by peer)
18:06:46  <dherman>also if anyone could help me understand PersistentBase#MarkIndependent I'd be super grateful
18:07:56  * bnoordhuisquit (Ping timeout: 276 seconds)
18:08:35  * thefourtheye__quit (K-Lined)
18:08:49  * JoWiequit (K-Lined)
18:08:49  * oleavrquit (K-Lined)
18:08:49  * akleinquit (K-Lined)
18:08:49  * dhermanquit (K-Lined)
18:08:49  * Martijncquit (K-Lined)
18:08:49  * iamstefquit (K-Lined)
18:08:49  * meschquit (K-Lined)
18:08:49  * jochen__quit (K-Lined)
18:08:50  * mikolalysenkoquit (K-Lined)
18:08:50  * eseidelquit (K-Lined)
18:08:50  * dagobert______quit (K-Lined)
18:08:50  * mathiasbynensquit (K-Lined)
18:08:51  * arvquit (K-Lined)
18:08:51  * ErikCorry_quit (K-Lined)
18:08:51  * Raynosquit (K-Lined)
18:08:51  * littledan_quit (K-Lined)
18:08:52  * wycatsquit (K-Lined)
18:08:52  * sofquit (K-Lined)
18:08:52  * scottmgquit (K-Lined)
18:10:40  * mikolalysenkojoined
18:12:29  * dhermanjoined
18:12:31  <caitp>dherman: looks GC related
18:13:18  <caitp>so, probably has some impact on whether the object can be moved or collected
18:14:54  * oleavrjoined
18:15:26  * sofjoined
18:15:36  <dherman>caitp: yeah I just can't really make sense of "Garbage collector is free to ignore any object groups containing this object."
18:16:00  * iamstefjoined
18:16:13  <caitp>it looks like Chrome uses it to do some kind of string interning
18:16:20  <caitp>among other things
18:16:41  <dherman>node uses it for ObjectWrap
18:16:50  <dherman>but that doesn't really tell me much
18:17:13  * bnoordhuisjoined
18:17:31  <dherman>bnoordhuis: you might know -- what is MarkIndependent() doing (in particular in ObjectWrap)?
18:17:38  <dherman>PersistentBase#MarkIndependent
18:17:42  * arvjoined
18:18:41  * wycatsjoined
18:18:53  * Raynosjoined
18:19:02  * mathiasbynensjoined
18:19:03  * akleinjoined
18:19:04  * eseideljoined
18:19:41  <caitp>i could probably draw it on a blackboard, but it's hard to describe it based on my reading of the code verbally :(
18:19:51  <caitp>kyle huey did a pretty good job of explaining the pattern in gecko
18:20:03  <dherman>caitp: is there a writeup or a video?
18:20:10  <caitp>I dunno, it was a few years ago
18:21:57  * littledan_joined
18:22:00  * ofrobotsjoined
18:23:07  * thefourtheye__joined
18:24:03  * meschjoined
18:26:26  * ofrobotsquit (Ping timeout: 246 seconds)
18:26:52  * dagobert______joined
18:27:01  * ErikCorry_joined
18:27:26  * Martijncjoined
18:28:20  * scottmgjoined
18:29:40  * ofrobotsjoined
18:30:45  * jgijoined
18:32:00  * jochen__joined
18:34:43  * JoWiejoined
18:39:06  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
18:44:54  * watildequit (Remote host closed the connection)
18:47:17  * plutoniixquit (Quit: จรลี จรลา)
18:50:52  * plutoniixjoined
18:51:11  * ofrobotsjoined
18:54:26  * bnoordhuisquit (Ping timeout: 272 seconds)
18:54:44  * ofrobotsquit (Client Quit)
18:56:04  * ofrobotsjoined
18:56:57  * watildejoined
19:07:02  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
19:33:35  * C-Manjoined
19:41:51  * ofrobotsjoined
19:42:19  * ofrobotsquit (Client Quit)
19:42:25  <aklein>dherman: to your question for jochen__, yes, that's right
19:42:34  * rendarquit (Ping timeout: 272 seconds)
19:42:44  <aklein>dherman: well, except for (5)
19:42:58  <dherman>Oh?
19:43:01  <aklein>dherman: the Function doesn't itself have any special lifetime, it lives as long as there is some reference to it
19:43:05  <aklein>but it does keep its Context alive
19:43:16  <dherman>The embedders' guide says the function lives as long as the context
19:43:19  <aklein>hmm
19:43:21  <aklein>that seems weird
19:43:25  <dherman>Lies eh? ;)
19:44:06  <aklein>if that's what the embedder's guide says, there must be something to it, but I don't know where that reference comes from...let me take a look at the code
19:45:08  <dherman>Maybe it was in API docs actually
19:45:10  <dherman>Searching
19:45:38  <aklein>dherman: ah, I think this is because FunctionTemplate::New only creates a single Function instance for a given context
19:45:42  <aklein>it caches that somewhere
19:46:28  <dherman>There can only be one function created from a FunctionTemplate in a context. The lifetime of the created function is equal to the lifetime of the context. So in case the embedder needs to create temporary functions that can be collected using Scripts is preferred.
19:46:40  <aklein>ok, so (5) is right too
19:46:44  <dherman>^^ http://izs.me/v8-docs/classv8_1_1FunctionTemplate.html
19:46:52  <dherman>Ok :)
19:47:23  <dherman>aklein: any hints about MakeIndependent?
19:47:32  <dherman>Mark*
19:48:23  <aklein>dherman: my initial answer would be "don't worry about it". are you doing anything special with object grouping?
19:48:35  * watildequit (Remote host closed the connection)
19:48:37  * rendarjoined
19:48:40  <dherman>no, nor do I know what that is :)
19:49:08  <dherman>But node's ObjectWrap is a similar abstraction to what I'm doing and uses it, which is why I was nervous I needed to know
19:49:18  <aklein>interesting
19:50:40  <aklein>I wonder if node's just cargo-culting something
19:50:58  <dherman>https://github.com/nodejs/node/blob/master/src/node_object_wrap.h#L65
19:51:01  <dherman>Could be!
19:51:10  <dherman>I'll ignore until things crash ;P
19:52:11  <aklein>yeah, I don't really think it should be needed
19:52:15  <aklein>in the basic case
19:52:24  <aklein>I assume you're just trying to keep your FunctionTemplate alive?
19:53:09  * watildejoined
19:53:10  <dherman>I'm just trying to keep a weak reference to it
19:53:15  <dherman>Not even trying to keep it alive
19:53:25  <dherman>Its instance will keep it alive
19:53:35  <aklein>right, right
19:54:04  * bnoordhuisjoined
19:54:16  <caitp>that caught me by surprise, I didn't realize maps held onto the template
19:54:40  <dherman>Maps?
19:55:06  <aklein>dherman: 3.5 years ago MarkIndependent was required to let Persistents be cleared during minor GCs
19:55:12  <aklein>https://bugs.webkit.org/show_bug.cgi?id=91251
19:55:17  <aklein>maybe still true?
19:55:20  <aklein>seems like a micro-opt
19:55:33  <aklein>unless you have a _lot_ of short-lived FunctionTemplates :)
19:56:12  <aklein>dherman: depending on what you're doing, you could also use Function::New(), which doesn't do any caching (and doesn't require holding on to a FunctionTemplate)
19:59:18  <dherman>Nah I want FT
19:59:37  <dherman>Many thx!
19:59:52  <caitp>it sounds like this is about generating bindings for servo or something
20:00:27  <dherman>Ah, no, this project is independent of servo
20:00:32  <caitp>ah
20:00:43  <dherman>This is for node programmers to be able to use Rust to write native modules
20:00:56  <caitp>oh, that's cool
20:01:22  <dherman>My first personal big rust project, I'm having a blast
20:18:29  * ofrobotsjoined
20:41:17  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
20:53:19  <trungl-bot`>Tree closed by [email protected]: Tree is closed (Automatic: "Check" on http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug/builds/4738 "V8 Linux - nosnap - debug" from c52f5ced4e600a57c02301f2936b80f086613985: [email protected])
21:02:22  <trungl-bot`>Tree opened by [email protected] (:aklein): Tree is open
21:09:10  <aklein>caitp: based on your mail about Object.values/entries, are you looking for random v8 work to do? I'd be happy for a hand with the Function.name stuff if you're looking for small tasks...
21:09:58  <caitp>yeah, that would be great
21:10:13  <aklein>also I think you have more of how assignment works in your head right now
21:11:11  * jgiquit (Quit: jgi)
21:11:13  <aklein>the two still-missing static cases I'm aware of are in AssignmentExpression and in AssignmentProperty (defaults in binding and assignment patterns)
21:13:35  * bnoordhuisquit (Ping timeout: 240 seconds)
21:19:44  <caitp>CoverInitializedName should be simple enough
21:21:20  <caitp>are those IsIdentifierRef predicates for those steps new? I don't remember those there before
21:22:34  <caitp>because it looks like the only slow case left are computed property name MethodDefinitions
21:24:32  <caitp>well computed property names in general
21:25:41  <caitp>ahh nope, I guess there's still the AssignmentProperty slow case
21:36:12  <aklein>caitp: have a link to what you mean by "AssignmentProperty slow case"?
21:36:37  <aklein>computed property names were the only places I was aware of where we don't know at parse time what the name is
21:37:40  <caitp>i was probably misreading it
21:37:52  <caitp>the IsIdentifierRef predicate is pretty ubiquitous
21:42:56  * ofrobotsjoined
21:44:34  * xaxxonquit (Quit: This computer has gone to sleep)
21:46:36  * davijoined
21:46:36  * daviquit (Changing host)
21:46:36  * davijoined
21:47:39  * bnoordhuisjoined
21:47:55  * jgijoined
21:52:22  * bnoordhuisquit (Ping timeout: 265 seconds)
21:53:19  * xaxxonjoined
21:53:32  * daviquit (Ping timeout: 250 seconds)
22:03:38  * bobmcwquit (Remote host closed the connection)
22:05:45  <dherman>hm, so jochen__ said earlier that Persistent is deprecated and you should always use Global, but nan is treating Global as UniquePersistent
22:08:42  <dherman>yeah, using Nan::Persistent works for my case. guess I'll just hope that isn't going to disappear :/
22:17:52  * bnoordhuisjoined
22:25:08  * bnoordhuisquit (Ping timeout: 246 seconds)
22:31:36  * RT|Chatzillajoined
22:36:23  * esasjoined
22:44:31  <aklein>caitp: I noticed while reading the tests again the computed property names provide a sad test case: if the computed property of a static class method ends up as "name", we need to _not_ overwrite it. I feel like we already have another bug about this somewhere...
22:46:16  * ofrobotsquit (Quit: My Mac has gone to sleep. ZZZzzz…)
22:47:48  <aklein>maybe this already works
22:48:00  <aklein>d8 -e 'var n = "name"; class Foo { static [n]() { return 42 } }; print(typeof Foo.name)'
22:48:07  <aklein>that prints function
22:56:29  * bnoordhuisjoined
22:59:12  * ofrobotsjoined
23:00:53  * ofrobotsquit (Client Quit)
23:01:12  * bnoordhuisquit (Ping timeout: 255 seconds)
23:02:24  * ofrobotsjoined
23:04:04  * bobmcwjoined
23:06:27  * ofrobotsquit (Client Quit)
23:06:44  * bobmcw_joined
23:07:37  * bobmcwquit (Remote host closed the connection)
23:07:38  * bobmcw_quit (Remote host closed the connection)
23:15:57  * BobGneujoined
23:18:34  * ofrobotsjoined
23:43:08  * jgiquit (Quit: jgi)
23:44:09  * jgijoined
23:49:25  * C-Manquit (Quit: Connection reset by beer)
23:59:42  * JoWiequit (Quit: Connection closed for inactivity)