• keuchel@chromium.org's avatar
    Reapply r9870 "Remove some initialization checks based on source positions.". · 72dba271
    keuchel@chromium.org authored
    This reverts r9896 "Revert r9870 due to browser-test failures." See below for
    the diff from the previous version for the ia32 platform. The code for other
    platforms has been changed accordingly.
    
    TEST=mjsunit/compiler/lazy-const-lookup.js
    
    diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc
    index 2cbf518..1990f2f 100644
    --- a/src/ia32/full-codegen-ia32.cc
    +++ b/src/ia32/full-codegen-ia32.cc
    @@ -1258,13 +1258,17 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
             // binding is initialized:
             //   function() { f(); let x = 1; function f() { x = 2; } }
             //
    -        // Check that we always have valid source position.
    -        ASSERT(var->initializer_position() != RelocInfo::kNoPosition);
    -        ASSERT(proxy->position() != RelocInfo::kNoPosition);
    -        bool skip_init_check =
    -            var->mode() != CONST &&
    -            var->scope()->DeclarationScope() == scope()->DeclarationScope() &&
    -            var->initializer_position() < proxy->position();
    +        bool skip_init_check;
    +        if (var->scope()->DeclarationScope() != scope()->DeclarationScope()) {
    +          skip_init_check = false;
    +        } else {
    +          // Check that we always have valid source position.
    +          ASSERT(var->initializer_position() != RelocInfo::kNoPosition);
    +          ASSERT(proxy->position() != RelocInfo::kNoPosition);
    +          skip_init_check = var->mode() != CONST &&
    +              var->initializer_position() < proxy->position();
    +        }
    +
             if (!skip_init_check) {
               // Let and const need a read barrier.
               Label done;
    
    Review URL: http://codereview.chromium.org/8479034
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    72dba271
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
include Loading commit data...
preparser Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
tools Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
ChangeLog Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
SConstruct Loading commit data...