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

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

Issue 1604002: Simple register allocation for ARM. Only top of expression... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 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
« no previous file with comments | « no previous file | src/arm/codegen-arm.cc » ('j') | src/arm/codegen-arm.cc » ('J')
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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 // Return the name. Only valid for named property references. 83 // Return the name. Only valid for named property references.
84 Handle<String> GetName(); 84 Handle<String> GetName();
85 85
86 // Generate code to push the value of the reference on top of the 86 // Generate code to push the value of the reference on top of the
87 // expression stack. The reference is expected to be already on top of 87 // expression stack. The reference is expected to be already on top of
88 // the expression stack, and it is consumed by the call unless the 88 // the expression stack, and it is consumed by the call unless the
89 // reference is for a compound assignment. 89 // reference is for a compound assignment.
90 // If the reference is not consumed, it is left in place under its value. 90 // If the reference is not consumed, it is left in place under its value.
91 void GetValue(); 91 void GetValue();
92 92
93 // Generate code to pop a reference, push the value of the reference,
94 // and then spill the stack frame.
95 inline void GetValueAndSpill();
96
97 // Generate code to store the value on top of the expression stack in the 93 // Generate code to store the value on top of the expression stack in the
98 // reference. The reference is expected to be immediately below the value 94 // reference. The reference is expected to be immediately below the value
99 // on the expression stack. The value is stored in the location specified 95 // on the expression stack. The value is stored in the location specified
100 // by the reference, and is left on top of the stack, after the reference 96 // by the reference, and is left on top of the stack, after the reference
101 // is popped from beneath it (unloaded). 97 // is popped from beneath it (unloaded).
102 void SetValue(InitState init_state); 98 void SetValue(InitState init_state);
103 99
104 private: 100 private:
105 CodeGenerator* cgen_; 101 CodeGenerator* cgen_;
106 Expression* expression_; 102 Expression* expression_;
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 void LoadTypeofExpression(Expression* x); 301 void LoadTypeofExpression(Expression* x);
306 302
307 void ToBoolean(JumpTarget* true_target, JumpTarget* false_target); 303 void ToBoolean(JumpTarget* true_target, JumpTarget* false_target);
308 304
309 // Generate code that computes a shortcutting logical operation. 305 // Generate code that computes a shortcutting logical operation.
310 void GenerateLogicalBooleanOperation(BinaryOperation* node); 306 void GenerateLogicalBooleanOperation(BinaryOperation* node);
311 307
312 void GenericBinaryOperation(Token::Value op, 308 void GenericBinaryOperation(Token::Value op,
313 OverwriteMode overwrite_mode, 309 OverwriteMode overwrite_mode,
314 int known_rhs = kUnknownIntValue); 310 int known_rhs = kUnknownIntValue);
311 void VirtualFrameBinaryOperation(Token::Value op,
312 OverwriteMode overwrite_mode,
313 int known_rhs = kUnknownIntValue);
315 void Comparison(Condition cc, 314 void Comparison(Condition cc,
316 Expression* left, 315 Expression* left,
317 Expression* right, 316 Expression* right,
318 bool strict = false); 317 bool strict = false);
319 318
320 void SmiOperation(Token::Value op, 319 void SmiOperation(Token::Value op,
321 Handle<Object> value, 320 Handle<Object> value,
322 bool reversed, 321 bool reversed,
323 OverwriteMode mode); 322 OverwriteMode mode);
324 323
324 void VirtualFrameSmiOperation(Token::Value op,
325 Handle<Object> value,
326 bool reversed,
327 OverwriteMode mode);
328
325 void CallWithArguments(ZoneList<Expression*>* arguments, 329 void CallWithArguments(ZoneList<Expression*>* arguments,
326 CallFunctionFlags flags, 330 CallFunctionFlags flags,
327 int position); 331 int position);
328 332
329 // Control flow 333 // Control flow
330 void Branch(bool if_true, JumpTarget* target); 334 void Branch(bool if_true, JumpTarget* target);
331 void CheckStack(); 335 void CheckStack();
332 336
333 struct InlineRuntimeLUT { 337 struct InlineRuntimeLUT {
334 void (CodeGenerator::*method)(ZoneList<Expression*>*); 338 void (CodeGenerator::*method)(ZoneList<Expression*>*);
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 void Print() { 736 void Print() {
733 PrintF("NumberToStringStub\n"); 737 PrintF("NumberToStringStub\n");
734 } 738 }
735 #endif 739 #endif
736 }; 740 };
737 741
738 742
739 } } // namespace v8::internal 743 } } // namespace v8::internal
740 744
741 #endif // V8_ARM_CODEGEN_ARM_H_ 745 #endif // V8_ARM_CODEGEN_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/codegen-arm.cc » ('j') | src/arm/codegen-arm.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698