Skip to content

Commit 87b07ca

Browse files
committed
Fixed compilation with old gcc.
This fixed compilation issues with gcc-4.1.
1 parent 11d1cef commit 87b07ca

File tree

2 files changed

+89
-88
lines changed

2 files changed

+89
-88
lines changed

src/njs_value.c

Lines changed: 88 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
#include <njs_main.h>
99

1010

11-
static njs_int_t njs_object_property_query(njs_vm_t *vm,
12-
njs_property_query_t *pq, njs_object_t *object, uint32_t atom_id);
11+
njs_inline njs_int_t
12+
njs_object_property_query(njs_vm_t *vm, njs_property_query_t *pq,
13+
njs_object_t *object, uint32_t atom_id);
1314
static njs_int_t njs_array_property_query(njs_vm_t *vm,
1415
njs_property_query_t *pq, njs_array_t *array, uint32_t index,
1516
uint32_t atom_id);
@@ -537,91 +538,6 @@ njs_value_is_data_view(const njs_value_t *value)
537538
}
538539

539540

540-
/*
541-
* ES5.1, 8.12.1: [[GetOwnProperty]], [[GetProperty]].
542-
* The njs_property_query() returns values
543-
* NJS_OK property has been found in object,
544-
* retval of type njs_object_prop_t * is in pq->lhq.value.
545-
* in NJS_PROPERTY_QUERY_GET
546-
* prop->type is NJS_PROPERTY or NJS_PROPERTY_HANDLER.
547-
* in NJS_PROPERTY_QUERY_SET, NJS_PROPERTY_QUERY_DELETE
548-
* prop->type is NJS_PROPERTY, NJS_PROPERTY_REF, NJS_PROPERTY_PLACE_REF,
549-
* NJS_PROPERTY_TYPED_ARRAY_REF or
550-
* NJS_PROPERTY_HANDLER.
551-
* NJS_DECLINED property was not found in object,
552-
* if pq->lhq.value != NULL it contains retval of type
553-
* njs_object_prop_t * where prop->type is NJS_WHITEOUT
554-
* NJS_ERROR exception has been thrown.
555-
*/
556-
557-
njs_int_t
558-
njs_property_query(njs_vm_t *vm, njs_property_query_t *pq, njs_value_t *value,
559-
uint32_t atom_id)
560-
{
561-
uint32_t index;
562-
njs_int_t ret;
563-
njs_object_t *obj;
564-
njs_function_t *function;
565-
566-
njs_assert(atom_id != NJS_ATOM_STRING_unknown);
567-
568-
switch (value->type) {
569-
case NJS_BOOLEAN:
570-
case NJS_NUMBER:
571-
case NJS_SYMBOL:
572-
index = njs_primitive_prototype_index(value->type);
573-
obj = njs_vm_proto(vm, index);
574-
break;
575-
576-
case NJS_STRING:
577-
if (njs_atom_is_number(atom_id)) {
578-
return njs_string_property_query(vm, pq, value,
579-
njs_atom_number(atom_id));
580-
}
581-
582-
obj = &vm->string_object;
583-
break;
584-
585-
case NJS_OBJECT:
586-
case NJS_ARRAY:
587-
case NJS_ARRAY_BUFFER:
588-
case NJS_DATA_VIEW:
589-
case NJS_TYPED_ARRAY:
590-
case NJS_REGEXP:
591-
case NJS_DATE:
592-
case NJS_PROMISE:
593-
case NJS_OBJECT_VALUE:
594-
obj = njs_object(value);
595-
break;
596-
597-
case NJS_FUNCTION:
598-
function = njs_function_value_copy(vm, value);
599-
if (njs_slow_path(function == NULL)) {
600-
return NJS_ERROR;
601-
}
602-
603-
obj = &function->object;
604-
break;
605-
606-
case NJS_UNDEFINED:
607-
case NJS_NULL:
608-
default:
609-
njs_atom_string_get(vm, atom_id, &pq->lhq.key);
610-
njs_type_error(vm, "cannot get property \"%V\" of %s", &pq->lhq.key,
611-
njs_type_string(value->type));
612-
return NJS_ERROR;
613-
}
614-
615-
ret = njs_object_property_query(vm, pq, obj, atom_id);
616-
617-
if (njs_slow_path(ret == NJS_DECLINED && obj->slots != NULL)) {
618-
return njs_external_property_query(vm, pq, value);
619-
}
620-
621-
return ret;
622-
}
623-
624-
625541
njs_inline njs_int_t
626542
njs_object_property_query(njs_vm_t *vm, njs_property_query_t *pq,
627543
njs_object_t *object, uint32_t atom_id)
@@ -748,6 +664,91 @@ njs_object_property_query(njs_vm_t *vm, njs_property_query_t *pq,
748664
}
749665

