OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 2074 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2085 | 2085 |
2086 | 2086 |
2087 Statement* Parser::ParseWithStatement(ZoneStringList* labels, bool* ok) { | 2087 Statement* Parser::ParseWithStatement(ZoneStringList* labels, bool* ok) { |
2088 // WithStatement :: | 2088 // WithStatement :: |
2089 // 'with' '(' Expression ')' Statement | 2089 // 'with' '(' Expression ')' Statement |
2090 | 2090 |
2091 // We do not allow the use of 'with' statements in the internal JS | 2091 // We do not allow the use of 'with' statements in the internal JS |
2092 // code. If 'with' statements were allowed, the simplified setup of | 2092 // code. If 'with' statements were allowed, the simplified setup of |
2093 // the runtime context chain would allow access to properties in the | 2093 // the runtime context chain would allow access to properties in the |
2094 // global object from within a 'with' statement. | 2094 // global object from within a 'with' statement. |
2095 ASSERT(!Bootstrapper::IsActive()); | 2095 ASSERT(extension_ != NULL || !Bootstrapper::IsActive()); |
2096 | 2096 |
2097 Expect(Token::WITH, CHECK_OK); | 2097 Expect(Token::WITH, CHECK_OK); |
2098 Expect(Token::LPAREN, CHECK_OK); | 2098 Expect(Token::LPAREN, CHECK_OK); |
2099 Expression* expr = ParseExpression(true, CHECK_OK); | 2099 Expression* expr = ParseExpression(true, CHECK_OK); |
2100 Expect(Token::RPAREN, CHECK_OK); | 2100 Expect(Token::RPAREN, CHECK_OK); |
2101 | 2101 |
2102 return WithHelper(expr, labels, false, CHECK_OK); | 2102 return WithHelper(expr, labels, false, CHECK_OK); |
2103 } | 2103 } |
2104 | 2104 |
2105 | 2105 |
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2754 | 2754 |
2755 bool is_potentially_direct_eval = false; | 2755 bool is_potentially_direct_eval = false; |
2756 if (!is_pre_parsing_) { | 2756 if (!is_pre_parsing_) { |
2757 VariableProxy* callee = result->AsVariableProxy(); | 2757 VariableProxy* callee = result->AsVariableProxy(); |
2758 if (callee != NULL && callee->IsVariable(Factory::eval_symbol())) { | 2758 if (callee != NULL && callee->IsVariable(Factory::eval_symbol())) { |
2759 Handle<String> name = callee->name(); | 2759 Handle<String> name = callee->name(); |
2760 Variable* var = top_scope_->Lookup(name); | 2760 Variable* var = top_scope_->Lookup(name); |
2761 if (var == NULL) { | 2761 if (var == NULL) { |
2762 // We do not allow direct calls to 'eval' in our internal | 2762 // We do not allow direct calls to 'eval' in our internal |
2763 // JS files. Use builtin functions instead. | 2763 // JS files. Use builtin functions instead. |
2764 ASSERT(!Bootstrapper::IsActive()); | 2764 ASSERT(extension_ != NULL || !Bootstrapper::IsActive()); |
2765 top_scope_->RecordEvalCall(); | 2765 top_scope_->RecordEvalCall(); |
2766 is_potentially_direct_eval = true; | 2766 is_potentially_direct_eval = true; |
2767 } | 2767 } |
2768 } | 2768 } |
2769 } | 2769 } |
2770 | 2770 |
2771 if (is_potentially_direct_eval) { | 2771 if (is_potentially_direct_eval) { |
2772 result = factory()->NewCallEval(result, args, pos); | 2772 result = factory()->NewCallEval(result, args, pos); |
2773 } else { | 2773 } else { |
2774 result = factory()->NewCall(result, args, pos); | 2774 result = factory()->NewCall(result, args, pos); |
(...skipping 1795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4570 start_position, | 4570 start_position, |
4571 is_expression); | 4571 is_expression); |
4572 return result; | 4572 return result; |
4573 } | 4573 } |
4574 | 4574 |
4575 | 4575 |
4576 #undef NEW | 4576 #undef NEW |
4577 | 4577 |
4578 | 4578 |
4579 } } // namespace v8::internal | 4579 } } // namespace v8::internal |
OLD | NEW |