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

Side by Side Diff: src/mips/code-stubs-mips.cc

Issue 9231009: More spelling changes. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 8 years, 11 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 | « src/mips/builtins-mips.cc ('k') | src/mips/constants-mips.h » ('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 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 4043 matching lines...) Expand 10 before | Expand all | Expand 10 after
4054 } 4054 }
4055 4055
4056 4056
4057 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { 4057 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
4058 Label invoke, handler_entry, exit; 4058 Label invoke, handler_entry, exit;
4059 Isolate* isolate = masm->isolate(); 4059 Isolate* isolate = masm->isolate();
4060 4060
4061 // Registers: 4061 // Registers:
4062 // a0: entry address 4062 // a0: entry address
4063 // a1: function 4063 // a1: function
4064 // a2: reveiver 4064 // a2: receiver
4065 // a3: argc 4065 // a3: argc
4066 // 4066 //
4067 // Stack: 4067 // Stack:
4068 // 4 args slots 4068 // 4 args slots
4069 // args 4069 // args
4070 4070
4071 // Save callee saved registers on the stack. 4071 // Save callee saved registers on the stack.
4072 __ MultiPush(kCalleeSaved | ra.bit()); 4072 __ MultiPush(kCalleeSaved | ra.bit());
4073 4073
4074 if (CpuFeatures::IsSupported(FPU)) { 4074 if (CpuFeatures::IsSupported(FPU)) {
(...skipping 21 matching lines...) Expand all
4096 __ li(t0, Operand(ExternalReference(Isolate::kCEntryFPAddress, 4096 __ li(t0, Operand(ExternalReference(Isolate::kCEntryFPAddress,
4097 isolate))); 4097 isolate)));
4098 __ lw(t0, MemOperand(t0)); 4098 __ lw(t0, MemOperand(t0));
4099 __ Push(t3, t2, t1, t0); 4099 __ Push(t3, t2, t1, t0);
4100 // Set up frame pointer for the frame to be pushed. 4100 // Set up frame pointer for the frame to be pushed.
4101 __ addiu(fp, sp, -EntryFrameConstants::kCallerFPOffset); 4101 __ addiu(fp, sp, -EntryFrameConstants::kCallerFPOffset);
4102 4102
4103 // Registers: 4103 // Registers:
4104 // a0: entry_address 4104 // a0: entry_address
4105 // a1: function 4105 // a1: function
4106 // a2: reveiver_pointer 4106 // a2: receiver_pointer
4107 // a3: argc 4107 // a3: argc
4108 // s0: argv 4108 // s0: argv
4109 // 4109 //
4110 // Stack: 4110 // Stack:
4111 // caller fp | 4111 // caller fp |
4112 // function slot | entry frame 4112 // function slot | entry frame
4113 // context slot | 4113 // context slot |
4114 // bad fp (0xff...f) | 4114 // bad fp (0xff...f) |
4115 // callee saved registers + ra 4115 // callee saved registers + ra
4116 // 4 args slots 4116 // 4 args slots
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
4163 isolate))); 4163 isolate)));
4164 __ sw(t1, MemOperand(t0)); 4164 __ sw(t1, MemOperand(t0));
4165 4165
4166 // Invoke the function by calling through JS entry trampoline builtin. 4166 // Invoke the function by calling through JS entry trampoline builtin.
4167 // Notice that we cannot store a reference to the trampoline code directly in 4167 // Notice that we cannot store a reference to the trampoline code directly in
4168 // this stub, because runtime stubs are not traversed when doing GC. 4168 // this stub, because runtime stubs are not traversed when doing GC.
4169 4169
4170 // Registers: 4170 // Registers:
4171 // a0: entry_address 4171 // a0: entry_address
4172 // a1: function 4172 // a1: function
4173 // a2: reveiver_pointer 4173 // a2: receiver_pointer
4174 // a3: argc 4174 // a3: argc
4175 // s0: argv 4175 // s0: argv
4176 // 4176 //
4177 // Stack: 4177 // Stack:
4178 // handler frame 4178 // handler frame
4179 // entry frame 4179 // entry frame
4180 // callee saved registers + ra 4180 // callee saved registers + ra
4181 // 4 args slots 4181 // 4 args slots
4182 // args 4182 // args
4183 4183
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after
4999 __ Branch(&external_string, ne, at, Operand(zero_reg)); 4999 __ Branch(&external_string, ne, at, Operand(zero_reg));
5000 5000
5001 __ bind(&seq_string); 5001 __ bind(&seq_string);
5002 // subject: Subject string 5002 // subject: Subject string
5003 // regexp_data: RegExp data (FixedArray) 5003 // regexp_data: RegExp data (FixedArray)
5004 // a0: Instance type of subject string 5004 // a0: Instance type of subject string
5005 STATIC_ASSERT(kStringEncodingMask == 4); 5005 STATIC_ASSERT(kStringEncodingMask == 4);
5006 STATIC_ASSERT(kAsciiStringTag == 4); 5006 STATIC_ASSERT(kAsciiStringTag == 4);
5007 STATIC_ASSERT(kTwoByteStringTag == 0); 5007 STATIC_ASSERT(kTwoByteStringTag == 0);
5008 // Find the code object based on the assumptions above. 5008 // Find the code object based on the assumptions above.
5009 __ And(a0, a0, Operand(kStringEncodingMask)); // Non-zero for ascii. 5009 __ And(a0, a0, Operand(kStringEncodingMask)); // Non-zero for ASCII.
5010 __ lw(t9, FieldMemOperand(regexp_data, JSRegExp::kDataAsciiCodeOffset)); 5010 __ lw(t9, FieldMemOperand(regexp_data, JSRegExp::kDataAsciiCodeOffset));
5011 __ sra(a3, a0, 2); // a3 is 1 for ascii, 0 for UC16 (usyed below). 5011 __ sra(a3, a0, 2); // a3 is 1 for ASCII, 0 for UC16 (used below).
5012 __ lw(t1, FieldMemOperand(regexp_data, JSRegExp::kDataUC16CodeOffset)); 5012 __ lw(t1, FieldMemOperand(regexp_data, JSRegExp::kDataUC16CodeOffset));
5013 __ movz(t9, t1, a0); // If UC16 (a0 is 0), replace t9 w/kDataUC16CodeOffset. 5013 __ movz(t9, t1, a0); // If UC16 (a0 is 0), replace t9 w/kDataUC16CodeOffset.
5014 5014
5015 // Check that the irregexp code has been generated for the actual string 5015 // Check that the irregexp code has been generated for the actual string
5016 // encoding. If it has, the field contains a code object otherwise it contains 5016 // encoding. If it has, the field contains a code object otherwise it contains
5017 // a smi (code flushing support). 5017 // a smi (code flushing support).
5018 __ JumpIfSmi(t9, &runtime); 5018 __ JumpIfSmi(t9, &runtime);
5019 5019
5020 // a3: encoding of subject string (1 if ASCII, 0 if two_byte); 5020 // a3: encoding of subject string (1 if ASCII, 0 if two_byte);
5021 // t9: code 5021 // t9: code
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
6026 // Short-cut for the case of trivial substring. 6026 // Short-cut for the case of trivial substring.
6027 Label return_v0; 6027 Label return_v0;
6028 // v0: original string 6028 // v0: original string
6029 // a2: result string length 6029 // a2: result string length
6030 __ lw(t0, FieldMemOperand(v0, String::kLengthOffset)); 6030 __ lw(t0, FieldMemOperand(v0, String::kLengthOffset));
6031 __ sra(t0, t0, 1); 6031 __ sra(t0, t0, 1);
6032 __ Branch(&return_v0, eq, a2, Operand(t0)); 6032 __ Branch(&return_v0, eq, a2, Operand(t0));
6033 6033
6034 6034
6035 Label result_longer_than_two; 6035 Label result_longer_than_two;
6036 // Check for special case of two character ascii string, in which case 6036 // Check for special case of two character ASCII string, in which case
6037 // we do a lookup in the symbol table first. 6037 // we do a lookup in the symbol table first.
6038 __ li(t0, 2); 6038 __ li(t0, 2);
6039 __ Branch(&result_longer_than_two, gt, a2, Operand(t0)); 6039 __ Branch(&result_longer_than_two, gt, a2, Operand(t0));
6040 __ Branch(&runtime, lt, a2, Operand(t0)); 6040 __ Branch(&runtime, lt, a2, Operand(t0));
6041 6041
6042 __ JumpIfInstanceTypeIsNotSequentialAscii(a1, a1, &runtime); 6042 __ JumpIfInstanceTypeIsNotSequentialAscii(a1, a1, &runtime);
6043 6043
6044 // Get the two characters forming the sub string. 6044 // Get the two characters forming the sub string.
6045 __ Addu(v0, v0, Operand(a3)); 6045 __ Addu(v0, v0, Operand(a3));
6046 __ lbu(a3, FieldMemOperand(v0, SeqAsciiString::kHeaderSize)); 6046 __ lbu(a3, FieldMemOperand(v0, SeqAsciiString::kHeaderSize));
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
6157 // Locate first character of underlying subject string. 6157 // Locate first character of underlying subject string.
6158 STATIC_ASSERT(SeqTwoByteString::kHeaderSize == SeqAsciiString::kHeaderSize); 6158 STATIC_ASSERT(SeqTwoByteString::kHeaderSize == SeqAsciiString::kHeaderSize);
6159 __ Addu(t1, t1, Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag)); 6159 __ Addu(t1, t1, Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag));
6160 6160
6161 __ bind(&allocate_result); 6161 __ bind(&allocate_result);
6162 // Sequential acii string. Allocate the result. 6162 // Sequential acii string. Allocate the result.
6163 STATIC_ASSERT((kAsciiStringTag & kStringEncodingMask) != 0); 6163 STATIC_ASSERT((kAsciiStringTag & kStringEncodingMask) != 0);
6164 __ And(t0, a1, Operand(kStringEncodingMask)); 6164 __ And(t0, a1, Operand(kStringEncodingMask));
6165 __ Branch(&two_byte_sequential, eq, t0, Operand(zero_reg)); 6165 __ Branch(&two_byte_sequential, eq, t0, Operand(zero_reg));
6166 6166
6167 // Allocate and copy the resulting ascii string. 6167 // Allocate and copy the resulting ASCII string.
6168 __ AllocateAsciiString(v0, a2, t0, t2, t3, &runtime); 6168 __ AllocateAsciiString(v0, a2, t0, t2, t3, &runtime);
6169 6169
6170 // Locate first character of substring to copy. 6170 // Locate first character of substring to copy.
6171 __ Addu(t1, t1, a3); 6171 __ Addu(t1, t1, a3);
6172 6172
6173 // Locate first character of result. 6173 // Locate first character of result.
6174 __ Addu(a1, v0, Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag)); 6174 __ Addu(a1, v0, Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag));
6175 6175
6176 // v0: result string 6176 // v0: result string
6177 // a1: first character of result string 6177 // a1: first character of result string
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
6501 // If result is not supposed to be flat, allocate a cons string object. 6501 // If result is not supposed to be flat, allocate a cons string object.
6502 // If both strings are ASCII the result is an ASCII cons string. 6502 // If both strings are ASCII the result is an ASCII cons string.
6503 if (flags_ != NO_STRING_ADD_FLAGS) { 6503 if (flags_ != NO_STRING_ADD_FLAGS) {
6504 __ lw(t0, FieldMemOperand(a0, HeapObject::kMapOffset)); 6504 __ lw(t0, FieldMemOperand(a0, HeapObject::kMapOffset));
6505 __ lw(t1, FieldMemOperand(a1, HeapObject::kMapOffset)); 6505 __ lw(t1, FieldMemOperand(a1, HeapObject::kMapOffset));
6506 __ lbu(t0, FieldMemOperand(t0, Map::kInstanceTypeOffset)); 6506 __ lbu(t0, FieldMemOperand(t0, Map::kInstanceTypeOffset));
6507 __ lbu(t1, FieldMemOperand(t1, Map::kInstanceTypeOffset)); 6507 __ lbu(t1, FieldMemOperand(t1, Map::kInstanceTypeOffset));
6508 } 6508 }
6509 Label non_ascii, allocated, ascii_data; 6509 Label non_ascii, allocated, ascii_data;
6510 STATIC_ASSERT(kTwoByteStringTag == 0); 6510 STATIC_ASSERT(kTwoByteStringTag == 0);
6511 // Branch to non_ascii if either string-encoding field is zero (non-ascii). 6511 // Branch to non_ascii if either string-encoding field is zero (non-ASCII).
6512 __ And(t4, t0, Operand(t1)); 6512 __ And(t4, t0, Operand(t1));
6513 __ And(t4, t4, Operand(kStringEncodingMask)); 6513 __ And(t4, t4, Operand(kStringEncodingMask));
6514 __ Branch(&non_ascii, eq, t4, Operand(zero_reg)); 6514 __ Branch(&non_ascii, eq, t4, Operand(zero_reg));
6515 6515
6516 // Allocate an ASCII cons string. 6516 // Allocate an ASCII cons string.
6517 __ bind(&ascii_data); 6517 __ bind(&ascii_data);
6518 __ AllocateAsciiConsString(v0, t2, t0, t1, &call_runtime); 6518 __ AllocateAsciiConsString(v0, t2, t0, t1, &call_runtime);
6519 __ bind(&allocated); 6519 __ bind(&allocated);
6520 // Fill the fields of the cons string. 6520 // Fill the fields of the cons string.
6521 __ sw(a0, FieldMemOperand(v0, ConsString::kFirstOffset)); 6521 __ sw(a0, FieldMemOperand(v0, ConsString::kFirstOffset));
(...skipping 1059 matching lines...) Expand 10 before | Expand all | Expand 10 after
7581 __ Ret(USE_DELAY_SLOT); 7581 __ Ret(USE_DELAY_SLOT);
7582 __ mov(v0, a0); 7582 __ mov(v0, a0);
7583 } 7583 }
7584 7584
7585 7585
7586 #undef __ 7586 #undef __
7587 7587
7588 } } // namespace v8::internal 7588 } } // namespace v8::internal
7589 7589
7590 #endif // V8_TARGET_ARCH_MIPS 7590 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/builtins-mips.cc ('k') | src/mips/constants-mips.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698