| OLD | NEW | 
|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. | 
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without | 
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are | 
| 4 // met: | 4 // met: | 
| 5 // | 5 // | 
| 6 //     * Redistributions of source code must retain the above copyright | 6 //     * Redistributions of source code must retain the above copyright | 
| 7 //       notice, this list of conditions and the following disclaimer. | 7 //       notice, this list of conditions and the following disclaimer. | 
| 8 //     * Redistributions in binary form must reproduce the above | 8 //     * Redistributions in binary form must reproduce the above | 
| 9 //       copyright notice, this list of conditions and the following | 9 //       copyright notice, this list of conditions and the following | 
| 10 //       disclaimer in the documentation and/or other materials provided | 10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 2914 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2925         break; | 2925         break; | 
| 2926       } | 2926       } | 
| 2927 | 2927 | 
| 2928       case Token::LPAREN: { | 2928       case Token::LPAREN: { | 
| 2929         int pos = scanner().location().beg_pos; | 2929         int pos = scanner().location().beg_pos; | 
| 2930         ZoneList<Expression*>* args = ParseArguments(CHECK_OK); | 2930         ZoneList<Expression*>* args = ParseArguments(CHECK_OK); | 
| 2931 | 2931 | 
| 2932         // Keep track of eval() calls since they disable all local variable | 2932         // Keep track of eval() calls since they disable all local variable | 
| 2933         // optimizations. | 2933         // optimizations. | 
| 2934         // The calls that need special treatment are the | 2934         // The calls that need special treatment are the | 
| 2935         // direct (i.e. not aliased) eval calls. These calls are all of the | 2935         // direct eval calls. These calls are all of the form eval(...), with | 
| 2936         // form eval(...) with no explicit receiver object where eval is not | 2936         // no explicit receiver. | 
| 2937         // declared in the current scope chain. |  | 
| 2938         // These calls are marked as potentially direct eval calls. Whether | 2937         // These calls are marked as potentially direct eval calls. Whether | 
| 2939         // they are actually direct calls to eval is determined at run time. | 2938         // they are actually direct calls to eval is determined at run time. | 
| 2940         // TODO(994): In ES5, it doesn't matter if the "eval" var is declared |  | 
| 2941         // in the local scope chain. It only matters that it's called "eval", |  | 
| 2942         // is called without a receiver and it refers to the original eval |  | 
| 2943         // function. |  | 
| 2944         VariableProxy* callee = result->AsVariableProxy(); | 2939         VariableProxy* callee = result->AsVariableProxy(); | 
| 2945         if (callee != NULL && | 2940         if (callee != NULL && | 
| 2946             callee->IsVariable(isolate()->factory()->eval_symbol())) { | 2941             callee->IsVariable(isolate()->factory()->eval_symbol())) { | 
| 2947           Handle<String> name = callee->name(); | 2942           top_scope_->DeclarationScope()->RecordEvalCall(); | 
| 2948           Variable* var = top_scope_->Lookup(name); |  | 
| 2949           if (var == NULL) { |  | 
| 2950             top_scope_->DeclarationScope()->RecordEvalCall(); |  | 
| 2951           } |  | 
| 2952         } | 2943         } | 
| 2953         result = NewCall(result, args, pos); | 2944         result = NewCall(result, args, pos); | 
| 2954         break; | 2945         break; | 
| 2955       } | 2946       } | 
| 2956 | 2947 | 
| 2957       case Token::PERIOD: { | 2948       case Token::PERIOD: { | 
| 2958         Consume(Token::PERIOD); | 2949         Consume(Token::PERIOD); | 
| 2959         int pos = scanner().location().beg_pos; | 2950         int pos = scanner().location().beg_pos; | 
| 2960         Handle<String> name = ParseIdentifierName(CHECK_OK); | 2951         Handle<String> name = ParseIdentifierName(CHECK_OK); | 
| 2961         result = new(zone()) Property(isolate(), | 2952         result = new(zone()) Property(isolate(), | 
| (...skipping 2457 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5419       result = parser.ParseProgram(source, | 5410       result = parser.ParseProgram(source, | 
| 5420                                    info->is_global(), | 5411                                    info->is_global(), | 
| 5421                                    info->strict_mode_flag()); | 5412                                    info->strict_mode_flag()); | 
| 5422     } | 5413     } | 
| 5423   } | 5414   } | 
| 5424   info->SetFunction(result); | 5415   info->SetFunction(result); | 
| 5425   return (result != NULL); | 5416   return (result != NULL); | 
| 5426 } | 5417 } | 
| 5427 | 5418 | 
| 5428 } }  // namespace v8::internal | 5419 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|