description(
"Test method-check related bugs"
);
function func2() { }
// This test yields PASS, if malloc does not reuse the memory address for the structure of String prototype
function func()
{
String.prototype.a = function() { }
String.prototype.b = function() { }
if (window.GCController)
GCController.collect();
else {
// The following 3 lines cause gc() flush on a Debian
// Linux machine, but there is no guarantee, it works on
// any other computer. (Not even another Debian Linux)
// If func2() is not called or a much bigger or lower
// value than 5000 is chosen, the crash won't happen
func2()
for (var i = 0; i < 5000; ++i)
new Boolean()
}
var str = ""
for (var i = 0; i < 5; ++i)
str.a()
}
func()
func()
// Test that method caching correctly invalidates (doesn't incorrectly continue to call a previously cached function).
var total = 0;
function addOne()
{
++total;
}
function addOneHundred()
{
total+=100;
}
var totalizer = {
makeCall: function(callback)
{
this.callback = callback;
this.callback();
}
};
for (var i=0; i<100; ++i)
totalizer.makeCall(addOne);
totalizer.makeCall(addOneHundred);
shouldBe('total', '200');
// Check that we don't assert when method_check is applied to a non-JSFunction
for (var i = 0; i < 10000; i++)
Array.constructor(1);