本文整理汇总了C++中Arguments::arguments方法的典型用法代码示例。如果您正苦于以下问题:C++ Arguments::arguments方法的具体用法?C++ Arguments::arguments怎么用?C++ Arguments::arguments使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Arguments
的用法示例。
在下文中一共展示了Arguments::arguments方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: verify_call_frame
/**
* Walks the chain of objects accessible from the specified CallFrame.
*/
void GarbageCollector::verify_call_frame(CallFrame* top_call_frame,
AddressDisplacement* offset)
{
CallFrame* call_frame = top_call_frame;
while(call_frame) {
call_frame = displace(call_frame, offset);
if(call_frame->constant_scope_) {
call_frame->constant_scope_->validate();
}
if(call_frame->compiled_code) {
call_frame->compiled_code->validate();
}
if(call_frame->compiled_code) {
native_int stack_size = call_frame->compiled_code->stack_size()->to_native();
for(native_int i = 0; i < stack_size; i++) {
Object* obj = call_frame->stk[i];
obj->validate();
}
}
VariableScope* scope = call_frame->top_scope_;
if(call_frame->multiple_scopes_p() && scope && !scope->nil_p()) {
scope->validate();
}
if(BlockEnvironment* env = call_frame->block_env()) {
env->validate();
}
Arguments* args = displace(call_frame->arguments, offset);
if(!call_frame->inline_method_p() && args) {
args->recv()->validate();
args->block()->validate();
Object** ary = displace(args->arguments(), offset);
for(uint32_t i = 0; i < args->total(); i++) {
ary[i]->validate();
}
}
if(call_frame->scope && call_frame->compiled_code) {
verify_variable_scope(call_frame, displace(call_frame->scope, offset));
}
call_frame = call_frame->previous;
}
}
示例2: walk_call_frame
void GarbageCollector::walk_call_frame(CallFrame* top_call_frame) {
CallFrame* call_frame = top_call_frame;
while(call_frame) {
if(call_frame->custom_static_scope_p() &&
call_frame->static_scope_ &&
call_frame->static_scope_->reference_p()) {
call_frame->static_scope_ =
(StaticScope*)mark_object(call_frame->static_scope_);
}
if(call_frame->cm && call_frame->cm->reference_p()) {
call_frame->cm = (CompiledMethod*)mark_object(call_frame->cm);
}
if(call_frame->cm && call_frame->stk) {
native_int stack_size = call_frame->cm->stack_size()->to_native();
for(native_int i = 0; i < stack_size; i++) {
Object* obj = call_frame->stk[i];
if(obj && obj->reference_p()) {
call_frame->stk[i] = mark_object(obj);
}
}
}
if(call_frame->multiple_scopes_p() &&
call_frame->top_scope_) {
call_frame->top_scope_ = (VariableScope*)mark_object(call_frame->top_scope_);
}
if(Dispatch* msg = call_frame->dispatch()) {
msg->module = (Module*)mark_object(msg->module);
msg->method = (Executable*)mark_object(msg->method);
}
if(BlockEnvironment* env = call_frame->block_env()) {
call_frame->set_block_env((BlockEnvironment*)mark_object(env));
}
Arguments* args = call_frame->arguments;
if(!call_frame->inline_method_p() && args) {
args->set_recv(mark_object(args->recv()));
args->set_block(mark_object(args->block()));
if(Tuple* tup = args->argument_container()) {
args->update_argument_container((Tuple*)mark_object(tup));
} else {
Object** ary = args->arguments();
for(uint32_t i = 0; i < args->total(); i++) {
ary[i] = mark_object(ary[i]);
}
}
}
#ifdef ENABLE_LLVM
if(jit::RuntimeDataHolder* jd = call_frame->jit_data()) {
jd->set_mark();
ObjectMark mark(this);
jd->mark_all(0, mark);
}
if(jit::RuntimeData* rd = call_frame->runtime_data()) {
rd->method_ = (CompiledMethod*)mark_object(rd->method());
rd->name_ = (Symbol*)mark_object(rd->name());
rd->module_ = (Module*)mark_object(rd->module());
}
#endif
saw_variable_scope(call_frame, call_frame->scope);
call_frame = static_cast<CallFrame*>(call_frame->previous);
}
}
示例3: walk_call_frame
/**
* Walks the chain of objects accessible from the specified CallFrame.
*/
void GarbageCollector::walk_call_frame(CallFrame* top_call_frame,
AddressDisplacement* offset)
{
CallFrame* call_frame = top_call_frame;
while(call_frame) {
call_frame = displace(call_frame, offset);
if(call_frame->constant_scope_ &&
call_frame->constant_scope_->reference_p()) {
call_frame->constant_scope_ =
(ConstantScope*)mark_object(call_frame->constant_scope_);
}
if(call_frame->compiled_code && call_frame->compiled_code->reference_p()) {
call_frame->compiled_code = (CompiledCode*)mark_object(call_frame->compiled_code);
}
if(call_frame->compiled_code) {
native_int stack_size = call_frame->compiled_code->stack_size()->to_native();
for(native_int i = 0; i < stack_size; i++) {
Object* obj = call_frame->stk[i];
if(obj && obj->reference_p()) {
call_frame->stk[i] = mark_object(obj);
}
}
}
if(call_frame->multiple_scopes_p() && call_frame->top_scope_) {
call_frame->top_scope_ = (VariableScope*)mark_object(call_frame->top_scope_);
}
if(BlockEnvironment* env = call_frame->block_env()) {
call_frame->set_block_env((BlockEnvironment*)mark_object(env));
}
Arguments* args = displace(call_frame->arguments, offset);
if(!call_frame->inline_method_p() && args) {
args->set_recv(mark_object(args->recv()));
args->set_block(mark_object(args->block()));
if(Tuple* tup = args->argument_container()) {
args->update_argument_container((Tuple*)mark_object(tup));
} else {
Object** ary = displace(args->arguments(), offset);
for(uint32_t i = 0; i < args->total(); i++) {
ary[i] = mark_object(ary[i]);
}
}
}
if(NativeMethodFrame* nmf = call_frame->native_method_frame()) {
nmf->handles().gc_scan(this);
}
#ifdef ENABLE_LLVM
if(jit::RuntimeDataHolder* jd = call_frame->jit_data()) {
jd->set_mark();
ObjectMark mark(this);
jd->mark_all(0, mark);
}
if(jit::RuntimeData* rd = call_frame->runtime_data()) {
rd->method_ = (CompiledCode*)mark_object(rd->method());
rd->name_ = (Symbol*)mark_object(rd->name());
rd->module_ = (Module*)mark_object(rd->module());
}
#endif
if(call_frame->scope && call_frame->compiled_code) {
saw_variable_scope(call_frame, displace(call_frame->scope, offset));
}
call_frame = call_frame->previous;
}
}