Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: src/hydrogen.cc

Issue 6814012: Strict mode fixes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 2963 matching lines...) Expand 10 before | Expand all | Expand 10 after
2974 case ObjectLiteral::Property::MATERIALIZED_LITERAL: 2974 case ObjectLiteral::Property::MATERIALIZED_LITERAL:
2975 ASSERT(!CompileTimeValue::IsCompileTimeValue(value)); 2975 ASSERT(!CompileTimeValue::IsCompileTimeValue(value));
2976 // Fall through. 2976 // Fall through.
2977 case ObjectLiteral::Property::COMPUTED: 2977 case ObjectLiteral::Property::COMPUTED:
2978 if (key->handle()->IsSymbol()) { 2978 if (key->handle()->IsSymbol()) {
2979 if (property->emit_store()) { 2979 if (property->emit_store()) {
2980 VISIT_FOR_VALUE(value); 2980 VISIT_FOR_VALUE(value);
2981 HValue* value = Pop(); 2981 HValue* value = Pop();
2982 Handle<String> name = Handle<String>::cast(key->handle()); 2982 Handle<String> name = Handle<String>::cast(key->handle());
2983 HStoreNamedGeneric* store = 2983 HStoreNamedGeneric* store =
2984 new(zone()) HStoreNamedGeneric(context, literal, name, value); 2984 new(zone()) HStoreNamedGeneric(
2985 context,
2986 literal,
2987 name,
2988 value,
2989 function_strict_mode());
2985 AddInstruction(store); 2990 AddInstruction(store);
2986 AddSimulate(key->id()); 2991 AddSimulate(key->id());
2987 } else { 2992 } else {
2988 VISIT_FOR_EFFECT(value); 2993 VISIT_FOR_EFFECT(value);
2989 } 2994 }
2990 break; 2995 break;
2991 } 2996 }
2992 // Fall through. 2997 // Fall through.
2993 case ObjectLiteral::Property::PROTOTYPE: 2998 case ObjectLiteral::Property::PROTOTYPE:
2994 case ObjectLiteral::Property::SETTER: 2999 case ObjectLiteral::Property::SETTER:
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
3115 } 3120 }
3116 return instr; 3121 return instr;
3117 } 3122 }
3118 3123
3119 3124
3120 HInstruction* HGraphBuilder::BuildStoreNamedGeneric(HValue* object, 3125 HInstruction* HGraphBuilder::BuildStoreNamedGeneric(HValue* object,
3121 Handle<String> name, 3126 Handle<String> name,
3122 HValue* value) { 3127 HValue* value) {
3123 HContext* context = new(zone()) HContext; 3128 HContext* context = new(zone()) HContext;
3124 AddInstruction(context); 3129 AddInstruction(context);
3125 return new(zone()) HStoreNamedGeneric(context, object, name, value); 3130 return new(zone()) HStoreNamedGeneric(
3131 context,
3132 object,
3133 name,
3134 value,
3135 function_strict_mode());
3126 } 3136 }
3127 3137
3128 3138
3129 HInstruction* HGraphBuilder::BuildStoreNamed(HValue* object, 3139 HInstruction* HGraphBuilder::BuildStoreNamed(HValue* object,
3130 HValue* value, 3140 HValue* value,
3131 Expression* expr) { 3141 Expression* expr) {
3132 Property* prop = (expr->AsProperty() != NULL) 3142 Property* prop = (expr->AsProperty() != NULL)
3133 ? expr->AsProperty() 3143 ? expr->AsProperty()
3134 : expr->AsAssignment()->target()->AsProperty(); 3144 : expr->AsAssignment()->target()->AsProperty();
3135 Literal* key = prop->key()->AsLiteral(); 3145 Literal* key = prop->key()->AsLiteral();
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
3311 if (instr->HasSideEffects()) AddSimulate(ast_id); 3321 if (instr->HasSideEffects()) AddSimulate(ast_id);
3312 } else { 3322 } else {
3313 HContext* context = new(zone()) HContext; 3323 HContext* context = new(zone()) HContext;
3314 AddInstruction(context); 3324 AddInstruction(context);
3315 HGlobalObject* global_object = new(zone()) HGlobalObject(context); 3325 HGlobalObject* global_object = new(zone()) HGlobalObject(context);
3316 AddInstruction(global_object); 3326 AddInstruction(global_object);
3317 HStoreGlobalGeneric* instr = 3327 HStoreGlobalGeneric* instr =
3318 new(zone()) HStoreGlobalGeneric(context, 3328 new(zone()) HStoreGlobalGeneric(context,
3319 global_object, 3329 global_object,
3320 var->name(), 3330 var->name(),
3321 value); 3331 value,
3332 function_strict_mode());
3322 instr->set_position(position); 3333 instr->set_position(position);
3323 AddInstruction(instr); 3334 AddInstruction(instr);
3324 ASSERT(instr->HasSideEffects()); 3335 ASSERT(instr->HasSideEffects());
3325 if (instr->HasSideEffects()) AddSimulate(ast_id); 3336 if (instr->HasSideEffects()) AddSimulate(ast_id);
3326 } 3337 }
3327 } 3338 }
3328 3339
3329 3340
3330 void HGraphBuilder::HandleCompoundAssignment(Assignment* expr) { 3341 void HGraphBuilder::HandleCompoundAssignment(Assignment* expr) {
3331 Expression* target = expr->target(); 3342 Expression* target = expr->target();
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
3626 external_elements, key, expr->GetExternalArrayType()); 3637 external_elements, key, expr->GetExternalArrayType());
3627 return pixel_array_value; 3638 return pixel_array_value;
3628 } 3639 }
3629 3640
3630 3641
3631 HInstruction* HGraphBuilder::BuildStoreKeyedGeneric(HValue* object, 3642 HInstruction* HGraphBuilder::BuildStoreKeyedGeneric(HValue* object,
3632 HValue* key, 3643 HValue* key,
3633 HValue* value) { 3644 HValue* value) {
3634 HContext* context = new(zone()) HContext; 3645 HContext* context = new(zone()) HContext;
3635 AddInstruction(context); 3646 AddInstruction(context);
3636 return new(zone()) HStoreKeyedGeneric(context, object, key, value); 3647 return new(zone()) HStoreKeyedGeneric(
3648 context,
3649 object,
3650 key,
3651 value,
3652 function_strict_mode());
3637 } 3653 }
3638 3654
3639 3655
3640 HInstruction* HGraphBuilder::BuildStoreKeyedFastElement(HValue* object, 3656 HInstruction* HGraphBuilder::BuildStoreKeyedFastElement(HValue* object,
3641 HValue* key, 3657 HValue* key,
3642 HValue* val, 3658 HValue* val,
3643 Expression* expr) { 3659 Expression* expr) {
3644 ASSERT(expr->IsMonomorphic()); 3660 ASSERT(expr->IsMonomorphic());
3645 AddInstruction(new(zone()) HCheckNonSmi(object)); 3661 AddInstruction(new(zone()) HCheckNonSmi(object));
3646 Handle<Map> map = expr->GetMonomorphicReceiverType(); 3662 Handle<Map> map = expr->GetMonomorphicReceiverType();
(...skipping 2347 matching lines...) Expand 10 before | Expand all | Expand 10 after
5994 } 6010 }
5995 } 6011 }
5996 6012
5997 #ifdef DEBUG 6013 #ifdef DEBUG
5998 if (graph_ != NULL) graph_->Verify(); 6014 if (graph_ != NULL) graph_->Verify();
5999 if (allocator_ != NULL) allocator_->Verify(); 6015 if (allocator_ != NULL) allocator_->Verify();
6000 #endif 6016 #endif
6001 } 6017 }
6002 6018
6003 } } // namespace v8::internal 6019 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698