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

Side by Side Diff: src/hydrogen-instructions.h

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 2890 matching lines...) Expand 10 before | Expand all | Expand 10 after
2901 Handle<JSGlobalPropertyCell> cell_; 2901 Handle<JSGlobalPropertyCell> cell_;
2902 bool check_hole_value_; 2902 bool check_hole_value_;
2903 }; 2903 };
2904 2904
2905 2905
2906 class HStoreGlobalGeneric: public HTemplateInstruction<3> { 2906 class HStoreGlobalGeneric: public HTemplateInstruction<3> {
2907 public: 2907 public:
2908 HStoreGlobalGeneric(HValue* context, 2908 HStoreGlobalGeneric(HValue* context,
2909 HValue* global_object, 2909 HValue* global_object,
2910 Handle<Object> name, 2910 Handle<Object> name,
2911 HValue* value) 2911 HValue* value,
2912 : name_(name) { 2912 bool strict_mode)
2913 : name_(name),
2914 strict_mode_(strict_mode) {
2913 SetOperandAt(0, context); 2915 SetOperandAt(0, context);
2914 SetOperandAt(1, global_object); 2916 SetOperandAt(1, global_object);
2915 SetOperandAt(2, value); 2917 SetOperandAt(2, value);
2916 set_representation(Representation::Tagged()); 2918 set_representation(Representation::Tagged());
2917 SetAllSideEffects(); 2919 SetAllSideEffects();
2918 } 2920 }
2919 2921
2920 HValue* context() { return OperandAt(0); } 2922 HValue* context() { return OperandAt(0); }
2921 HValue* global_object() { return OperandAt(1); } 2923 HValue* global_object() { return OperandAt(1); }
2922 Handle<Object> name() const { return name_; } 2924 Handle<Object> name() const { return name_; }
2923 HValue* value() { return OperandAt(2); } 2925 HValue* value() { return OperandAt(2); }
2926 bool strict_mode() { return strict_mode_; }
2924 2927
2925 virtual void PrintDataTo(StringStream* stream); 2928 virtual void PrintDataTo(StringStream* stream);
2926 2929
2927 virtual Representation RequiredInputRepresentation(int index) const { 2930 virtual Representation RequiredInputRepresentation(int index) const {
2928 return Representation::Tagged(); 2931 return Representation::Tagged();
2929 } 2932 }
2930 2933
2931 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store_global_generic") 2934 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store_global_generic")
2932 2935
2933 private: 2936 private:
2934 Handle<Object> name_; 2937 Handle<Object> name_;
2938 bool strict_mode_;
2935 }; 2939 };
2936 2940
2937 2941
2938 class HLoadContextSlot: public HUnaryOperation { 2942 class HLoadContextSlot: public HUnaryOperation {
2939 public: 2943 public:
2940 HLoadContextSlot(HValue* context , int slot_index) 2944 HLoadContextSlot(HValue* context , int slot_index)
2941 : HUnaryOperation(context), slot_index_(slot_index) { 2945 : HUnaryOperation(context), slot_index_(slot_index) {
2942 set_representation(Representation::Tagged()); 2946 set_representation(Representation::Tagged());
2943 SetFlag(kUseGVN); 2947 SetFlag(kUseGVN);
2944 SetFlag(kDependsOnContextSlots); 2948 SetFlag(kDependsOnContextSlots);
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
3256 int offset_; 3260 int offset_;
3257 Handle<Map> transition_; 3261 Handle<Map> transition_;
3258 }; 3262 };
3259 3263
3260 3264
3261 class HStoreNamedGeneric: public HTemplateInstruction<3> { 3265 class HStoreNamedGeneric: public HTemplateInstruction<3> {
3262 public: 3266 public:
3263 HStoreNamedGeneric(HValue* context, 3267 HStoreNamedGeneric(HValue* context,
3264 HValue* object, 3268 HValue* object,
3265 Handle<String> name, 3269 Handle<String> name,
3266 HValue* value) 3270 HValue* value,
3267 : name_(name) { 3271 bool strict_mode)
3272 : name_(name),
3273 strict_mode_(strict_mode) {
3268 SetOperandAt(0, object); 3274 SetOperandAt(0, object);
3269 SetOperandAt(1, value); 3275 SetOperandAt(1, value);
3270 SetOperandAt(2, context); 3276 SetOperandAt(2, context);
3271 SetAllSideEffects(); 3277 SetAllSideEffects();
3272 } 3278 }
3273 3279
3274 HValue* object() { return OperandAt(0); } 3280 HValue* object() { return OperandAt(0); }
3275 HValue* value() { return OperandAt(1); } 3281 HValue* value() { return OperandAt(1); }
3276 HValue* context() { return OperandAt(2); } 3282 HValue* context() { return OperandAt(2); }
3277 Handle<String> name() { return name_; } 3283 Handle<String> name() { return name_; }
3284 bool strict_mode() { return strict_mode_; }
3278 3285
3279 virtual void PrintDataTo(StringStream* stream); 3286 virtual void PrintDataTo(StringStream* stream);
3280 3287
3281 virtual Representation RequiredInputRepresentation(int index) const { 3288 virtual Representation RequiredInputRepresentation(int index) const {
3282 return Representation::Tagged(); 3289 return Representation::Tagged();
3283 } 3290 }
3284 3291
3285 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store_named_generic") 3292 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store_named_generic")
3286 3293
3287 private: 3294 private:
3288 Handle<String> name_; 3295 Handle<String> name_;
3296 bool strict_mode_;
3289 }; 3297 };
3290 3298
3291 3299
3292 class HStoreKeyedFastElement: public HTemplateInstruction<3> { 3300 class HStoreKeyedFastElement: public HTemplateInstruction<3> {
3293 public: 3301 public:
3294 HStoreKeyedFastElement(HValue* obj, HValue* key, HValue* val) { 3302 HStoreKeyedFastElement(HValue* obj, HValue* key, HValue* val) {
3295 SetOperandAt(0, obj); 3303 SetOperandAt(0, obj);
3296 SetOperandAt(1, key); 3304 SetOperandAt(1, key);
3297 SetOperandAt(2, val); 3305 SetOperandAt(2, val);
3298 SetFlag(kChangesArrayElements); 3306 SetFlag(kChangesArrayElements);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
3356 private: 3364 private:
3357 ExternalArrayType array_type_; 3365 ExternalArrayType array_type_;
3358 }; 3366 };
3359 3367
3360 3368
3361 class HStoreKeyedGeneric: public HTemplateInstruction<4> { 3369 class HStoreKeyedGeneric: public HTemplateInstruction<4> {
3362 public: 3370 public:
3363 HStoreKeyedGeneric(HValue* context, 3371 HStoreKeyedGeneric(HValue* context,
3364 HValue* object, 3372 HValue* object,
3365 HValue* key, 3373 HValue* key,
3366 HValue* value) { 3374 HValue* value,
3375 bool strict_mode)
3376 : strict_mode_(strict_mode) {
3367 SetOperandAt(0, object); 3377 SetOperandAt(0, object);
3368 SetOperandAt(1, key); 3378 SetOperandAt(1, key);
3369 SetOperandAt(2, value); 3379 SetOperandAt(2, value);
3370 SetOperandAt(3, context); 3380 SetOperandAt(3, context);
3371 SetAllSideEffects(); 3381 SetAllSideEffects();
3372 } 3382 }
3373 3383
3374 HValue* object() { return OperandAt(0); } 3384 HValue* object() { return OperandAt(0); }
3375 HValue* key() { return OperandAt(1); } 3385 HValue* key() { return OperandAt(1); }
3376 HValue* value() { return OperandAt(2); } 3386 HValue* value() { return OperandAt(2); }
3377 HValue* context() { return OperandAt(3); } 3387 HValue* context() { return OperandAt(3); }
3388 bool strict_mode() { return strict_mode_; }
3378 3389
3379 virtual Representation RequiredInputRepresentation(int index) const { 3390 virtual Representation RequiredInputRepresentation(int index) const {
3380 return Representation::Tagged(); 3391 return Representation::Tagged();
3381 } 3392 }
3382 3393
3383 virtual void PrintDataTo(StringStream* stream); 3394 virtual void PrintDataTo(StringStream* stream);
3384 3395
3385 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store_keyed_generic") 3396 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store_keyed_generic")
3397
3398 private:
3399 bool strict_mode_;
3386 }; 3400 };
3387 3401
3388 3402
3389 class HStringCharCodeAt: public HBinaryOperation { 3403 class HStringCharCodeAt: public HBinaryOperation {
3390 public: 3404 public:
3391 HStringCharCodeAt(HValue* string, HValue* index) 3405 HStringCharCodeAt(HValue* string, HValue* index)
3392 : HBinaryOperation(string, index) { 3406 : HBinaryOperation(string, index) {
3393 set_representation(Representation::Integer32()); 3407 set_representation(Representation::Integer32());
3394 SetFlag(kUseGVN); 3408 SetFlag(kUseGVN);
3395 SetFlag(kDependsOnMaps); 3409 SetFlag(kDependsOnMaps);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
3648 HValue* object() { return left(); } 3662 HValue* object() { return left(); }
3649 HValue* key() { return right(); } 3663 HValue* key() { return right(); }
3650 }; 3664 };
3651 3665
3652 #undef DECLARE_INSTRUCTION 3666 #undef DECLARE_INSTRUCTION
3653 #undef DECLARE_CONCRETE_INSTRUCTION 3667 #undef DECLARE_CONCRETE_INSTRUCTION
3654 3668
3655 } } // namespace v8::internal 3669 } } // namespace v8::internal
3656 3670
3657 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 3671 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698