750666

667+
/*
668+
* ES5.1, 8.12.1: [[GetOwnProperty]], [[GetProperty]].
669+
* The njs_property_query() returns values
670+
* NJS_OK property has been found in object,
671+
* retval of type njs_object_prop_t * is in pq->lhq.value.
672+
* in NJS_PROPERTY_QUERY_GET
673+
* prop->type is NJS_PROPERTY or NJS_PROPERTY_HANDLER.
674+
* in NJS_PROPERTY_QUERY_SET, NJS_PROPERTY_QUERY_DELETE
675+
* prop->type is NJS_PROPERTY, NJS_PROPERTY_REF, NJS_PROPERTY_PLACE_REF,
676+
* NJS_PROPERTY_TYPED_ARRAY_REF or
677+
* NJS_PROPERTY_HANDLER.
678+
* NJS_DECLINED property was not found in object,
679+
* if pq->lhq.value != NULL it contains retval of type
680+
* njs_object_prop_t * where prop->type is NJS_WHITEOUT
681+
* NJS_ERROR exception has been thrown.
682+
*/
683+
684+
njs_int_t
685+
njs_property_query(njs_vm_t *vm, njs_property_query_t *pq, njs_value_t *value,
686+
uint32_t atom_id)
687+
{
688+
uint32_t index;
689+
njs_int_t ret;
690+
njs_object_t *obj;
691+
njs_function_t *function;
692+
693+
njs_assert(atom_id != NJS_ATOM_STRING_unknown);
694+
695+
switch (value->type) {
696+
case NJS_BOOLEAN:
697+
case NJS_NUMBER:
698+
case NJS_SYMBOL:
699+
index = njs_primitive_prototype_index(value->type);
700+
obj = njs_vm_proto(vm, index);
701+
break;
702+
703+
case NJS_STRING:
704+
if (njs_atom_is_number(atom_id)) {
705+
return njs_string_property_query(vm, pq, value,
706+
njs_atom_number(atom_id));
707+
}
708+
709+
obj = &vm->string_object;
710+
break;
711+
712+
case NJS_OBJECT:
713+
case NJS_ARRAY:
714+
case NJS_ARRAY_BUFFER:
715+
case NJS_DATA_VIEW:
716+
case NJS_TYPED_ARRAY:
717+
case NJS_REGEXP:
718+
case NJS_DATE:
719+
case NJS_PROMISE:
720+
case NJS_OBJECT_VALUE:
721+
obj = njs_object(value);
722+
break;
723+
724+
case NJS_FUNCTION:
725+
function = njs_function_value_copy(vm, value);
726+
if (njs_slow_path(function == NULL)) {
727+
return NJS_ERROR;
728+
}
729+
730+
obj = &function->object;
731+
break;
732+
733+
case NJS_UNDEFINED:
734+
case NJS_NULL:
735+
default:
736+
njs_atom_string_get(vm, atom_id, &pq->lhq.key);
737+
njs_type_error(vm, "cannot get property \"%V\" of %s", &pq->lhq.key,
738+
njs_type_string(value->type));
739+
return NJS_ERROR;
740+
}
741+
742+
ret = njs_object_property_query(vm, pq, obj, atom_id);
743+
744+
if (njs_slow_path(ret == NJS_DECLINED && obj->slots != NULL)) {
745+
return njs_external_property_query(vm, pq, value);
746+
}
747+
748+
return ret;
749+
}
750+
751+
751752
static njs_int_t
752753
njs_array_property_query(njs_vm_t *vm, njs_property_query_t *pq,
753754
njs_array_t *array, uint32_t index, uint32_t atom_id)

src/njs_vmcode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2591,7 +2591,7 @@ njs_function_frame_create(njs_vm_t *vm, njs_value_t *value,
25912591
}
25922592

25932593

2594-
inline njs_object_t *
2594+
njs_object_t *
25952595
njs_function_new_object(njs_vm_t *vm, njs_value_t *constructor)
25962596
{
25972597
njs_value_t proto, bound;

0 commit comments

Comments
 (0)