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

Side by Side Diff: src/arm64/simulator-arm64.h

Issue 282783004: Reland of "v8::TryCatch now works correctly with ASAN's UseAfterReturn mode enabled." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remake Created 6 years, 7 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/arm/simulator-arm.h ('k') | src/base/macros.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_ARM64_SIMULATOR_ARM64_H_ 5 #ifndef V8_ARM64_SIMULATOR_ARM64_H_
6 #define V8_ARM64_SIMULATOR_ARM64_H_ 6 #define V8_ARM64_SIMULATOR_ARM64_H_
7 7
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 Isolate* isolate); 47 Isolate* isolate);
48 48
49 // Call the generated regexp code directly. The code at the entry address 49 // Call the generated regexp code directly. The code at the entry address
50 // should act as a function matching the type arm64_regexp_matcher. 50 // should act as a function matching the type arm64_regexp_matcher.
51 // The ninth argument is a dummy that reserves the space used for 51 // The ninth argument is a dummy that reserves the space used for
52 // the return address added by the ExitFrame in native calls. 52 // the return address added by the ExitFrame in native calls.
53 #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6, p7, p8) \ 53 #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6, p7, p8) \
54 (FUNCTION_CAST<arm64_regexp_matcher>(entry)( \ 54 (FUNCTION_CAST<arm64_regexp_matcher>(entry)( \
55 p0, p1, p2, p3, p4, p5, p6, p7, NULL, p8)) 55 p0, p1, p2, p3, p4, p5, p6, p7, NULL, p8))
56 56
57 #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
58 reinterpret_cast<TryCatch*>(try_catch_address)
59
60 // Running without a simulator there is nothing to do. 57 // Running without a simulator there is nothing to do.
61 class SimulatorStack : public v8::internal::AllStatic { 58 class SimulatorStack : public v8::internal::AllStatic {
62 public: 59 public:
63 static uintptr_t JsLimitFromCLimit(v8::internal::Isolate* isolate, 60 static uintptr_t JsLimitFromCLimit(v8::internal::Isolate* isolate,
64 uintptr_t c_limit) { 61 uintptr_t c_limit) {
65 USE(isolate); 62 USE(isolate);
66 return c_limit; 63 return c_limit;
67 } 64 }
68 65
69 static uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) { 66 static uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
(...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \ 847 #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
851 reinterpret_cast<Object*>(Simulator::current(Isolate::Current())->CallJS( \ 848 reinterpret_cast<Object*>(Simulator::current(Isolate::Current())->CallJS( \
852 FUNCTION_ADDR(entry), \ 849 FUNCTION_ADDR(entry), \
853 p0, p1, p2, p3, p4)) 850 p0, p1, p2, p3, p4))
854 851
855 #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6, p7, p8) \ 852 #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6, p7, p8) \
856 Simulator::current(Isolate::Current())->CallRegExp( \ 853 Simulator::current(Isolate::Current())->CallRegExp( \
857 entry, \ 854 entry, \
858 p0, p1, p2, p3, p4, p5, p6, p7, NULL, p8) 855 p0, p1, p2, p3, p4, p5, p6, p7, NULL, p8)
859 856
860 #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
861 try_catch_address == NULL ? \
862 NULL : *(reinterpret_cast<TryCatch**>(try_catch_address))
863
864 857
865 // The simulator has its own stack. Thus it has a different stack limit from 858 // The simulator has its own stack. Thus it has a different stack limit from
866 // the C-based native code. 859 // the C-based native code.
867 // See also 'class SimulatorStack' in arm/simulator-arm.h. 860 // See also 'class SimulatorStack' in arm/simulator-arm.h.
868 class SimulatorStack : public v8::internal::AllStatic { 861 class SimulatorStack : public v8::internal::AllStatic {
869 public: 862 public:
870 static uintptr_t JsLimitFromCLimit(v8::internal::Isolate* isolate, 863 static uintptr_t JsLimitFromCLimit(v8::internal::Isolate* isolate,
871 uintptr_t c_limit) { 864 uintptr_t c_limit) {
872 return Simulator::current(isolate)->StackLimit(); 865 return Simulator::current(isolate)->StackLimit();
873 } 866 }
874 867
875 static uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) { 868 static uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
876 Simulator* sim = Simulator::current(Isolate::Current()); 869 Simulator* sim = Simulator::current(Isolate::Current());
877 return sim->PushAddress(try_catch_address); 870 return sim->PushAddress(try_catch_address);
878 } 871 }
879 872
880 static void UnregisterCTryCatch() { 873 static void UnregisterCTryCatch() {
881 Simulator::current(Isolate::Current())->PopAddress(); 874 Simulator::current(Isolate::Current())->PopAddress();
882 } 875 }
883 }; 876 };
884 877
885 #endif // !defined(USE_SIMULATOR) 878 #endif // !defined(USE_SIMULATOR)
886 879
887 } } // namespace v8::internal 880 } } // namespace v8::internal
888 881
889 #endif // V8_ARM64_SIMULATOR_ARM64_H_ 882 #endif // V8_ARM64_SIMULATOR_ARM64_H_
OLDNEW
« no previous file with comments | « src/arm/simulator-arm.h ('k') | src/base/macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698