OLD | NEW |
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 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 // Constants related to patching of inlined load/store. | 272 // Constants related to patching of inlined load/store. |
273 static int GetInlinedKeyedLoadInstructionsAfterPatch() { | 273 static int GetInlinedKeyedLoadInstructionsAfterPatch() { |
274 return FLAG_debug_code ? 32 : 13; | 274 return FLAG_debug_code ? 32 : 13; |
275 } | 275 } |
276 static const int kInlinedKeyedStoreInstructionsAfterPatch = 5; | 276 static const int kInlinedKeyedStoreInstructionsAfterPatch = 5; |
277 static int GetInlinedNamedStoreInstructionsAfterPatch() { | 277 static int GetInlinedNamedStoreInstructionsAfterPatch() { |
278 ASSERT(inlined_write_barrier_size_ != -1); | 278 ASSERT(inlined_write_barrier_size_ != -1); |
279 return inlined_write_barrier_size_ + 4; | 279 return inlined_write_barrier_size_ + 4; |
280 } | 280 } |
281 | 281 |
282 static MemOperand ContextOperand(Register context, int index) { | |
283 return MemOperand(context, Context::SlotOffset(index)); | |
284 } | |
285 | |
286 private: | 282 private: |
287 // Type of a member function that generates inline code for a native function. | 283 // Type of a member function that generates inline code for a native function. |
288 typedef void (CodeGenerator::*InlineFunctionGenerator) | 284 typedef void (CodeGenerator::*InlineFunctionGenerator) |
289 (ZoneList<Expression*>*); | 285 (ZoneList<Expression*>*); |
290 | 286 |
291 static const InlineFunctionGenerator kInlineFunctionGenerators[]; | 287 static const InlineFunctionGenerator kInlineFunctionGenerators[]; |
292 | 288 |
293 // Construction/Destruction | 289 // Construction/Destruction |
294 explicit CodeGenerator(MacroAssembler* masm); | 290 explicit CodeGenerator(MacroAssembler* masm); |
295 | 291 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 void UnloadReference(Reference* ref); | 338 void UnloadReference(Reference* ref); |
343 | 339 |
344 MemOperand SlotOperand(Slot* slot, Register tmp); | 340 MemOperand SlotOperand(Slot* slot, Register tmp); |
345 | 341 |
346 MemOperand ContextSlotOperandCheckExtensions(Slot* slot, | 342 MemOperand ContextSlotOperandCheckExtensions(Slot* slot, |
347 Register tmp, | 343 Register tmp, |
348 Register tmp2, | 344 Register tmp2, |
349 JumpTarget* slow); | 345 JumpTarget* slow); |
350 | 346 |
351 // Expressions | 347 // Expressions |
352 static MemOperand GlobalObject() { | |
353 return ContextOperand(cp, Context::GLOBAL_INDEX); | |
354 } | |
355 | |
356 void LoadCondition(Expression* x, | 348 void LoadCondition(Expression* x, |
357 JumpTarget* true_target, | 349 JumpTarget* true_target, |
358 JumpTarget* false_target, | 350 JumpTarget* false_target, |
359 bool force_cc); | 351 bool force_cc); |
360 void Load(Expression* expr); | 352 void Load(Expression* expr); |
361 void LoadGlobal(); | 353 void LoadGlobal(); |
362 void LoadGlobalReceiver(Register scratch); | 354 void LoadGlobalReceiver(Register scratch); |
363 | 355 |
364 // Read a value from a slot and leave it on top of the expression stack. | 356 // Read a value from a slot and leave it on top of the expression stack. |
365 void LoadFromSlot(Slot* slot, TypeofState typeof_state); | 357 void LoadFromSlot(Slot* slot, TypeofState typeof_state); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 | 437 |
446 // Control flow | 438 // Control flow |
447 void Branch(bool if_true, JumpTarget* target); | 439 void Branch(bool if_true, JumpTarget* target); |
448 void CheckStack(); | 440 void CheckStack(); |
449 | 441 |
450 bool CheckForInlineRuntimeCall(CallRuntime* node); | 442 bool CheckForInlineRuntimeCall(CallRuntime* node); |
451 | 443 |
452 static Handle<Code> ComputeLazyCompile(int argc); | 444 static Handle<Code> ComputeLazyCompile(int argc); |
453 void ProcessDeclarations(ZoneList<Declaration*>* declarations); | 445 void ProcessDeclarations(ZoneList<Declaration*>* declarations); |
454 | 446 |
455 static Handle<Code> ComputeCallInitialize(int argc, InLoopFlag in_loop); | |
456 | |
457 static Handle<Code> ComputeKeyedCallInitialize(int argc, InLoopFlag in_loop); | |
458 | |
459 // Declare global variables and functions in the given array of | 447 // Declare global variables and functions in the given array of |
460 // name/value pairs. | 448 // name/value pairs. |
461 void DeclareGlobals(Handle<FixedArray> pairs); | 449 void DeclareGlobals(Handle<FixedArray> pairs); |
462 | 450 |
463 // Instantiate the function based on the shared function info. | 451 // Instantiate the function based on the shared function info. |
464 void InstantiateFunction(Handle<SharedFunctionInfo> function_info); | 452 void InstantiateFunction(Handle<SharedFunctionInfo> function_info); |
465 | 453 |
466 // Support for type checks. | 454 // Support for type checks. |
467 void GenerateIsSmi(ZoneList<Expression*>* args); | 455 void GenerateIsSmi(ZoneList<Expression*>* args); |
468 void GenerateIsNonNegativeSmi(ZoneList<Expression*>* args); | 456 void GenerateIsNonNegativeSmi(ZoneList<Expression*>* args); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 friend class FullCodeGenerator; | 585 friend class FullCodeGenerator; |
598 friend class FullCodeGenSyntaxChecker; | 586 friend class FullCodeGenSyntaxChecker; |
599 | 587 |
600 DISALLOW_COPY_AND_ASSIGN(CodeGenerator); | 588 DISALLOW_COPY_AND_ASSIGN(CodeGenerator); |
601 }; | 589 }; |
602 | 590 |
603 | 591 |
604 } } // namespace v8::internal | 592 } } // namespace v8::internal |
605 | 593 |
606 #endif // V8_ARM_CODEGEN_ARM_H_ | 594 #endif // V8_ARM_CODEGEN_ARM_H_ |
OLD | NEW |