Skip to content

Commit 24fb0ff

Browse files
committed
Fixed compilation with old gcc.
1 parent 11d1cef commit 24fb0ff

File tree

1 file changed

+85
-87
lines changed

1 file changed

+85
-87
lines changed

src/njs_value.c

Lines changed: 85 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
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);
1311
static njs_int_t njs_array_property_query(njs_vm_t *vm,
1412
njs_property_query_t *pq, njs_array_t *array, uint32_t index,
1513
uint32_t atom_id);
@@ -537,91 +535,6 @@ njs_value_is_data_view(const njs_value_t *value)
537535
}
538536

539537

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-
625538
njs_inline njs_int_t
626539
njs_object_property_query(njs_vm_t *vm, njs_property_query_t *pq,
627540
njs_object_t *object, uint32_t atom_id)
@@ -748,6 +661,91 @@ njs_object_property_query(njs_vm_t *vm, njs_property_query_t *pq,
748661
}
749662

750663

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

0 commit comments

Comments
 (0)