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

Side by Side Diff: src/arguments.h

Issue 242050: Changed structure of accessor arguments passing to allow accessor (Closed)
Patch Set: Tuned Created 11 years, 2 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
« no previous file with comments | « src/api.cc ('k') | src/handles.cc » ('j') | src/objects.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 27 matching lines...) Expand all
38 // (no. of parameters, and the parameter pointer) passed so 38 // (no. of parameters, and the parameter pointer) passed so
39 // that inside the C++ function, the parameters passed can 39 // that inside the C++ function, the parameters passed can
40 // be accessed conveniently: 40 // be accessed conveniently:
41 // 41 //
42 // Object* Runtime_function(Arguments args) { 42 // Object* Runtime_function(Arguments args) {
43 // ... use args[i] here ... 43 // ... use args[i] here ...
44 // } 44 // }
45 45
46 class Arguments BASE_EMBEDDED { 46 class Arguments BASE_EMBEDDED {
47 public: 47 public:
48 Arguments(int length, Object** arguments)
49 : length_(length), arguments_(arguments) { }
50
48 Object*& operator[] (int index) { 51 Object*& operator[] (int index) {
49 ASSERT(0 <= index && index < length_); 52 ASSERT(0 <= index && index < length_);
50 return arguments_[-index]; 53 return arguments_[-index];
51 } 54 }
52 55
53 template <class S> Handle<S> at(int index) { 56 template <class S> Handle<S> at(int index) {
54 Object** value = &((*this)[index]); 57 Object** value = &((*this)[index]);
55 // This cast checks that the object we're accessing does indeed have the 58 // This cast checks that the object we're accessing does indeed have the
56 // expected type. 59 // expected type.
57 S::cast(*value); 60 S::cast(*value);
58 return Handle<S>(reinterpret_cast<S**>(value)); 61 return Handle<S>(reinterpret_cast<S**>(value));
59 } 62 }
60 63
61 // Get the total number of arguments including the receiver. 64 // Get the total number of arguments including the receiver.
62 int length() const { return length_; } 65 int length() const { return length_; }
66
iposva 2009/09/30 22:19:05 Presubmit Check: Fail
67 Object** arguments() { return arguments_; }
63 68
64 private: 69 private:
65 int length_; 70 int length_;
66 Object** arguments_; 71 Object** arguments_;
67 }; 72 };
68 73
74
75 // Cursom arguments replicate a small segment of stack that can be
iposva 2009/09/30 22:19:05 Cursom -> Custom
76 // accessed through an Arguments object the same way the actual stack
77 // can.
78 class CustomArguments : public Relocatable {
79 public:
iposva 2009/09/30 22:19:05 Presubmit Check: Fail
80 inline CustomArguments(Object *data,
81 JSObject *self,
82 JSObject *holder) {
83 values_[3] = self;
84 values_[2] = holder;
85 values_[1] = Smi::FromInt(0);
86 values_[0] = data;
87 }
88 void IterateInstance(ObjectVisitor* v);
89 Object** end() { return values_ + 3; }
90 private:
iposva 2009/09/30 22:19:05 Presubmit Check: Fail
91 Object* values_[4];
92 };
93
94
69 } } // namespace v8::internal 95 } } // namespace v8::internal
70 96
71 #endif // V8_ARGUMENTS_H_ 97 #endif // V8_ARGUMENTS_H_
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/handles.cc » ('j') | src/objects.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698