MIPS: Refactor code generation for global declarations.
Port r11332 (0e6df8b6) Original commit message: Refactor code generation for global declarations. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10041029 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
42b77f3156
commit
1aa16d8689
@ -817,7 +817,10 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
||||
bool hole_init = mode == CONST || mode == CONST_HARMONY || mode == LET;
|
||||
switch (variable->location()) {
|
||||
case Variable::UNALLOCATED:
|
||||
++global_count_;
|
||||
globals_.Add(variable->name());
|
||||
globals_.Add(variable->binding_needs_init()
|
||||
? isolate()->factory()->the_hole_value()
|
||||
: isolate()->factory()->undefined_value());
|
||||
break;
|
||||
|
||||
case Variable::PARAMETER:
|
||||
@ -873,9 +876,15 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
||||
VariableProxy* proxy = declaration->proxy();
|
||||
Variable* variable = proxy->var();
|
||||
switch (variable->location()) {
|
||||
case Variable::UNALLOCATED:
|
||||
++global_count_;
|
||||
case Variable::UNALLOCATED: {
|
||||
globals_.Add(variable->name());
|
||||
Handle<SharedFunctionInfo> function =
|
||||
Compiler::BuildFunctionInfo(declaration->fun(), script());
|
||||
// Check for stack-overflow exception.
|
||||
if (function.is_null()) return SetStackOverflow();
|
||||
globals_.Add(function);
|
||||
break;
|
||||
}
|
||||
|
||||
case Variable::PARAMETER:
|
||||
case Variable::LOCAL: {
|
||||
@ -923,7 +932,7 @@ void FullCodeGenerator::VisitModuleDeclaration(ModuleDeclaration* declaration) {
|
||||
Variable* variable = proxy->var();
|
||||
switch (variable->location()) {
|
||||
case Variable::UNALLOCATED:
|
||||
++global_count_;
|
||||
// TODO(rossberg): initialize module instance object
|
||||
break;
|
||||
|
||||
case Variable::CONTEXT: {
|
||||
@ -946,7 +955,7 @@ void FullCodeGenerator::VisitImportDeclaration(ImportDeclaration* declaration) {
|
||||
Variable* variable = proxy->var();
|
||||
switch (variable->location()) {
|
||||
case Variable::UNALLOCATED:
|
||||
++global_count_;
|
||||
// TODO(rossberg)
|
||||
break;
|
||||
|
||||
case Variable::CONTEXT: {
|
||||
|
Loading…
Reference in New Issue
Block a user