Skip to content

Commit

Permalink
Merge commit 'upstream/3.1.8.22'
Browse files Browse the repository at this point in the history
  • Loading branch information
kapouer committed May 25, 2011
2 parents b236de8 + 0f6988d commit c5bcdf3
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 8 deletions.
3 changes: 3 additions & 0 deletions src/arm/codegen-arm.cc
Expand Up @@ -7233,6 +7233,9 @@ void CodeGenerator::EmitKeyedStore(StaticType* key_type,


ASSERT(we_remembered_the_write_barrier); ASSERT(we_remembered_the_write_barrier);


// Make sure that r0 holds the value which is the result of the expression.
__ Move(r0, value);

deferred->BindExit(); deferred->BindExit();
} else { } else {
frame()->CallKeyedStoreIC(strict_mode_flag()); frame()->CallKeyedStoreIC(strict_mode_flag());
Expand Down
3 changes: 1 addition & 2 deletions src/builtins.cc
Expand Up @@ -373,8 +373,7 @@ static bool ArrayPrototypeHasNoElements(Context* global_context,
array_proto = JSObject::cast(proto); array_proto = JSObject::cast(proto);
if (array_proto != global_context->initial_object_prototype()) return false; if (array_proto != global_context->initial_object_prototype()) return false;
if (array_proto->elements() != Heap::empty_fixed_array()) return false; if (array_proto->elements() != Heap::empty_fixed_array()) return false;
ASSERT(array_proto->GetPrototype()->IsNull()); return array_proto->GetPrototype()->IsNull();
return true;
} }




Expand Down
2 changes: 1 addition & 1 deletion src/hydrogen-instructions.h
Expand Up @@ -791,7 +791,7 @@ class HBlockEntry: public HTemplateInstruction<0> {


class HDeoptimize: public HControlInstruction { class HDeoptimize: public HControlInstruction {
public: public:
HDeoptimize(int environment_length) explicit HDeoptimize(int environment_length)
: HControlInstruction(NULL, NULL), : HControlInstruction(NULL, NULL),
values_(environment_length) { } values_(environment_length) { }


Expand Down
2 changes: 1 addition & 1 deletion src/version.cc
Expand Up @@ -35,7 +35,7 @@
#define MAJOR_VERSION 3 #define MAJOR_VERSION 3
#define MINOR_VERSION 1 #define MINOR_VERSION 1
#define BUILD_NUMBER 8 #define BUILD_NUMBER 8
#define PATCH_LEVEL 18 #define PATCH_LEVEL 22
#define CANDIDATE_VERSION false #define CANDIDATE_VERSION false


// Define SONAME to have the SCons build the put a specific SONAME into the // Define SONAME to have the SCons build the put a specific SONAME into the
Expand Down
12 changes: 8 additions & 4 deletions src/x64/full-codegen-x64.cc
Expand Up @@ -1383,13 +1383,17 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
// Fall through. // Fall through.
case ObjectLiteral::Property::COMPUTED: case ObjectLiteral::Property::COMPUTED:
if (key->handle()->IsSymbol()) { if (key->handle()->IsSymbol()) {
VisitForAccumulatorValue(value);
__ Move(rcx, key->handle());
__ movq(rdx, Operand(rsp, 0));
if (property->emit_store()) { if (property->emit_store()) {
Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize)); VisitForAccumulatorValue(value);
__ Move(rcx, key->handle());
__ movq(rdx, Operand(rsp, 0));
Handle<Code> ic(Builtins::builtin(
is_strict() ? Builtins::StoreIC_Initialize_Strict
: Builtins::StoreIC_Initialize));
EmitCallIC(ic, RelocInfo::CODE_TARGET); EmitCallIC(ic, RelocInfo::CODE_TARGET);
PrepareForBailoutForId(key->id(), NO_REGISTERS); PrepareForBailoutForId(key->id(), NO_REGISTERS);
} else {
VisitForEffect(value);
} }
break; break;
} }
Expand Down
45 changes: 45 additions & 0 deletions test/mjsunit/regress/regress-1401.js
@@ -0,0 +1,45 @@
// Copyright 2011 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// See: http://code.google.com/p/v8/issues/detail?id=1401

var bottom = 0;
var sizes = new Array();

for (i = 0; i < 10; i++) {
sizes[i] = 0;
}

function foo() {
var size = bottom + 1 + 10;
var t = (sizes[++bottom] = size);
return t;
}

for (i = 0; i < 5; i++) {
assertEquals(i + 11, foo());
}
36 changes: 36 additions & 0 deletions test/mjsunit/regress/regress-1403.js
@@ -0,0 +1,36 @@
// Copyright 2011 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// See: http://code.google.com/p/v8/issues/detail?id=1403

a = [];
Object.prototype.__proto__ = { __proto__: null };
a.shift();

a = [];
Array.prototype.__proto__ = { __proto__: null };
a.shift();

0 comments on commit c5bcdf3

Please sign in to comment.