"Super" hoisting

Brian Barnes ggadwa at charter.net
Thu May 12 16:39:26 UTC 2016


Another idea I had, something I do all the time but would be interesting to see in a syntactical sugar approach.  Again, almost all this is because I (and many others) are writing real time, GC-sensitive applications (in my case a auto-generated first person shooter, every bitmap, every surface, etc) and trying to find ways to defeat or minimize the GC, and to get a discussion going about this kind of usage so more important people understand it’s a problem and maybe others will have better ideas.

Take this class:

class thing
{
constructor
{
}
doSomething(x,y)
{
let a=x+y;
let b=a*y;
let c=b*x;
return(c);
}
}

If I call doSomething a lot of times, I get a lot of objects to be tracked and GC’d.  Yes, I can rewrite that code to obviously eliminate them, but pretend there is actually something interesting happening here that requires those variables.  And engines can be smart enough to mark them and deal with them with the function ends (I don’t know if this is done.)

What I’m thinking is some kind of class based hint that would “super” hoist all local function variables.  It would be sugar but it would transform it into:

class thing
{
constructor
{
let _doSomething_a=null;
let _doSomething_b=null;
let _doSomething_c=null;
}
doSomething(x,y)
{
this._doSomething_a=x+y;
this._doSomething_b=a*y;
this._doSomething_c=b*x;
return(this._doSomething_c);
}
}

I actually do this now, just by hand.

Thoughts?

[>] Brian


More information about the es-discuss mailing list