Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
gsg
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
19 ms
·
121.
▲
by
gsg
12y ago
I'm saying that argument is wrong, because there is no efficiency loss due to different insertion orders mapping to the same hidden class. In fact there are efficiency advantages because more objects would pass through class-based guar
122.
▲
by
gsg
12y ago
I don't think your explanation makes much sense. Hidden classes describe the layout of objects: if two insertion orders produced the same hidden class, it would mean they have the same layout, with the same fixed field offsets. The onl
123.
▲
by
gsg
12y ago
> only a side effect of the standard hidden class optimization, not because there was intention of having a certain order Do you have a reference for this? I clearly recall a Lars Bak interview in which he says that adding a property .x
124.
▲
by
gsg
12y ago
Yep. I remember seeing a presentation by one of the graphics engine shops that indicates they did the same thing. (I'll see if I can dig it up...) Edit: it was DICE, see http://www.slideshare.net/DICEStudio/executa
125.
▲
by
gsg
12y ago
Itanium style not-a-thing constructs might be interesting for that. Not-a-thing is basically a tagging scheme where the contents of registers are extended with a bit indicating whether the value is valid or not. Arithmetic operations on a N
126.
▲
by
gsg
12y ago
Not to mention Swift. FTL has already precipitated other interesting changes in LLVM (to support deoptimisation and GC).
127.
▲
by
gsg
12y ago
Ah, a clear instance of http://blogs.msdn.com/b/oldnewthing/archive/2011/01/26/10120...
128.
▲
by
gsg
12y ago
If you haven't already, follow the 'index' link (to http://yarchive.net/comp/index.html ) and bookmark that. Some very worthwhile reading there.
129.
▲
Periodic table of the loop macro
(i.imgur.com)
3 points
by
gsg
12y ago
|
0 comments
130.
▲
by
gsg
12y ago
The only reason things happening out of order is invisible is because implementors jump through the kinds of hoops described in the article. One way to understand the requirement for deoptimization is to to think about where the programmer
131.
▲
by
gsg
12y ago
Interesting article. I'm writing a toy trace compiler at the moment and implementing side exits brings up many of the same, rather irritating problems.
132.
▲
by
gsg
12y ago
Bounds checking is "essentially" binary instrumentation? That's an... interesting claim.
133.
▲
by
gsg
12y ago
I'm reminded a little of Guy Steele's talk, "Organizing Functional Code for Parallel Execution; or, foldl and foldr Considered Slightly Harmful" ( http://vimeo.com/6624203 ).
134.
▲
by
gsg
12y ago
It's true that whole program compilation doesn't cover speculation (and many other cases of dynamicism, like running code that you download or construct at runtime). But it does allow inlining through a function pointer as in the
135.
▲
by
gsg
12y ago
That's not really true - it's just (possibly partial) defunctionalisation. The problem isn't that we don't know how to do it, but that the necessary whole program architecture has various drawbacks. See Stalin and MLton
136.
▲
by
gsg
12y ago
They aren't inlining manually. The optimisation works by making more cases fall into an already existing fast path. edit: I might have misunderstood - I should say that the patch doesn't do any inlining. The fast path is indeed
137.
▲
by
gsg
12y ago
He stuck a black bar on that one (and references that in the post). Although that might seem a trivial difference, that there is an edit implies the author's knowledge of and control over the image. That makes all the difference.
138.
▲
by
gsg
12y ago
No, the default produces binaries that are compatible with as many machines as possible.
139.
▲
by
gsg
12y ago
I didn't say that types are tags at a different time, I said they are different things. And only concrete types are about representation. Abstract, universal, existential and uninhabited types are all useful and meaningful concepts wit
140.
▲
by
gsg
12y ago
Types are usually understood as proofs: in this case, a proof about whether the tag of x is suitable for passing to cos without causing an error. (If you like, read "dynamic type" for "tag".) So the proof and the tag are
141.
▲
Haswell performance wrinkle
(stackoverflow.com)
2 points
by
gsg
12y ago
|
0 comments
142.
▲
by
gsg
12y ago
Looking at jit_codegen.c, seems it compiles a low-level IR to C, throws that in a file and invokes cc on it (see cgen_freeze). Functions are pulled out with dlsym. Pretty heavy machinery for a JIT... but there's a comment about an LLVM
143.
▲
by
gsg
12y ago
You could have a look at Siskind's paper, Flow-Directed Lightweight Closure Conversion. Warning, it's not exactly light reading: ftp://ftp.ecn.purdue.edu/qobi/fdlcc.pdf Although the subject is nominally
144.
▲
by
gsg
12y ago
That rebuttal is confused and unconvincing. It's easy, although clumsy and verbose, to write a very close equivalent of his "impossible to type check" code example in a static language. Define a sum type that ranges over the
145.
▲
by
gsg
12y ago
Not really. There are no parameters involved in what a Scheme programmer would call a polymorphic program - instead, such programs simply range over all scheme values. Because the values ranged over in such programs is known rather than bei
146.
▲
by
gsg
12y ago
The size of the allocated block is often not the same as the size passed to malloc, so the "duplicated" length is usually actually necessary.
147.
▲
by
gsg
12y ago
> If there is not enough evidence available to the compiler that a particular array lookup is not safe, then that evidence is also not available to the programmer. That's quite wrong. Humans are capable of deductions that compilers,
148.
▲
by
gsg
12y ago
Although I take your point about CPS in other disciplines, TFA advocates compiling with continuations. A criticism of its suitability for compilation would seem to be relevant.
149.
▲
by
gsg
12y ago
See http://mlton.org/pipermail/mlton/2003-January/023054.html for an in-depth comparison from a compiler hacker experienced with both styles of IR. A summary is that there is no advantage to CPS, since it is
150.
▲
by
gsg
12y ago
OCaml has subtyping: it addresses the undecidability issue by requiring "cast" annotations for some use cases.
More ›