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

Side by Side Diff: src/x64/stub-cache-x64.cc

Issue 16021010: make isolate accessible from returnvalue (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 6 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
OLDNEW
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
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
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
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
OLDNEW
« include/v8.h ('K') | « src/ia32/stub-cache-ia32.cc ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698