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

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

Issue 8111006: Allow new-space JSFunction objects as constant-function properties. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: rebased Created 9 years 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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 LInstruction* instr, 200 LInstruction* instr,
201 LOperand* context); 201 LOperand* context);
202 202
203 // Generate a direct call to a known function. Expects the function 203 // Generate a direct call to a known function. Expects the function
204 // to be in edi. 204 // to be in edi.
205 void CallKnownFunction(Handle<JSFunction> function, 205 void CallKnownFunction(Handle<JSFunction> function,
206 int arity, 206 int arity,
207 LInstruction* instr, 207 LInstruction* instr,
208 CallKind call_kind); 208 CallKind call_kind);
209 209
210 void LoadHeapObject(Register result, Handle<HeapObject> object);
211
212 void RecordSafepointWithLazyDeopt(LInstruction* instr, 210 void RecordSafepointWithLazyDeopt(LInstruction* instr,
213 SafepointMode safepoint_mode); 211 SafepointMode safepoint_mode);
214 212
215 void RegisterEnvironmentForDeoptimization(LEnvironment* environment, 213 void RegisterEnvironmentForDeoptimization(LEnvironment* environment,
216 Safepoint::DeoptMode mode); 214 Safepoint::DeoptMode mode);
217 void DeoptimizeIf(Condition cc, LEnvironment* environment); 215 void DeoptimizeIf(Condition cc, LEnvironment* environment);
218 216
219 void AddToTranslation(Translation* translation, 217 void AddToTranslation(Translation* translation,
220 LOperand* op, 218 LOperand* op,
221 bool is_tagged); 219 bool is_tagged);
222 void PopulateDeoptimizationData(Handle<Code> code); 220 void PopulateDeoptimizationData(Handle<Code> code);
223 int DefineDeoptimizationLiteral(Handle<Object> literal); 221 int DefineDeoptimizationLiteral(Handle<Object> literal);
224 222
225 void PopulateDeoptimizationLiteralsWithInlinedFunctions(); 223 void PopulateDeoptimizationLiteralsWithInlinedFunctions();
226 224
227 Register ToRegister(int index) const; 225 Register ToRegister(int index) const;
228 XMMRegister ToDoubleRegister(int index) const; 226 XMMRegister ToDoubleRegister(int index) const;
229 int ToInteger32(LConstantOperand* op) const; 227 int ToInteger32(LConstantOperand* op) const;
228 Handle<Object> ToHandle(LConstantOperand* op) const;
230 double ToDouble(LConstantOperand* op) const; 229 double ToDouble(LConstantOperand* op) const;
231 Operand BuildFastArrayOperand(LOperand* elements_pointer, 230 Operand BuildFastArrayOperand(LOperand* elements_pointer,
232 LOperand* key, 231 LOperand* key,
233 ElementsKind elements_kind, 232 ElementsKind elements_kind,
234 uint32_t offset); 233 uint32_t offset);
235 234
236 // Specific math operations - used from DoUnaryMathOperation. 235 // Specific math operations - used from DoUnaryMathOperation.
237 void EmitIntegerMathAbs(LUnaryMathOperation* instr); 236 void EmitIntegerMathAbs(LUnaryMathOperation* instr);
238 void DoMathAbs(LUnaryMathOperation* instr); 237 void DoMathAbs(LUnaryMathOperation* instr);
239 void DoMathFloor(LUnaryMathOperation* instr); 238 void DoMathFloor(LUnaryMathOperation* instr);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 298
300 // Emits optimized code to deep-copy the contents of statically known 299 // Emits optimized code to deep-copy the contents of statically known
301 // object graphs (e.g. object literal boilerplate). 300 // object graphs (e.g. object literal boilerplate).
302 void EmitDeepCopy(Handle<JSObject> object, 301 void EmitDeepCopy(Handle<JSObject> object,
303 Register result, 302 Register result,
304 Register source, 303 Register source,
305 int* offset); 304 int* offset);
306 305
307 void EnsureSpaceForLazyDeopt(); 306 void EnsureSpaceForLazyDeopt();
308 307
308 // Emits code for pushing either a tagged constant, a (non-double)
309 // register, or a stack slot operand.
310 void EmitPushTaggedOperand(LOperand* operand);
311
309 LChunk* const chunk_; 312 LChunk* const chunk_;
310 MacroAssembler* const masm_; 313 MacroAssembler* const masm_;
311 CompilationInfo* const info_; 314 CompilationInfo* const info_;
312 315
313 int current_block_; 316 int current_block_;
314 int current_instruction_; 317 int current_instruction_;
315 const ZoneList<LInstruction*>* instructions_; 318 const ZoneList<LInstruction*>* instructions_;
316 ZoneList<LEnvironment*> deoptimizations_; 319 ZoneList<LEnvironment*> deoptimizations_;
317 ZoneList<Handle<Object> > deoptimization_literals_; 320 ZoneList<Handle<Object> > deoptimization_literals_;
318 int inlined_function_count_; 321 int inlined_function_count_;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 LCodeGen* codegen_; 388 LCodeGen* codegen_;
386 Label entry_; 389 Label entry_;
387 Label exit_; 390 Label exit_;
388 Label* external_exit_; 391 Label* external_exit_;
389 int instruction_index_; 392 int instruction_index_;
390 }; 393 };
391 394
392 } } // namespace v8::internal 395 } } // namespace v8::internal
393 396
394 #endif // V8_IA32_LITHIUM_CODEGEN_IA32_H_ 397 #endif // V8_IA32_LITHIUM_CODEGEN_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698