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

Side by Side Diff: src/arm/macro-assembler-arm.h

Issue 571005: ARM native string addition. (Closed)
Patch Set: Fixed bug in cons-allocation and string detection. Created 10 years, 10 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
« no previous file with comments | « src/arm/codegen-arm.cc ('k') | src/arm/macro-assembler-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 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-2009 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 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 Register scratch1, 216 Register scratch1,
217 Register scratch2, 217 Register scratch2,
218 Register scratch3, 218 Register scratch3,
219 Label* gc_required); 219 Label* gc_required);
220 void AllocateAsciiString(Register result, 220 void AllocateAsciiString(Register result,
221 Register length, 221 Register length,
222 Register scratch1, 222 Register scratch1,
223 Register scratch2, 223 Register scratch2,
224 Register scratch3, 224 Register scratch3,
225 Label* gc_required); 225 Label* gc_required);
226 void AllocateTwoByteConsString(Register result,
227 Register length,
228 Register scratch1,
229 Register scratch2,
230 Label* gc_required);
231 void AllocateAsciiConsString(Register result,
232 Register length,
233 Register scratch1,
234 Register scratch2,
235 Label* gc_required);
226 236
227 237
228 // --------------------------------------------------------------------------- 238 // ---------------------------------------------------------------------------
229 // Support functions. 239 // Support functions.
230 240
231 // Try to get function prototype of a function and puts the value in 241 // Try to get function prototype of a function and puts the value in
232 // the result register. Checks that the function really is a 242 // the result register. Checks that the function really is a
233 // function and jumps to the miss label if the fast checks fail. The 243 // function and jumps to the miss label if the fast checks fail. The
234 // function register will be untouched; the other registers may be 244 // function register will be untouched; the other registers may be
235 // clobbered. 245 // clobbered.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 Register outHighReg, 305 Register outHighReg,
296 Register outLowReg); 306 Register outLowReg);
297 307
298 308
299 // --------------------------------------------------------------------------- 309 // ---------------------------------------------------------------------------
300 // Runtime calls 310 // Runtime calls
301 311
302 // Call a code stub. 312 // Call a code stub.
303 void CallStub(CodeStub* stub, Condition cond = al); 313 void CallStub(CodeStub* stub, Condition cond = al);
304 314
315 // Call a code stub.
316 void TailCallStub(CodeStub* stub, Condition cond = al);
317
305 // Return from a code stub after popping its arguments. 318 // Return from a code stub after popping its arguments.
306 void StubReturn(int argc); 319 void StubReturn(int argc);
307 320
308 // Call a runtime routine. 321 // Call a runtime routine.
309 // Eventually this should be used for all C calls. 322 // Eventually this should be used for all C calls.
310 void CallRuntime(Runtime::Function* f, int num_arguments); 323 void CallRuntime(Runtime::Function* f, int num_arguments);
311 324
312 // Convenience function: Same as above, but takes the fid instead. 325 // Convenience function: Same as above, but takes the fid instead.
313 void CallRuntime(Runtime::FunctionId fid, int num_arguments); 326 void CallRuntime(Runtime::FunctionId fid, int num_arguments);
314 327
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 // Print a message to stdout and abort execution. 377 // Print a message to stdout and abort execution.
365 void Abort(const char* msg); 378 void Abort(const char* msg);
366 379
367 // Verify restrictions about code generated in stubs. 380 // Verify restrictions about code generated in stubs.
368 void set_generating_stub(bool value) { generating_stub_ = value; } 381 void set_generating_stub(bool value) { generating_stub_ = value; }
369 bool generating_stub() { return generating_stub_; } 382 bool generating_stub() { return generating_stub_; }
370 void set_allow_stub_calls(bool value) { allow_stub_calls_ = value; } 383 void set_allow_stub_calls(bool value) { allow_stub_calls_ = value; }
371 bool allow_stub_calls() { return allow_stub_calls_; } 384 bool allow_stub_calls() { return allow_stub_calls_; }
372 385
373 // --------------------------------------------------------------------------- 386 // ---------------------------------------------------------------------------
387 // Smi utilities
388
389 // Jump if either of the registers contain a non-smi.
390 void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi);
391 // Jump if either of the registers contain a smi.
392 void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi);
393
394 // ---------------------------------------------------------------------------
374 // String utilities 395 // String utilities
375 396
376 // Checks if both objects are sequential ASCII strings and jumps to label 397 // Checks if both objects are sequential ASCII strings and jumps to label
377 // if either is not. Assumes that neither object is a smi. 398 // if either is not. Assumes that neither object is a smi.
378 void JumpIfNonSmisNotBothSequentialAsciiStrings(Register object1, 399 void JumpIfNonSmisNotBothSequentialAsciiStrings(Register object1,
379 Register object2, 400 Register object2,
380 Register scratch1, 401 Register scratch1,
381 Register scratch2, 402 Register scratch2,
382 Label *failure); 403 Label *failure);
383 404
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 484 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
464 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 485 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
465 #else 486 #else
466 #define ACCESS_MASM(masm) masm-> 487 #define ACCESS_MASM(masm) masm->
467 #endif 488 #endif
468 489
469 490
470 } } // namespace v8::internal 491 } } // namespace v8::internal
471 492
472 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 493 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « src/arm/codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698