Skip to content

Commit 64c3a9c

Browse files
committed
Getter is called twice in railgun
GetSlot already calls getter. So slot::Get call is not needed.
1 parent 2d1412b commit 64c3a9c

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

iv/lv5/railgun/operation.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class Operation {
140140
if (!slot.IsLoadCacheable() || symbol::IsArrayIndexSymbol(s)) {
141141
// bailout to generic
142142
instr[0] = Instruction::GetOPInstruction(generic);
143-
return slot.Get(ctx_, base, e);
143+
return slot.value();
144144
}
145145

146146
assert(!symbol::IsArrayIndexSymbol(s));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
Copyright (C) 2015 Yusuke Suzuki <[email protected]>
3+
4+
Redistribution and use in source and binary forms, with or without
5+
modification, are permitted provided that the following conditions are met:
6+
7+
* Redistributions of source code must retain the above copyright
8+
notice, this list of conditions and the following disclaimer.
9+
* Redistributions in binary form must reproduce the above copyright
10+
notice, this list of conditions and the following disclaimer in the
11+
documentation and/or other materials provided with the distribution.
12+
13+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16+
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
17+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22+
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23+
*/
24+
25+
describe("regress", function() {
26+
it("getter called twice", function() {
27+
var count = 0;
28+
var obj = {
29+
get prop() {
30+
++count;
31+
return 42;
32+
}
33+
};
34+
obj.prop;
35+
expect(count).toBe(1);
36+
});
37+
});
38+
39+
/* vim: set sw=4 ts=4 et tw=80 : */

0 commit comments

Comments
 (0)