| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 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 362 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   373     push(holder_reg);  // Temporarily save holder on the stack. |   373     push(holder_reg);  // Temporarily save holder on the stack. | 
|   374     // Read the first word and compare to the native_context_map. |   374     // Read the first word and compare to the native_context_map. | 
|   375     lw(holder_reg, FieldMemOperand(scratch, HeapObject::kMapOffset)); |   375     lw(holder_reg, FieldMemOperand(scratch, HeapObject::kMapOffset)); | 
|   376     LoadRoot(at, Heap::kNativeContextMapRootIndex); |   376     LoadRoot(at, Heap::kNativeContextMapRootIndex); | 
|   377     Check(eq, "JSGlobalObject::native_context should be a native context.", |   377     Check(eq, "JSGlobalObject::native_context should be a native context.", | 
|   378           holder_reg, Operand(at)); |   378           holder_reg, Operand(at)); | 
|   379     pop(holder_reg);  // Restore holder. |   379     pop(holder_reg);  // Restore holder. | 
|   380   } |   380   } | 
|   381  |   381  | 
|   382   // Check if both contexts are the same. |   382   // Check if both contexts are the same. | 
|   383   lw(at, FieldMemOperand(holder_reg, JSGlobalProxy::kContextOffset)); |   383   lw(at, FieldMemOperand(holder_reg, JSGlobalProxy::kNativeContextOffset)); | 
|   384   Branch(&same_contexts, eq, scratch, Operand(at)); |   384   Branch(&same_contexts, eq, scratch, Operand(at)); | 
|   385  |   385  | 
|   386   // Check the context is a native context. |   386   // Check the context is a native context. | 
|   387   if (emit_debug_code()) { |   387   if (emit_debug_code()) { | 
|   388     // TODO(119): Avoid push(holder_reg)/pop(holder_reg). |   388     // TODO(119): Avoid push(holder_reg)/pop(holder_reg). | 
|   389     push(holder_reg);  // Temporarily save holder on the stack. |   389     push(holder_reg);  // Temporarily save holder on the stack. | 
|   390     mov(holder_reg, at);  // Move at to its holding place. |   390     mov(holder_reg, at);  // Move at to its holding place. | 
|   391     LoadRoot(at, Heap::kNullValueRootIndex); |   391     LoadRoot(at, Heap::kNullValueRootIndex); | 
|   392     Check(ne, "JSGlobalProxy::context() should not be null.", |   392     Check(ne, "JSGlobalProxy::context() should not be null.", | 
|   393           holder_reg, Operand(at)); |   393           holder_reg, Operand(at)); | 
|   394  |   394  | 
|   395     lw(holder_reg, FieldMemOperand(holder_reg, HeapObject::kMapOffset)); |   395     lw(holder_reg, FieldMemOperand(holder_reg, HeapObject::kMapOffset)); | 
|   396     LoadRoot(at, Heap::kNativeContextMapRootIndex); |   396     LoadRoot(at, Heap::kNativeContextMapRootIndex); | 
|   397     Check(eq, "JSGlobalObject::native_context should be a native context.", |   397     Check(eq, "JSGlobalObject::native_context should be a native context.", | 
|   398           holder_reg, Operand(at)); |   398           holder_reg, Operand(at)); | 
|   399     // Restore at is not needed. at is reloaded below. |   399     // Restore at is not needed. at is reloaded below. | 
|   400     pop(holder_reg);  // Restore holder. |   400     pop(holder_reg);  // Restore holder. | 
|   401     // Restore at to holder's context. |   401     // Restore at to holder's context. | 
|   402     lw(at, FieldMemOperand(holder_reg, JSGlobalProxy::kContextOffset)); |   402     lw(at, FieldMemOperand(holder_reg, JSGlobalProxy::kNativeContextOffset)); | 
|   403   } |   403   } | 
|   404  |   404  | 
|   405   // Check that the security token in the calling global object is |   405   // Check that the security token in the calling global object is | 
|   406   // compatible with the security token in the receiving global |   406   // compatible with the security token in the receiving global | 
|   407   // object. |   407   // object. | 
|   408   int token_offset = Context::kHeaderSize + |   408   int token_offset = Context::kHeaderSize + | 
|   409                      Context::SECURITY_TOKEN_INDEX * kPointerSize; |   409                      Context::SECURITY_TOKEN_INDEX * kPointerSize; | 
|   410  |   410  | 
|   411   lw(scratch, FieldMemOperand(scratch, token_offset)); |   411   lw(scratch, FieldMemOperand(scratch, token_offset)); | 
|   412   lw(at, FieldMemOperand(at, token_offset)); |   412   lw(at, FieldMemOperand(at, token_offset)); | 
| (...skipping 5052 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5465        opcode == BGTZL); |  5465        opcode == BGTZL); | 
|  5466   opcode = (cond == eq) ? BEQ : BNE; |  5466   opcode = (cond == eq) ? BEQ : BNE; | 
|  5467   instr = (instr & ~kOpcodeMask) | opcode; |  5467   instr = (instr & ~kOpcodeMask) | opcode; | 
|  5468   masm_.emit(instr); |  5468   masm_.emit(instr); | 
|  5469 } |  5469 } | 
|  5470  |  5470  | 
|  5471  |  5471  | 
|  5472 } }  // namespace v8::internal |  5472 } }  // namespace v8::internal | 
|  5473  |  5473  | 
|  5474 #endif  // V8_TARGET_ARCH_MIPS |  5474 #endif  // V8_TARGET_ARCH_MIPS | 
| OLD | NEW |