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

Side by Side Diff: src/arm/codegen-arm.h

Issue 3117006: Handle overwriting valueOf on String objects correctly when adding... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 4 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
« no previous file with comments | « no previous file | src/arm/codegen-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // Constants related to patching of inlined load/store. 279 // Constants related to patching of inlined load/store.
280 static int GetInlinedKeyedLoadInstructionsAfterPatch() { 280 static int GetInlinedKeyedLoadInstructionsAfterPatch() {
281 return FLAG_debug_code ? 27 : 13; 281 return FLAG_debug_code ? 27 : 13;
282 } 282 }
283 static const int kInlinedKeyedStoreInstructionsAfterPatch = 5; 283 static const int kInlinedKeyedStoreInstructionsAfterPatch = 5;
284 static int GetInlinedNamedStoreInstructionsAfterPatch() { 284 static int GetInlinedNamedStoreInstructionsAfterPatch() {
285 ASSERT(inlined_write_barrier_size_ != -1); 285 ASSERT(inlined_write_barrier_size_ != -1);
286 return inlined_write_barrier_size_ + 4; 286 return inlined_write_barrier_size_ + 4;
287 } 287 }
288 288
289 static MemOperand ContextOperand(Register context, int index) {
290 return MemOperand(context, Context::SlotOffset(index));
291 }
292
289 private: 293 private:
290 // Construction/Destruction 294 // Construction/Destruction
291 explicit CodeGenerator(MacroAssembler* masm); 295 explicit CodeGenerator(MacroAssembler* masm);
292 296
293 // Accessors 297 // Accessors
294 inline bool is_eval(); 298 inline bool is_eval();
295 inline Scope* scope(); 299 inline Scope* scope();
296 300
297 // Generating deferred code. 301 // Generating deferred code.
298 void ProcessDeferred(); 302 void ProcessDeferred();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 // Returns the arguments allocation mode. 335 // Returns the arguments allocation mode.
332 ArgumentsAllocationMode ArgumentsMode(); 336 ArgumentsAllocationMode ArgumentsMode();
333 337
334 // Store the arguments object and allocate it if necessary. 338 // Store the arguments object and allocate it if necessary.
335 void StoreArgumentsObject(bool initial); 339 void StoreArgumentsObject(bool initial);
336 340
337 // The following are used by class Reference. 341 // The following are used by class Reference.
338 void LoadReference(Reference* ref); 342 void LoadReference(Reference* ref);
339 void UnloadReference(Reference* ref); 343 void UnloadReference(Reference* ref);
340 344
341 static MemOperand ContextOperand(Register context, int index) {
342 return MemOperand(context, Context::SlotOffset(index));
343 }
344
345 MemOperand SlotOperand(Slot* slot, Register tmp); 345 MemOperand SlotOperand(Slot* slot, Register tmp);
346 346
347 MemOperand ContextSlotOperandCheckExtensions(Slot* slot, 347 MemOperand ContextSlotOperandCheckExtensions(Slot* slot,
348 Register tmp, 348 Register tmp,
349 Register tmp2, 349 Register tmp2,
350 JumpTarget* slow); 350 JumpTarget* slow);
351 351
352 // Expressions 352 // Expressions
353 static MemOperand GlobalObject() { 353 static MemOperand GlobalObject() {
354 return ContextOperand(cp, Context::GLOBAL_INDEX); 354 return ContextOperand(cp, Context::GLOBAL_INDEX);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 475
476 // Support for type checks. 476 // Support for type checks.
477 void GenerateIsSmi(ZoneList<Expression*>* args); 477 void GenerateIsSmi(ZoneList<Expression*>* args);
478 void GenerateIsNonNegativeSmi(ZoneList<Expression*>* args); 478 void GenerateIsNonNegativeSmi(ZoneList<Expression*>* args);
479 void GenerateIsArray(ZoneList<Expression*>* args); 479 void GenerateIsArray(ZoneList<Expression*>* args);
480 void GenerateIsRegExp(ZoneList<Expression*>* args); 480 void GenerateIsRegExp(ZoneList<Expression*>* args);
481 void GenerateIsObject(ZoneList<Expression*>* args); 481 void GenerateIsObject(ZoneList<Expression*>* args);
482 void GenerateIsSpecObject(ZoneList<Expression*>* args); 482 void GenerateIsSpecObject(ZoneList<Expression*>* args);
483 void GenerateIsFunction(ZoneList<Expression*>* args); 483 void GenerateIsFunction(ZoneList<Expression*>* args);
484 void GenerateIsUndetectableObject(ZoneList<Expression*>* args); 484 void GenerateIsUndetectableObject(ZoneList<Expression*>* args);
485 void GenerateIsStringWrapperSafeForDefaultValueOf(
486 ZoneList<Expression*>* args);
485 487
486 // Support for construct call checks. 488 // Support for construct call checks.
487 void GenerateIsConstructCall(ZoneList<Expression*>* args); 489 void GenerateIsConstructCall(ZoneList<Expression*>* args);
488 490
489 // Support for arguments.length and arguments[?]. 491 // Support for arguments.length and arguments[?].
490 void GenerateArgumentsLength(ZoneList<Expression*>* args); 492 void GenerateArgumentsLength(ZoneList<Expression*>* args);
491 void GenerateArguments(ZoneList<Expression*>* args); 493 void GenerateArguments(ZoneList<Expression*>* args);
492 494
493 // Support for accessing the class and value fields of an object. 495 // Support for accessing the class and value fields of an object.
494 void GenerateClassOf(ZoneList<Expression*>* args); 496 void GenerateClassOf(ZoneList<Expression*>* args);
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 return ObjectBits::encode(object_.code()) | 1097 return ObjectBits::encode(object_.code()) |
1096 OffsetBits::encode(offset_.code()) | 1098 OffsetBits::encode(offset_.code()) |
1097 ScratchBits::encode(scratch_.code()); 1099 ScratchBits::encode(scratch_.code());
1098 } 1100 }
1099 }; 1101 };
1100 1102
1101 1103
1102 } } // namespace v8::internal 1104 } } // namespace v8::internal
1103 1105
1104 #endif // V8_ARM_CODEGEN_ARM_H_ 1106 #endif // V8_ARM_CODEGEN_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/codegen-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698