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 1285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1296 | 1296 |
1297 __ push(receiver()); // receiver | 1297 __ push(receiver()); // receiver |
1298 __ push(reg); // holder | 1298 __ push(reg); // holder |
1299 if (heap()->InNewSpace(callback->data())) { | 1299 if (heap()->InNewSpace(callback->data())) { |
1300 __ Move(scratch1(), callback); | 1300 __ Move(scratch1(), callback); |
1301 __ push(FieldOperand(scratch1(), | 1301 __ push(FieldOperand(scratch1(), |
1302 ExecutableAccessorInfo::kDataOffset)); // data | 1302 ExecutableAccessorInfo::kDataOffset)); // data |
1303 } else { | 1303 } else { |
1304 __ Push(Handle<Object>(callback->data(), isolate())); | 1304 __ Push(Handle<Object>(callback->data(), isolate())); |
1305 } | 1305 } |
1306 __ PushAddress(ExternalReference::isolate_address(isolate())); | |
1307 __ LoadRoot(kScratchRegister, Heap::kUndefinedValueRootIndex); | 1306 __ LoadRoot(kScratchRegister, Heap::kUndefinedValueRootIndex); |
1308 __ push(kScratchRegister); // return value | 1307 __ push(kScratchRegister); // return value |
| 1308 __ PushAddress(ExternalReference::isolate_address(isolate())); |
1309 __ push(name()); // name | 1309 __ push(name()); // name |
1310 // Save a pointer to where we pushed the arguments pointer. This will be | 1310 // Save a pointer to where we pushed the arguments pointer. This will be |
1311 // passed as the const ExecutableAccessorInfo& to the C++ callback. | 1311 // passed as the const ExecutableAccessorInfo& to the C++ callback. |
1312 | 1312 |
1313 Address getter_address = v8::ToCData<Address>(callback->getter()); | 1313 Address getter_address = v8::ToCData<Address>(callback->getter()); |
1314 bool returns_handle = | 1314 bool returns_handle = |
1315 !CallbackTable::ReturnsVoid(isolate(), getter_address); | 1315 !CallbackTable::ReturnsVoid(isolate(), getter_address); |
1316 | 1316 |
1317 #if defined(__MINGW64__) | 1317 #if defined(__MINGW64__) |
1318 Register accessor_info_arg = rdx; | 1318 Register accessor_info_arg = rdx; |
(...skipping 24 matching lines...) Expand all Loading... |
1343 // v8::AccessorInfo::args_. | 1343 // v8::AccessorInfo::args_. |
1344 __ movq(StackSpaceOperand(0), rax); | 1344 __ movq(StackSpaceOperand(0), rax); |
1345 | 1345 |
1346 // The context register (rsi) has been saved in PrepareCallApiFunction and | 1346 // The context register (rsi) has been saved in PrepareCallApiFunction and |
1347 // could be used to pass arguments. | 1347 // could be used to pass arguments. |
1348 __ lea(accessor_info_arg, StackSpaceOperand(0)); | 1348 __ lea(accessor_info_arg, StackSpaceOperand(0)); |
1349 | 1349 |
1350 __ CallApiFunctionAndReturn(getter_address, | 1350 __ CallApiFunctionAndReturn(getter_address, |
1351 kStackSpace, | 1351 kStackSpace, |
1352 returns_handle, | 1352 returns_handle, |
1353 3); | 1353 4); |
1354 } | 1354 } |
1355 | 1355 |
1356 | 1356 |
1357 void BaseLoadStubCompiler::GenerateLoadConstant(Handle<JSFunction> value) { | 1357 void BaseLoadStubCompiler::GenerateLoadConstant(Handle<JSFunction> value) { |
1358 // Return the constant value. | 1358 // Return the constant value. |
1359 __ LoadHeapObject(rax, value); | 1359 __ LoadHeapObject(rax, value); |
1360 __ ret(0); | 1360 __ ret(0); |
1361 } | 1361 } |
1362 | 1362 |
1363 | 1363 |
(...skipping 2252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3616 TailCallBuiltin(masm, Builtins::kKeyedStoreIC_Slow); | 3616 TailCallBuiltin(masm, Builtins::kKeyedStoreIC_Slow); |
3617 } | 3617 } |
3618 } | 3618 } |
3619 | 3619 |
3620 | 3620 |
3621 #undef __ | 3621 #undef __ |
3622 | 3622 |
3623 } } // namespace v8::internal | 3623 } } // namespace v8::internal |
3624 | 3624 |
3625 #endif // V8_TARGET_ARCH_X64 | 3625 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |