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

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

Issue 5188006: Push version 2.5.7 to trunk.... (Closed) Base URL: http://v8.googlecode.com/svn/trunk/
Patch Set: Created 10 years, 1 month 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 | « src/ia32/code-stubs-ia32.cc ('k') | src/ia32/codegen-ia32.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 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 345
346 // Return a position of the element at |index_as_smi| + |additional_offset| 346 // Return a position of the element at |index_as_smi| + |additional_offset|
347 // in FixedArray pointer to which is held in |array|. |index_as_smi| is Smi. 347 // in FixedArray pointer to which is held in |array|. |index_as_smi| is Smi.
348 static Operand FixedArrayElementOperand(Register array, 348 static Operand FixedArrayElementOperand(Register array,
349 Register index_as_smi, 349 Register index_as_smi,
350 int additional_offset = 0) { 350 int additional_offset = 0) {
351 int offset = FixedArray::kHeaderSize + additional_offset * kPointerSize; 351 int offset = FixedArray::kHeaderSize + additional_offset * kPointerSize;
352 return FieldOperand(array, index_as_smi, times_half_pointer_size, offset); 352 return FieldOperand(array, index_as_smi, times_half_pointer_size, offset);
353 } 353 }
354 354
355 static Operand ContextOperand(Register context, int index) {
356 return Operand(context, Context::SlotOffset(index));
357 }
358
359 private: 355 private:
360 // Type of a member function that generates inline code for a native function. 356 // Type of a member function that generates inline code for a native function.
361 typedef void (CodeGenerator::*InlineFunctionGenerator) 357 typedef void (CodeGenerator::*InlineFunctionGenerator)
362 (ZoneList<Expression*>*); 358 (ZoneList<Expression*>*);
363 359
364 static const InlineFunctionGenerator kInlineFunctionGenerators[]; 360 static const InlineFunctionGenerator kInlineFunctionGenerators[];
365 361
366 // Construction/Destruction 362 // Construction/Destruction
367 explicit CodeGenerator(MacroAssembler* masm); 363 explicit CodeGenerator(MacroAssembler* masm);
368 364
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 // The following are used by class Reference. 430 // The following are used by class Reference.
435 void LoadReference(Reference* ref); 431 void LoadReference(Reference* ref);
436 432
437 Operand SlotOperand(Slot* slot, Register tmp); 433 Operand SlotOperand(Slot* slot, Register tmp);
438 434
439 Operand ContextSlotOperandCheckExtensions(Slot* slot, 435 Operand ContextSlotOperandCheckExtensions(Slot* slot,
440 Result tmp, 436 Result tmp,
441 JumpTarget* slow); 437 JumpTarget* slow);
442 438
443 // Expressions 439 // Expressions
444 static Operand GlobalObject() {
445 return ContextOperand(esi, Context::GLOBAL_INDEX);
446 }
447
448 void LoadCondition(Expression* expr, 440 void LoadCondition(Expression* expr,
449 ControlDestination* destination, 441 ControlDestination* destination,
450 bool force_control); 442 bool force_control);
451 void Load(Expression* expr); 443 void Load(Expression* expr);
452 void LoadGlobal(); 444 void LoadGlobal();
453 void LoadGlobalReceiver(); 445 void LoadGlobalReceiver();
454 446
455 // Generate code to push the value of an expression on top of the frame 447 // Generate code to push the value of an expression on top of the frame
456 // and then spill the frame fully to memory. This function is used 448 // and then spill the frame fully to memory. This function is used
457 // temporarily while the code generator is being transformed. 449 // temporarily while the code generator is being transformed.
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 Expression* receiver, 613 Expression* receiver,
622 VariableProxy* arguments, 614 VariableProxy* arguments,
623 int position); 615 int position);
624 616
625 void CheckStack(); 617 void CheckStack();
626 618
627 bool CheckForInlineRuntimeCall(CallRuntime* node); 619 bool CheckForInlineRuntimeCall(CallRuntime* node);
628 620
629 void ProcessDeclarations(ZoneList<Declaration*>* declarations); 621 void ProcessDeclarations(ZoneList<Declaration*>* declarations);
630 622
631 static Handle<Code> ComputeCallInitialize(int argc, InLoopFlag in_loop);
632
633 static Handle<Code> ComputeKeyedCallInitialize(int argc, InLoopFlag in_loop);
634
635 // Declare global variables and functions in the given array of 623 // Declare global variables and functions in the given array of
636 // name/value pairs. 624 // name/value pairs.
637 void DeclareGlobals(Handle<FixedArray> pairs); 625 void DeclareGlobals(Handle<FixedArray> pairs);
638 626
639 // Instantiate the function based on the shared function info. 627 // Instantiate the function based on the shared function info.
640 Result InstantiateFunction(Handle<SharedFunctionInfo> function_info); 628 Result InstantiateFunction(Handle<SharedFunctionInfo> function_info);
641 629
642 // Support for types. 630 // Support for types.
643 void GenerateIsSmi(ZoneList<Expression*>* args); 631 void GenerateIsSmi(ZoneList<Expression*>* args);
644 void GenerateIsNonNegativeSmi(ZoneList<Expression*>* args); 632 void GenerateIsNonNegativeSmi(ZoneList<Expression*>* args);
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 783
796 friend class CodeGeneratorPatcher; // Used in test-log-stack-tracer.cc 784 friend class CodeGeneratorPatcher; // Used in test-log-stack-tracer.cc
797 785
798 DISALLOW_COPY_AND_ASSIGN(CodeGenerator); 786 DISALLOW_COPY_AND_ASSIGN(CodeGenerator);
799 }; 787 };
800 788
801 789
802 } } // namespace v8::internal 790 } } // namespace v8::internal
803 791
804 #endif // V8_IA32_CODEGEN_IA32_H_ 792 #endif // V8_IA32_CODEGEN_IA32_H_
OLDNEW
« no previous file with comments | « src/ia32/code-stubs-ia32.cc ('k') | src/ia32/codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698